public void ToResultOf <TAnotherActivity>([NotNull] ActivityNode <TAnotherActivity> activity) where TAnotherActivity : class, IActivity <TProperty> { activity.AssertNotNull("activity != null"); ToResultOf(activity.Descriptor); }
protected override void VisitActivity <TActivity>(ActivityNode <TActivity> activityNode) { if (!string.IsNullOrEmpty(activityNode.Name)) { activityNode.Descriptor.WithName(activityNode.Name); } CheckActivityBindings(activityNode.Descriptor); }
public static void BindToResultOf <TVariable, TActivity>( [NotNull] this Variable <TVariable> variable, [NotNull] ActivityNode <TActivity> node) where TActivity : class, IActivity <TVariable> { variable.AssertNotNull("variable != null"); node.AssertNotNull("node != null"); BindToResultOf(variable, node.Descriptor); }
public static void OnCompletionAssign <TActivity, TVariable>( [NotNull] this ActivityNode <TActivity> node, [NotNull] Variable <TVariable> variable, TVariable value) where TActivity : class, IActivity { node.AssertNotNull("node != null"); variable.AssertNotNull("variable != null"); OnCompletionAssign(node.Descriptor, variable, value); }
public static Result <T> Of <TActivity>([NotNull] ActivityNode <TActivity> node) where TActivity : class, IActivity <T> { node.AssertNotNull("node != null"); var result = new Result <T>(node.Id); node.RegisterActivityTaskHandler(task => HandleCompletedTask(task, result)); return(result); }
public static void OnCompletionUpdate <TActivity, TVariable>( [NotNull] this ActivityNode <TActivity> node, [NotNull] Variable <TVariable> variable, [NotNull] Func <TVariable, TVariable> valueProvider) where TActivity : class, IActivity { node.AssertNotNull("node != null"); variable.AssertNotNull("variable != null"); valueProvider.AssertNotNull("valueProvider != null"); OnCompletionUpdate(node.Descriptor, variable, valueProvider); }
public FlowBuilder WithDefaultCancellationHandler <TCancellationHandler>( [NotNull] ActivityNode <TCancellationHandler> handler) where TCancellationHandler : class, IActivity { handler.AssertNotNull("handler != null"); myDefaultCancellationHandler.AssertIsNull("Default cancellation handler is already set"); handler.AssertIsItemOf(myNodes, "Handler must be part of the flow"); myIsFreezed.AssertFalse("Builder is freezed"); myDefaultCancellationHandler = handler; return(this); }
protected override void VisitActivity <TActivity>(ActivityNode <TActivity> activityNode) { if (activityNode.FaultHandler == null && activityNode != myFaultHandler && myFaultHandler != null) { activityNode.ConnectFaultTo(myFaultHandler); } if (activityNode.CancellationHandler == null && activityNode != myCancellationHandler && myCancellationHandler != null) { activityNode.ConnectCancellationTo(myCancellationHandler); } }
public IEnumerable <IFlowNode> VisitActivity <TActivity>(ActivityNode <TActivity> activityNode) where TActivity : class, IActivity { if (activityNode.PointsTo != null) { yield return(activityNode.PointsTo); } if (activityNode.FaultHandler != null) { yield return(activityNode.FaultHandler); } if (activityNode.CancellationHandler != null) { yield return(activityNode.CancellationHandler); } }
public Task VisitActivity <TActivity>(ActivityNode <TActivity> activityNode) where TActivity : class, IActivity { activityNode.AssertNotNull("activityNode != null"); InjectableObject <TActivity> activityWrapper = InjectableObject <TActivity> .Create(ServiceProvider); Log.Info("At node: {0}. Activity created: {1}", activityNode, activityWrapper.Instance); try { TActivity activity = activityWrapper.Instance; activityNode.OnActivityCreated(activity); Log.Info("At node: {0}. Activity started", activityNode); Task <object> task = activity.Execute(); if (task.IsCompleted) { activityNode.OnActivityCompleted(task); activityWrapper.Dispose(); return(ExecuteNextNode(activityNode, task)); } Task <Task> continuation = task.ContinueWith(t => { activityNode.OnActivityCompleted(task); // ReSharper disable once AccessToDisposedClosure activityWrapper.Dispose(); return(ExecuteNextNode(activityNode, t)); }, myScheduler); return(continuation.Unwrap()); } catch (Exception) { activityWrapper.Dispose(); throw; } }
protected override void VisitActivity <TActivity>(ActivityNode <TActivity> activityNode) { CheckActivityNode(activityNode); }
private void VisitActivityNode(ActivityNode activityNode) { CheckIfNodeIsInsideBlock(activityNode.PointsTo); CheckIfNodeIsInsideBlock(activityNode.FaultHandler); CheckIfNodeIsInsideBlock(activityNode.CancellationHandler); }
protected override void VisitActivity <TActivity>(ActivityNode <TActivity> activityNode) { CheckActivityType(typeof(TActivity), activityNode); }
Null INodeVisitor <Null> .VisitActivity <TActivity>(ActivityNode <TActivity> activityNode) { VisitActivity(activityNode); return(null); }
protected abstract void VisitActivity <TActivity>([NotNull] ActivityNode <TActivity> activityNode) where TActivity : class, IActivity;