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);
     }
 }
Beispiel #3
0
        ///<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);
 protected internal abstract void Send(TrackingRecord record);
Beispiel #7
0
 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);
            }