Example #1
0
        /// <summary>
        /// Determines the timer status browsing the related life-cycle event entries.
        /// </summary>
        public WorkflowItemState GetStatus(long eventId, IEnumerable<HistoryEvent> history)
        {
            if (history.IsTimerCanceled(eventId))
            {
                return WorkflowItemState.Canceled;
            }

            if (history.IsTimerStartFailed(eventId))
            {
                return WorkflowItemState.StartFailed;
            }

            if (history.IsTimerFired(eventId))
            {
                return WorkflowItemState.Completed;
            }

            if (history.IsTimerCancelFailed(eventId))
            {
                return WorkflowItemState.CancelFailed;
            }

            if (history.IsTimerStarted(eventId))
            {
                return WorkflowItemState.Started;
            }

            throw new InvalidOperationException("Cannot determine the workflow status.");
        }