private static void FireEvents(List <SchedulerLockGuardInfo> eventList, WorkflowExecutor workflowExec)
        {
            if (!workflowExec.IsInstanceValid && ((workflowExec.WorkflowStatus == WorkflowStatus.Completed) || (workflowExec.WorkflowStatus == WorkflowStatus.Terminated)))
            {
                workflowExec.WorkflowInstance.DeadWorkflow = workflowExec;
            }
            for (int i = 0; i < eventList.Count; i++)
            {
                SchedulerLockGuardInfo info      = eventList[i];
                WorkflowEventInternal  eventType = info.EventType;
                if (eventType != WorkflowEventInternal.Suspended)
                {
                    if (eventType == WorkflowEventInternal.Terminated)
                    {
                        goto Label_0057;
                    }
                    goto Label_008A;
                }
                workflowExec.FireWorkflowSuspended((string)info.EventInfo);
                continue;
Label_0057:
                if (info.EventInfo is Exception)
                {
                    workflowExec.FireWorkflowTerminated((Exception)info.EventInfo);
                }
                else
                {
                    workflowExec.FireWorkflowTerminated((string)info.EventInfo);
                }
                continue;
Label_008A:
                workflowExec.FireWorkflowExecutionEvent(info.Sender, info.EventType);
            }
        }
        private void OnInstanceEvent(object sender, WorkflowExecutor.WorkflowExecutionEventArgs e)
        {
            WorkflowEventInternal eventType = e.EventType;

            if (eventType <= WorkflowEventInternal.Unloaded)
            {
                if (eventType != WorkflowEventInternal.Completed)
                {
                    if (eventType == WorkflowEventInternal.Unloaded)
                    {
                        this.InstanceUnloaded(sender, new WorkflowEventArgs(((WorkflowExecutor)sender).WorkflowInstance));
                    }
                    return;
                }
            }
            else
            {
                switch (eventType)
                {
                case WorkflowEventInternal.Changed:
                    this.OnWorkflowChanged(sender, e);
                    return;

                case WorkflowEventInternal.HandlerInvoking:
                    this.OnHandlerInvoking(sender, e);
                    return;

                case WorkflowEventInternal.HandlerInvoked:
                    this.OnHandlerInvoked(sender, e);
                    return;

                case WorkflowEventInternal.ActivityExecuting:
                    this.OnActivityExecuting(sender, (WorkflowExecutor.ActivityExecutingEventArgs)e);
                    return;

                case WorkflowEventInternal.ActivityStatusChange:
                    this.OnActivityStatusChanged(sender, (WorkflowExecutor.ActivityStatusChangeEventArgs)e);
                    return;

                case WorkflowEventInternal.Terminated:
                    this.InstanceTerminated(sender, new WorkflowEventArgs(((WorkflowExecutor)sender).WorkflowInstance));
                    return;
                }
                return;
            }
            this.InstanceCompleted(sender, new WorkflowEventArgs(((WorkflowExecutor)sender).WorkflowInstance));
        }
Example #3
0
 internal SchedulerLockGuardInfo(Object _sender, WorkflowEventInternal _eventType, object _eventInfo)
     : this(_sender, _eventType)
 {
     eventInfo = _eventInfo;
 }
Example #4
0
 internal SchedulerLockGuardInfo(Object _sender, WorkflowEventInternal _eventType)
 {
     sender = _sender;
     eventType = _eventType;
     eventInfo = null;
 }
Example #5
0
 internal SchedulerLockGuardInfo(object _sender, WorkflowEventInternal _eventType, object _eventInfo) : this(_sender, _eventType)
 {
     this.eventInfo = _eventInfo;
 }
Example #6
0
 internal SchedulerLockGuardInfo(object _sender, WorkflowEventInternal _eventType)
 {
     this.sender    = _sender;
     this.eventType = _eventType;
     this.eventInfo = null;
 }
Example #7
0
 internal SchedulerLockGuardInfo(Object _sender, WorkflowEventInternal _eventType)
 {
     sender    = _sender;
     eventType = _eventType;
     eventInfo = null;
 }
Example #8
0
 private void FireEventAfterSchedulerLockDrop(WorkflowEventInternal workflowEventInternal)
 {
     eventsToFireList.Add(new SchedulerLockGuardInfo(this, workflowEventInternal));
 }
Example #9
0
 internal DynamicUpdateEventArgs(IList<WorkflowChangeAction> changeActions, WorkflowEventInternal eventType)
 {
     _changeActions = changeActions;
     _eventType = eventType;
 }
Example #10
0
        internal void FireWorkflowHandlerInvokingEvent(object sender, WorkflowEventInternal eventType, Delegate delegateHandler)
        {
            if (null == sender)
                sender = this;

            EventHandler<WorkflowExecutionEventArgs> localWorkflowExecutionEvent = this._workflowExecutionEvent;
            if (null != localWorkflowExecutionEvent)
                localWorkflowExecutionEvent(sender, new WorkflowHandlerInvokingEventArgs(eventType, delegateHandler));
        }
Example #11
0
 internal WorkflowHandlerInvokingEventArgs(WorkflowEventInternal eventType, Delegate delegateHandler)
     : base(eventType)
 {
     _delegateHandler = delegateHandler;
 }
Example #12
0
 internal WorkflowExecutionEventArgs(WorkflowEventInternal eventType)
 {
     _eventType = eventType;
 }
 internal void FireWorkflowHandlerInvokingEvent(object sender, WorkflowEventInternal eventType, Delegate delegateHandler)
 {
     if (sender == null)
     {
         sender = this;
     }
     EventHandler<WorkflowExecutionEventArgs> handler = this._workflowExecutionEvent;
     if (handler != null)
     {
         handler(sender, new WorkflowHandlerInvokingEventArgs(eventType, delegateHandler));
     }
 }
 internal void FireWorkflowExecutionEvent(object sender, WorkflowEventInternal eventType)
 {
     if (sender == null)
     {
         sender = this;
     }
     EventHandler<WorkflowExecutionEventArgs> handler = this._workflowExecutionEvent;
     if (handler != null)
     {
         handler(sender, new WorkflowExecutionEventArgs(eventType));
     }
 }
 internal SchedulerLockGuardInfo(object _sender, WorkflowEventInternal _eventType)
 {
     this.sender = _sender;
     this.eventType = _eventType;
     this.eventInfo = null;
 }