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)); }
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(); }
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(); }