protected override void Send(TrackingRecord record) { var activityTrackingRecord = record as ActivityTrackingRecord; if (activityTrackingRecord == null) return; var type = GetWorkflowType(_parameters.WorkflowType); if (type.StatesToIgnoreInTracking.Count(s => s.Equals(activityTrackingRecord.QualifiedName,StringComparison.InvariantCultureIgnoreCase)) > 0) return; using (var context = new Budget2DataContext(ConfigurationManager.ConnectionStrings["default"].ConnectionString)) { WorkflowTrackingHistory item = new WorkflowTrackingHistory() { Id = Guid.NewGuid(), TransitionTime = DateTime.Now, StateName = activityTrackingRecord.QualifiedName, WorkflowId = _parameters.InstanceId, WorkflowTypeId = type.Id }; context.WorkflowTrackingHistories.InsertOnSubmit(item); context.SubmitChanges(); } }
// Send() is called by Tracking runtime to send various tracking records protected override void Send(TrackingRecord record) { //filter on record type if (record is UserTrackingRecord) { WriteUserTrackingRecord((UserTrackingRecord)record); } }
///<summary> ///When implemented in a derived class, sends a <see cref="T:System.Workflow.Runtime.Tracking.TrackingRecord"></see> on the <see cref="T:System.Workflow.Runtime.Tracking.TrackingChannel"></see>. ///</summary> /// ///<param name="record">The <see cref="T:System.Workflow.Runtime.Tracking.TrackingRecord"></see> to send.</param> protected override void Send(TrackingRecord record) { TraceHelper.Trace(); try { // build a serialisable representation of the tracking record // and batch it up ready for persistence during commit ActivityTrackingRecord activityTrackingRecord = record as ActivityTrackingRecord; if (activityTrackingRecord != null) { WorkflowEnvironment.WorkBatch.Add(this, buildSerialisableActivityTrackingRecord( activityTrackingRecord)); return; } UserTrackingRecord userTrackingRecord = record as UserTrackingRecord; if (userTrackingRecord != null) { WorkflowEnvironment.WorkBatch.Add(this, buildSerialisableUserTrackingRecord( userTrackingRecord)); return; } WorkflowTrackingRecord workflowTrackingRecord = record as WorkflowTrackingRecord; if (workflowTrackingRecord != null) { if (workflowTrackingRecord.TrackingWorkflowEvent == TrackingWorkflowEvent.Changed) { WorkflowEnvironment.WorkBatch.Add(this, buildSerialisableWorkflowChangeTrackingRecord( workflowTrackingRecord)); } else { WorkflowEnvironment.WorkBatch.Add(this, buildSerialisableWorkflowTrackingRecord( workflowTrackingRecord)); } return; } } catch (Exception e) { string errorMessage = RM.Get_Error_TrackingChannelException(e.ToString()); TraceHelper.Trace(errorMessage); throw new TrackingException(errorMessage, e); } }
/// <summary> /// Receives tracking events. Instance terminated events are written to the event log. /// </summary> protected override void Send(TrackingRecord record) { if (record is WorkflowTrackingRecord) { WriteWorkflowTrackingRecord((WorkflowTrackingRecord)record); } if (record is ActivityTrackingRecord) { WriteActivityTrackingRecord((ActivityTrackingRecord)record); } if (record is UserTrackingRecord) { WriteUserTrackingRecord((UserTrackingRecord)record); } }
protected internal abstract void Send(TrackingRecord record);
public InteropTrackingRecord(string activityDisplayName, System.Workflow.Runtime.Tracking.TrackingRecord v1TrackingRecord) : base(activityDisplayName) { this.TrackingRecord = v1TrackingRecord; base.Data.Add("TrackingRecord", v1TrackingRecord); }
/// <summary> /// Receives tracking events. Instance terminated events are written to the event log. /// </summary> protected override void Send(TrackingRecord record) { WorkflowTrackingRecord instanceTrackingRecord = record as WorkflowTrackingRecord; if ((null == instanceTrackingRecord) || (TrackingWorkflowEvent.Terminated != instanceTrackingRecord.TrackingWorkflowEvent)) return; // Create an EventLog instance and assign its source. EventLog log = new EventLog(); log.Source = sourceValue; // Write an informational entry to the event log. TrackingWorkflowTerminatedEventArgs terminatedEventArgs = instanceTrackingRecord.EventArgs as TrackingWorkflowTerminatedEventArgs; StringBuilder message = new StringBuilder(512); message.AppendLine(string.Format(System.Globalization.CultureInfo.InvariantCulture, "Workflow instance {0} has been terminated.", parametersValue.InstanceId.ToString())); message.AppendLine(); if (null != terminatedEventArgs.Exception) message.AppendLine(terminatedEventArgs.Exception.ToString()); log.WriteEntry(message.ToString(), EventLogEntryType.Warning); }