public void ToResultOf <TAnotherActivity>([NotNull] ActivityNode <TAnotherActivity> activity)
            where TAnotherActivity : class, IActivity <TProperty>
        {
            activity.AssertNotNull("activity != null");

            ToResultOf(activity.Descriptor);
        }
Exemple #2
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #8
0
        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;
            }
        }
Exemple #11
0
 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);
 }
Exemple #14
0
 Null INodeVisitor <Null> .VisitActivity <TActivity>(ActivityNode <TActivity> activityNode)
 {
     VisitActivity(activityNode);
     return(null);
 }
Exemple #15
0
 protected abstract void VisitActivity <TActivity>([NotNull] ActivityNode <TActivity> activityNode)
     where TActivity : class, IActivity;