예제 #1
0
        /// <summary>
        /// Continue the scheduling the of child items. All child items will be scheduled as per Deflow algorithm.
        /// </summary>
        /// <param name="workflowItemEvent"></param>
        /// <returns></returns>
        protected WorkflowAction Continue(WorkflowItemEvent workflowItemEvent)
        {
            Ensure.NotNull(workflowItemEvent, "workflowItemEvent");

            var workfowItem = _allWorkflowItems.WorkflowItemFor(workflowItemEvent);

            return(WorkflowAction.ContinueWorkflow(workfowItem));
        }
예제 #2
0
 public override WorkflowAction NextAction(WorkflowItem workflowItem)
 {
     if (_data.NextAction == SignalNextAction.Continue)
     {
         return(WorkflowAction.ContinueWorkflow(workflowItem));
     }
     return(WorkflowAction.Schedule(workflowItem));
 }
예제 #3
0
        public virtual WorkflowAction Fired(TimerFiredEvent timerFiredEvent)
        {
            if (timerFiredEvent.TimerType == TimerType.Reschedule)
            {
                ITimer timer = RescheduleTimer;
                return(timer.Fired(timerFiredEvent));
            }
            if (timerFiredEvent.TimerType == TimerType.SignalTimer)
            {
                var waitForSignalEvent = WaitForSignalsEvent(timerFiredEvent.SignalTriggerEventId);
                if (!waitForSignalEvent.IsExpectingSignals)
                {
                    return(WorkflowAction.Empty);
                }

                var signalTimedoutDecision = waitForSignalEvent.RecordTimedout(timerFiredEvent);
                return(WorkflowAction.Custom(signalTimedoutDecision) + WorkflowAction.ContinueWorkflow(this));
            }
            throw new InvalidOperationException("Timer fired should be called only for Reschedule and SignalTimer.");
        }
예제 #4
0
 public override WorkflowAction NextAction(WorkflowItem workflowItem)
 {
     return(WorkflowAction.ContinueWorkflow(workflowItem));
 }