Ejemplo n.º 1
0
        private void OnBranchComplete(NativeActivityContext context, ActivityInstance completedInstance)
        {
            PickState pickState = this.pickStateVariable.Get(context);
            ReadOnlyCollection <ActivityInstance> executingChildren = context.GetChildren();

            switch (completedInstance.State)
            {
            case ActivityInstanceState.Closed:
                pickState.HasBranchCompletedSuccessfully = true;
                break;

            case ActivityInstanceState.Canceled:
            case ActivityInstanceState.Faulted:
                if (context.IsCancellationRequested)
                {
                    if (executingChildren.Count == 0 && !pickState.HasBranchCompletedSuccessfully)
                    {
                        // All of the branches are complete and we haven't had a single
                        // one complete successfully and we've been asked to cancel.
                        context.MarkCanceled();
                        context.RemoveAllBookmarks();
                    }
                }
                break;
            }

            //the last branch should always resume action bookmark if it's still there
            if (executingChildren.Count == 1 && pickState.ExecuteActionBookmark != null)
            {
                ResumeExecutionActionBookmark(pickState, context);
            }
        }
Ejemplo n.º 2
0
        private void OnTriggerComplete(NativeActivityContext context, Bookmark bookmark, object state)
        {
            PickState pickState = this.pickStateVariable.Get(context);

            string winningBranch = (string)state;

            ReadOnlyCollection <ActivityInstance> children = context.GetChildren();

            bool resumeAction = true;

            for (int i = 0; i < children.Count; i++)
            {
                ActivityInstance child = children[i];

                if (child.Id != winningBranch)
                {
                    context.CancelChild(child);
                    resumeAction = false;
                }
            }

            if (resumeAction)
            {
                ResumeExecutionActionBookmark(pickState, context);
            }
        }
Ejemplo n.º 3
0
        private void OnBranchComplete(NativeActivityContext context, System.Activities.ActivityInstance completedInstance)
        {
            PickState pickState = this.pickStateVariable.Get(context);
            ReadOnlyCollection <System.Activities.ActivityInstance> children = context.GetChildren();

            switch (completedInstance.State)
            {
            case ActivityInstanceState.Closed:
                pickState.HasBranchCompletedSuccessfully = true;
                break;

            case ActivityInstanceState.Canceled:
            case ActivityInstanceState.Faulted:
                if ((context.IsCancellationRequested && (children.Count == 0)) && !pickState.HasBranchCompletedSuccessfully)
                {
                    context.MarkCanceled();
                    context.RemoveAllBookmarks();
                }
                break;
            }
            if ((children.Count == 1) && (pickState.ExecuteActionBookmark != null))
            {
                this.ResumeExecutionActionBookmark(pickState, context);
            }
        }
Ejemplo n.º 4
0
        private void OnTriggerComplete(NativeActivityContext context, Bookmark bookmark, object state)
        {
            var pickState = this.pickStateVariable.Get(context);

            var winningBranch = (string)state;

            var children = context.GetChildren();

            var resumeAction = true;

            for (var i = 0; i < children.Count; i++)
            {
                var child = children[i];

                if (child.Id != winningBranch)
                {
                    context.CancelChild(child);
                    resumeAction = false;
                }
            }

            if (resumeAction)
            {
                ResumeExecutionActionBookmark(pickState, context);
            }
        }
Ejemplo n.º 5
0
        protected override void OnHasCompleted(NativeActivityContext context, ActivityInstance completedInstance)
        {
            base.OnHasCompleted(context, completedInstance);

            //HACK:重写并行节点满足条件退出逻辑
            var e = context.GetExtension<ParallelExtension>();
            e.Cancelled(context.GetChildren()
                .Where(o => o.ID != completedInstance.ID)
                .Select(o => o.ID)
                .ToArray());
        }
Ejemplo n.º 6
0
        protected override void OnHasCompleted(NativeActivityContext context, ActivityInstance completedInstance)
        {
            base.OnHasCompleted(context, completedInstance);

            //HACK:重写并行节点满足条件退出逻辑
            var e = context.GetExtension <ParallelExtension>();

            e.Cancelled(context.GetChildren()
                        .Where(o => o.ID != completedInstance.ID)
                        .Select(o => o.ID)
                        .ToArray());
        }
Ejemplo n.º 7
0
        private void PrepareForExit(NativeActivityContext context, string targetStateId)
        {
            ReadOnlyCollection <System.Activities.ActivityInstance> children = context.GetChildren();

            base.Result.Set(context, targetStateId);
            this.isExiting.Set(context, true);
            if (children.Count > 0)
            {
                context.CancelChildren();
            }
            else
            {
                this.ScheduleExit(context);
            }
        }
