コード例 #1
0
        /// <summary>
        /// Return default action for event.
        /// </summary>
        /// <param name="workflowEvent"></param>
        /// <returns></returns>
        protected WorkflowAction DefaultAction(WorkflowEvent workflowEvent)
        {
            Ensure.NotNull(workflowEvent, "workflowEvent");
            IWorkflowDefaultActions defaultActions = this;

            return(workflowEvent.DefaultAction(defaultActions));
        }
コード例 #2
0
        public WorkflowDecision RecordTimedout(WorkflowEvent timeoutEvent)
        {
            var decision = _signalState.RecordTimedout(timeoutEvent.EventId);

            SignalTimedout?.Invoke(this, this);
            return(decision);
        }
コード例 #3
0
        private WorkflowAction Handle(EventName eventName, WorkflowEvent workflowEvent)
        {
            var workflowEventMethod = _workflowEventMethods.FindFor(eventName);

            return(workflowEventMethod == null
                ? workflowEvent.DefaultAction(this)
                : workflowEventMethod.Invoke(workflowEvent));
        }
コード例 #4
0
        public WorkflowAction Invoke(WorkflowEvent argument)
        {
            var parameters = _methodInfo.BuildParametersFrom(argument, default(CancellationToken));

            try
            {
                var returnType = _methodInfo.Invoke(_targetInstance, parameters);
                return(returnType == null ? WorkflowAction.Empty : (WorkflowAction)returnType);
            }
            catch (TargetInvocationException ex)
            {
                if (ex.InnerException != null)
                {
                    throw ex.InnerException;
                }
                throw;
            }
        }
コード例 #5
0
 void IWorkflow.SetCurrentExecutingEvent(WorkflowEvent workflowEvent)
 {
     _currentExecutingEvent = workflowEvent;
 }
コード例 #6
0
ファイル: Workflow.cs プロジェクト: gurmitteotia/guflow
        WaitForSignalsEvent IWorkflow.TimedoutEventTriggerBy(WorkflowEvent workflowEvent)
        {
            IWorkflow workflow = this;

            return(workflow.WaitForSignalsEvents.FirstOrDefault(workflowEvent.EventId));
        }
コード例 #7
0
ファイル: Workflow.cs プロジェクト: gurmitteotia/guflow
 void IWorkflow.PushNewExecutingEvent(WorkflowEvent @event)
 {
     _executingEvents.Push(@event);
 }