protected override void Execute(CodeActivityContext context) { // Create a Lead class and populate it with the input arguments Lead l = new Lead(); l.ContactName = ContactName.Get(context); l.ContactPhone = ContactPhone.Get(context); l.Interests = Interests.Get(context); l.Comments = Notes.Get(context); l.WorkflowID = context.WorkflowInstanceId; l.Status = "Open"; // Add this to the work queue to be persisted later PersistLead persist = context.GetExtension<PersistLead>(); persist.AddLead(l, "Insert"); // Store the request in the OutArgument Lead.Set(context, l); // Add a custom track record CustomTrackingRecord userRecord = new CustomTrackingRecord("New Lead") { Data = { {"Name", l.ContactName}, {"Phone", l.ContactPhone} } }; // Emit the custom tracking record context.Track(userRecord); }
protected override void OnCustomTracking(CustomTrackingRecord record, TimeSpan timeout) { StringBuilder data = new StringBuilder(); foreach (var key in record.Data.Keys) { data.AppendFormat("\"{0}\"={{{1}}}", key, record.Data[key]); } Log.InfoWrite("Tracking::CustomTracking - InstanceId:{0}, Name:{1}, EventTime:{2}, Record#:{3}, Level:{4}, Activity:{5}, Data:[{6}]", record.InstanceId, record.Name, record.EventTime, record.RecordNumber, record.Level, record.Activity.Name, data.ToString()); }
private void ProcessCustomTrackingRecord(CustomTrackingRecord record) { this.Tracer.WriteMessage(string.Format(CultureInfo.InvariantCulture, "\n\tUser Data:", new object[0])); foreach (string key in record.Data.Keys) { object[] item = new object[2]; item[0] = key; item[1] = record.Data[key]; this.Tracer.WriteMessage(string.Format(CultureInfo.InvariantCulture, " \t\t {0} : {1}", item)); } }
protected CustomTrackingRecord(CustomTrackingRecord record) : base(record) { this.Name = record.Name; this.Activity = record.Activity; if ((record.data != null) && (record.data.Count > 0)) { foreach (KeyValuePair<string, object> pair in record.data) { this.Data.Add(pair); } } }
protected override void Execute(CodeActivityContext context) { DateTime startLookup = DateTime.Now; string symbol = StockSymbol.Get(context); double price = knownSymbols[symbol]; Value.Set(context, price); DateTime endLookup = DateTime.Now; TimeSpan lookupTime = endLookup - startLookup; CustomTrackingRecord userRecord = new CustomTrackingRecord("QuoteLookupEvent"); userRecord.Data.Add("LookupTime", lookupTime.TotalMilliseconds); userRecord.Data.Add("Units", "Milliseconds"); context.Track(userRecord); }
protected override void Execute(CodeActivityContext context) { // create and set the record data CustomTrackingRecord customRecord = new CustomTrackingRecord("ActionExecuted"); customRecord.Data.Add("HiringRequestId", this.HiringRequestId.Get(context)); customRecord.Data.Add("State", this.State.Get(context)); customRecord.Data.Add("Date", DateTime.Now); customRecord.Data.Add("Action", this.Action.Get(context)); customRecord.Data.Add("Comment", this.Comment.Get(context)); if (this.Employee.Get(context) != null) { customRecord.Data.Add("EmployeeId", this.Employee.Get(context).Id); customRecord.Data.Add("EmployeeName", this.Employee.Get(context).Name); } // emit the record context.Track(customRecord); }
/// <summary> /// When implemented in a derived class, used to synchronously process the tracking record. /// </summary> /// <param name="record"> /// The generated tracking record. /// </param> /// <param name="timeout"> /// The time period after which the provider aborts the attempt. /// </param> protected virtual void Track(CustomTrackingRecord record, TimeSpan timeout) { // Do nothing }
private void TrackCustomRecord(CustomTrackingRecord record) { switch (record.Level) { case TraceLevel.Error: if (!EtwTrackingParticipantTrackRecords.CustomTrackingRecordErrorIsEnabled(this.diagnosticTrace) || EtwTrackingParticipantTrackRecords.CustomTrackingRecordError(this.diagnosticTrace, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, this.PrepareDictionary(record.Data), record.HasAnnotations ? PrepareAnnotations(record.Annotations) : "<items />", (this.TrackingProfile == null) ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference)) { break; } if (!EtwTrackingParticipantTrackRecords.CustomTrackingRecordError(this.diagnosticTrace, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, "<items>...</items>", "<items>...</items>", (this.TrackingProfile == null) ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference)) { this.TraceTrackingRecordDropped(record.RecordNumber); return; } this.TraceTrackingRecordTruncated(record.RecordNumber); return; case TraceLevel.Warning: if (!EtwTrackingParticipantTrackRecords.CustomTrackingRecordWarningIsEnabled(this.diagnosticTrace) || EtwTrackingParticipantTrackRecords.CustomTrackingRecordWarning(this.diagnosticTrace, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, this.PrepareDictionary(record.Data), record.HasAnnotations ? PrepareAnnotations(record.Annotations) : "<items />", (this.TrackingProfile == null) ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference)) { break; } if (!EtwTrackingParticipantTrackRecords.CustomTrackingRecordWarning(this.diagnosticTrace, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, "<items>...</items>", "<items>...</items>", (this.TrackingProfile == null) ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference)) { this.TraceTrackingRecordDropped(record.RecordNumber); return; } this.TraceTrackingRecordTruncated(record.RecordNumber); return; default: if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordInfoIsEnabled(this.diagnosticTrace) && !EtwTrackingParticipantTrackRecords.CustomTrackingRecordInfo(this.diagnosticTrace, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, this.PrepareDictionary(record.Data), record.HasAnnotations ? PrepareAnnotations(record.Annotations) : "<items />", (this.TrackingProfile == null) ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference)) { if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordInfo(this.diagnosticTrace, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, "<items>...</items>", "<items>...</items>", (this.TrackingProfile == null) ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference)) { this.TraceTrackingRecordTruncated(record.RecordNumber); return; } this.TraceTrackingRecordDropped(record.RecordNumber); } break; } }
protected CustomTrackingRecord (CustomTrackingRecord record) : base (record) { Data = new Dictionary<string, Object> (); }
/// <summary> /// Initializes a new instance of the <see cref="TestCustomTrackingRecord"/> class. /// </summary> /// <param name="record"> /// The record. /// </param> protected TestCustomTrackingRecord(CustomTrackingRecord record) : base(record) { }
CustomTrackingQuery Match(CustomTrackingRecord customRecord) { CustomTrackingQuery query = null; if (this.customTrackingQuerySubscriptions != null) { for (int i = 0; i < this.customTrackingQuerySubscriptions.Count; i++) { //check specific and then generic if (string.CompareOrdinal(this.customTrackingQuerySubscriptions[i].Name, customRecord.Name) == 0) { if (CheckSubscription(this.customTrackingQuerySubscriptions[i].ActivityName, customRecord.Activity.Name)) { query = this.customTrackingQuerySubscriptions[i]; break; } } else if (string.CompareOrdinal(this.customTrackingQuerySubscriptions[i].Name, "*") == 0) { if (CheckSubscription(this.customTrackingQuerySubscriptions[i].ActivityName, customRecord.Activity.Name)) { query = this.customTrackingQuerySubscriptions[i]; break; } } } } return query; }
private CustomTrackingQuery Match(CustomTrackingRecord customRecord) { if (this.customTrackingQuerySubscriptions != null) { for (int i = 0; i < this.customTrackingQuerySubscriptions.Count; i++) { if (string.CompareOrdinal(this.customTrackingQuerySubscriptions[i].Name, customRecord.Name) == 0) { if (CheckSubscription(this.customTrackingQuerySubscriptions[i].ActivityName, customRecord.Activity.Name)) { return this.customTrackingQuerySubscriptions[i]; } } else if ((string.CompareOrdinal(this.customTrackingQuerySubscriptions[i].Name, "*") == 0) && CheckSubscription(this.customTrackingQuerySubscriptions[i].ActivityName, customRecord.Activity.Name)) { return this.customTrackingQuerySubscriptions[i]; } } } return null; }
void TrackCustomRecord(CustomTrackingRecord record) { switch (record.Level) { case TraceLevel.Error: if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordErrorIsEnabled(this.diagnosticTrace)) { if (!EtwTrackingParticipantTrackRecords.CustomTrackingRecordError(this.diagnosticTrace, record.EventTraceActivity, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, PrepareDictionary(record.Data), record.HasAnnotations ? PrepareAnnotations(record.Annotations) : emptyItemsTag, this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference)) { if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordError(this.diagnosticTrace, record.EventTraceActivity, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, truncatedItemsTag, truncatedItemsTag, this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference)) { TraceTrackingRecordTruncated(record.RecordNumber); } else { TraceTrackingRecordDropped(record.RecordNumber); } } } break; case TraceLevel.Warning: if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordWarningIsEnabled(this.diagnosticTrace)) { if (!EtwTrackingParticipantTrackRecords.CustomTrackingRecordWarning(this.diagnosticTrace, record.EventTraceActivity, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, PrepareDictionary(record.Data), record.HasAnnotations ? PrepareAnnotations(record.Annotations) : emptyItemsTag, this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference)) { if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordWarning(this.diagnosticTrace, record.EventTraceActivity, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, truncatedItemsTag, truncatedItemsTag, this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference)) { TraceTrackingRecordTruncated(record.RecordNumber); } else { TraceTrackingRecordDropped(record.RecordNumber); } } } break; default: if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordInfoIsEnabled(this.diagnosticTrace)) { if (!EtwTrackingParticipantTrackRecords.CustomTrackingRecordInfo(this.diagnosticTrace, record.EventTraceActivity, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, PrepareDictionary(record.Data), record.HasAnnotations ? PrepareAnnotations(record.Annotations) : emptyItemsTag, this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference)) { if (EtwTrackingParticipantTrackRecords.CustomTrackingRecordInfo(this.diagnosticTrace, record.EventTraceActivity, record.InstanceId, record.RecordNumber, record.EventTime.ToFileTime(), record.Name, record.Activity.Name, record.Activity.Id, record.Activity.InstanceId, record.Activity.TypeName, truncatedItemsTag, truncatedItemsTag, this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference)) { TraceTrackingRecordTruncated(record.RecordNumber); } else { TraceTrackingRecordDropped(record.RecordNumber); } } } break; } }
protected override void Execute(CodeActivityContext context) { string text = context.GetValue(this.Text); switch (Level) { case System.Diagnostics.TraceLevel.Error: Trace.TraceError(text); break; case System.Diagnostics.TraceLevel.Info: Trace.TraceInformation(text); break; case System.Diagnostics.TraceLevel.Verbose: Trace.WriteLine(text, Category); break; case System.Diagnostics.TraceLevel.Warning: Trace.TraceWarning(text); break; } if (Level != System.Diagnostics.TraceLevel.Off) { var trackRecord = new CustomTrackingRecord(Category, Level); trackRecord.Data.Add("Text", text); trackRecord.Data.Add("Category", Category); context.Track(trackRecord); } }
protected virtual void OnCustomTracking(CustomTrackingRecord record, TimeSpan timeout) { }
/// <summary> /// The execute. /// </summary> /// <param name="context"> /// The context. /// </param> protected override void Execute(CodeActivityContext context) { var text = context.GetValue(this.Text); // Debug.WriteLine(text); switch (this.Level) { case TraceLevel.Error: Trace.TraceError(text); break; case TraceLevel.Info: Trace.TraceInformation(text); break; case TraceLevel.Verbose: WorkflowTrace.Information(text, this.Category); break; case TraceLevel.Warning: Trace.TraceWarning(text); break; } if (this.Level != TraceLevel.Off) { var trackRecord = new CustomTrackingRecord(this.Category, this.Level); trackRecord.Data.Add("Text", text); trackRecord.Data.Add("Category", this.Category); context.Track(trackRecord); } }
protected override void Execute(CodeActivityContext context) { Console.WriteLine("In CustomActivity.Execute"); CustomTrackingRecord customRecord = new CustomTrackingRecord("OrderIn") { Data = { {"OrderId", 200}, {"OrderDate", "20 Aug 2001"} } }; // Emit CustomTrackingRecord context.Track(customRecord); }
/// <summary> /// Process the custom tracking record. This record will contain the persistence detail. /// </summary> /// <param name="record">Record representing custom tracking record.</param> private void ProcessCustomTrackingRecord(CustomTrackingRecord record) { Tracer.WriteMessage(String.Format(CultureInfo.InvariantCulture, "\n\tUser Data:")); if (_debugger != null && record.Data != null) { // Get breakpoint info if available. object value; string bp = null; if (record.Data.TryGetValue("DebugSequencePoint", out value)) { bp = value as string; record.Data.Remove("DebugSequencePoint"); } // Update debugger variables. _debugger.UpdateVariables(record.Data); // Pass breakpoint info to debugger, which will optionally stop WF activity execution here. if (!string.IsNullOrEmpty(bp)) { try { string[] symbols = bp.Trim('\'', '\"').Split(':'); ActivityPosition debuggerBP = new ActivityPosition( symbols[2], // WF Name Convert.ToInt32(symbols[0], CultureInfo.InvariantCulture), // Line number Convert.ToInt32(symbols[1], CultureInfo.InvariantCulture)); // Col number // Debugger blocking call if breakpoint hit or debugger stepping is active. _debugger.DebuggerCheck(debuggerBP); } catch (FormatException) { } catch (OverflowException) { } } } foreach (string data in record.Data.Keys) { Tracer.WriteMessage(String.Format(CultureInfo.InvariantCulture, " \t\t {0} : {1}", data, record.Data[data])); } }