/// <summary> /// Find this node's finish transition. /// Encapsulates a UML spec violation where transition/trigger order matters. /// </summary> /// <returns></returns> protected static UmlTransition FindFinishTransition(UmlNode node) { if (node != null && node.Connectors.Count > 0) { // The Finishe transition is always index 0 in ActivityMachine. return(node.Connectors[(int)ActivityTransition.Finish] as UmlTransition); } return(null); }
/// <summary> /// Find this node's quit transition, if it has one. Only ConditionalNodes have these. /// Encapsulates a UML spec violation where transition/trigger order matters. /// </summary> /// <returns></returns> protected static UmlTransition FindQuitTransition(UmlNode node) { // Only ConditionalNode will have a quit transition. if (node is ConditionalNode) { return((node as ConditionalNode).QuitTransition); } return(null); }
protected virtual void AddNode(UmlNode node) { _nodes.Add(node); node.Entered += HandleNodeEntered; if (node is BehavioralNode) { (node as BehavioralNode).EntryBehaviorsFinished += HandleNodeEntryBehaviorsFinished; } }
/// <summary> /// Find this node's continue transition. /// Encapsulates a UML spec violation where transition/trigger order matters. /// </summary> /// <returns></returns> protected static UmlTransition FindContinueTransition(UmlNode node) { if (node is ConditionalNode) { return((node as ConditionalNode).ContinueTransition); } // Only ConditionalNodes have quit transitions, so if node is not conditional then // it's continue transition must be the 2nd one. if (node != null && node.Connectors.Count > 1) { return(node.Connectors[(int)ActivityTransition.Continue] as UmlTransition); } return(null); }