コード例 #1
0
        /// <summary>
        /// Create a transition between the given activity instances for the provided exit point
        /// </summary>
        public static void AddTransition(Workflow wf, WfActivity from, WfActivity to, ExitPoint exitPoint)
        {
            // remove any existing
            var toRemove = from.ForwardTransitions.FirstOrDefault(t => t.FromExitPoint.Id == exitPoint.Id);

            if (toRemove != null)
            {
                from.ForwardTransitions.Remove(toRemove);

                var asTerm = toRemove.As <Termination>();
                if (asTerm != null)
                {
                    wf.Terminations.Remove(asTerm);
                }

                var asTrans = toRemove.As <Transition>();
                if (asTrans != null)
                {
                    wf.Transitions.Remove(asTrans);
                }

                toRemove.Delete();
            }

            var trans = new Transition()
            {
                Name = exitPoint.Name, FromActivity = @from, ToActivity = to, FromExitPoint = exitPoint
            };

            from.ForwardTransitions.Add(trans.As <TransitionStart>());
            wf.Transitions.Add(trans);
        }