예제 #1
0
        WorkflowAction ITimer.Fired(TimerFiredEvent timerFiredEvent)
        {
            if (timerFiredEvent.IsARescheduledTimer)
            {
                return(_rescheduleTimer._firedAction(timerFiredEvent));
            }

            return(_firedAction(timerFiredEvent));
        }
예제 #2
0
        public override WorkflowAction  Fired(TimerFiredEvent timerFiredEvent)
        {
            switch (timerFiredEvent.TimerType)
            {
            case TimerType.WorkflowItem:
                return(_firedAction(timerFiredEvent));

            case TimerType.Reschedule:
                return(RescheduleTimer._firedAction(timerFiredEvent));

            default:
                return(base.Fired(timerFiredEvent));
            }
        }
예제 #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
        WorkflowAction IWorkflow.OnTimerFired(TimerFiredEvent timerFiredEvent)
        {
            ITimer timer = _allWorkflowItems.TimerFor(timerFiredEvent);

            return(timer.Fired(timerFiredEvent));
        }
예제 #5
0
        WorkflowAction ITimer.Fired(TimerFiredEvent timerFiredEvent)
        {
            ITimer timer = _rescheduleTimer;

            return(timer.Fired(timerFiredEvent));
        }