private void NotifyChannels(TrackingWorkflowEvent evt, WorkflowExecutor.WorkflowExecutionEventArgs e, WorkflowExecutor exec) { DateTime utcNow = DateTime.UtcNow; int nextEventOrderId = this._broker.GetNextEventOrderId(); foreach (TrackingChannelWrapper wrapper in this._channels) { WorkflowExecutor.WorkflowExecutionTerminatingEventArgs args2; WorkflowTrackingRecord record; EventArgs eventArgs = null; switch (evt) { case TrackingWorkflowEvent.Exception: { WorkflowExecutor.WorkflowExecutionExceptionEventArgs args3 = (WorkflowExecutor.WorkflowExecutionExceptionEventArgs) e; eventArgs = new TrackingWorkflowExceptionEventArgs(args3.Exception, args3.CurrentPath, args3.OriginalPath, args3.ContextGuid, args3.ParentContextGuid); goto Label_00BC; } case TrackingWorkflowEvent.Terminated: args2 = (WorkflowExecutor.WorkflowExecutionTerminatingEventArgs) e; if (args2.Exception == null) { break; } eventArgs = new TrackingWorkflowTerminatedEventArgs(args2.Exception); goto Label_00BC; case TrackingWorkflowEvent.Suspended: eventArgs = new TrackingWorkflowSuspendedEventArgs(((WorkflowExecutor.WorkflowExecutionSuspendingEventArgs) e).Error); goto Label_00BC; default: goto Label_00BC; } eventArgs = new TrackingWorkflowTerminatedEventArgs(args2.Error); Label_00BC: record = new WorkflowTrackingRecord(evt, utcNow, nextEventOrderId, eventArgs); if (wrapper.GetTrackingProfile(exec).TryTrackInstanceEvent(evt, record)) { wrapper.TrackingChannel.Send(record); } } }
static void WriteExceptionEventArgs(string eventDescription, TrackingWorkflowExceptionEventArgs exceptionEventArgs, DateTime eventDataTime) { Console.WriteLine("\nException Event Arguments Read From Tracking Database:\n"); Console.WriteLine("EventDataTime: " + eventDataTime.ToString()); Console.WriteLine("EventDescription: " + eventDescription); if (null != exceptionEventArgs.Exception) { Console.WriteLine("ExceptionEventArgs Exception Message: " + exceptionEventArgs.Exception.Message.ToString()); } Console.WriteLine("ExceptionEventArgs Original Activity Path: " + exceptionEventArgs.OriginalActivityPath.ToString()); }