Example #1
0
        private TReturn ExecuteStep(IStep <TState, TReturn> step)
        {
            var result = WorkFlowContext.Lock(() => WorkFlowContext.Path.AddLast(step));

            if (!result)
            {
                return(default(TReturn));
            }

            return(step.Execute(WorkFlowContext.State));
        }
Example #2
0
        public override void Execute()
        {
            var node = new ContainerNode <TState>(this);

            var step = _builder();

            var result = WorkFlowContext.Lock(() => WorkFlowContext.Path.AddLast(step));

            if (!result)
            {
                return;
            }

            step.Execute(WorkFlowContext.State, node);
            node.Execute();

            WorkFlowContext.Path.RemoveLast();
        }
Example #3
0
        public override void Execute()
        {
            if (WorkFlowContext.Canceled)
            {
                throw new WorkflowCanceledException();
            }

            var step = _factory();

            var result = WorkFlowContext.Lock(() => WorkFlowContext.Path.AddLast(step));

            if (!result)
            {
                return;
            }

            step.Execute(WorkFlowContext.State);
            WorkFlowContext.Path.RemoveLast();
        }