Ejemplo n.º 8
0
        void PrepareForExit(NativeActivityContext context, string targetStateId)
        {
            ReadOnlyCollection<ActivityInstance> children = context.GetChildren();
            this.Result.Set(context, targetStateId);
            this.isExiting.Set(context, true);

            if (children.Count > 0)
            {
                // Cancel all other pending triggers.
                context.CancelChildren();
            }
            else
            {
                this.ScheduleExit(context);
            }
        }
Ejemplo n.º 9
0
        void PrepareForExit(NativeActivityContext context, string targetStateId)
        {
            Debug.Assert(!this.hasRunningChildState.Get(context), "There should not be any running child state.");
            ReadOnlyCollection <ActivityInstance> children = context.GetChildren();

            this.Result.Set(context, targetStateId);
            this.isExiting.Set(context, true);
            if (children.Count > 0)
            {
                // Cancel all other pending triggers.
                context.CancelChildren();
            }
            else
            {
                ScheduleExit(context);
            }
        }
Ejemplo n.º 10
0
        private void OnTriggerComplete(NativeActivityContext context, Bookmark bookmark, object state)
        {
            PickState pickState = this.pickStateVariable.Get(context);
            string    str       = (string)state;
            ReadOnlyCollection <System.Activities.ActivityInstance> children = context.GetChildren();
            bool flag = true;

            for (int i = 0; i < children.Count; i++)
            {
                System.Activities.ActivityInstance activityInstance = children[i];
                if (activityInstance.Id != str)
                {
                    context.CancelChild(activityInstance);
                    flag = false;
                }
            }
            if (flag)
            {
                this.ResumeExecutionActionBookmark(pickState, context);
            }
        }
        private void OnBranchComplete(NativeActivityContext context, System.Activities.ActivityInstance completedInstance)
        {
            PickState pickState = this.pickStateVariable.Get(context);
            ReadOnlyCollection<System.Activities.ActivityInstance> children = context.GetChildren();
            switch (completedInstance.State)
            {
                case ActivityInstanceState.Closed:
                    pickState.HasBranchCompletedSuccessfully = true;
                    break;

                case ActivityInstanceState.Canceled:
                case ActivityInstanceState.Faulted:
                    if ((context.IsCancellationRequested && (children.Count == 0)) && !pickState.HasBranchCompletedSuccessfully)
                    {
                        context.MarkCanceled();
                        context.RemoveAllBookmarks();
                    }
                    break;
            }
            if ((children.Count == 1) && (pickState.ExecuteActionBookmark != null))
            {
                this.ResumeExecutionActionBookmark(pickState, context);
            }
        }
Ejemplo n.º 12
0
        void OnTriggerComplete(NativeActivityContext context, Bookmark bookmark, object state)
        {
            PickState pickState = this.pickStateVariable.Get(context);

            string winningBranch = (string)state;

            ReadOnlyCollection<ActivityInstance> children = context.GetChildren();

            bool resumeAction = true;

            for (int i = 0; i < children.Count; i++)
            {
                ActivityInstance child = children[i];

                if (child.Id != winningBranch)
                {
                    context.CancelChild(child);
                    resumeAction = false;
                }
            }
            
            if (resumeAction)
            {
                ResumeExecutionActionBookmark(pickState, context);
            }
        }
Ejemplo n.º 13
0
        void OnBranchComplete(NativeActivityContext context, ActivityInstance completedInstance)
        {
            PickState pickState = this.pickStateVariable.Get(context);
            ReadOnlyCollection<ActivityInstance> executingChildren = context.GetChildren();

            switch (completedInstance.State)
            {
                case ActivityInstanceState.Closed:
                    pickState.HasBranchCompletedSuccessfully = true;
                    break;
                case ActivityInstanceState.Canceled:
                case ActivityInstanceState.Faulted:
                    if (context.IsCancellationRequested)
                    {
                        if (executingChildren.Count == 0 && !pickState.HasBranchCompletedSuccessfully)
                        {
                            // All of the branches are complete and we haven't had a single
                            // one complete successfully and we've been asked to cancel.
                            context.MarkCanceled();
                            context.RemoveAllBookmarks();
                        }
                    }                    
                    break;
            }

            //the last branch should always resume action bookmark if it's still there
            if (executingChildren.Count == 1 && pickState.ExecuteActionBookmark != null)
            {
                ResumeExecutionActionBookmark(pickState, context);
            }
        }
 private void OnTriggerComplete(NativeActivityContext context, Bookmark bookmark, object state)
 {
     PickState pickState = this.pickStateVariable.Get(context);
     string str = (string) state;
     ReadOnlyCollection<System.Activities.ActivityInstance> children = context.GetChildren();
     bool flag = true;
     for (int i = 0; i < children.Count; i++)
     {
         System.Activities.ActivityInstance activityInstance = children[i];
         if (activityInstance.Id != str)
         {
             context.CancelChild(activityInstance);
             flag = false;
         }
     }
     if (flag)
     {
         this.ResumeExecutionActionBookmark(pickState, context);
     }
 }