protected List <IUmlConnector> FindAllConnectorsTo(IUmlNode targetNode) { var quitConnectors = new List <IUmlConnector>(); FindAllConnectorsTo(targetNode, InitialNode, quitConnectors, new List <IUmlConnector>()); return(quitConnectors); }
public UmlTransition TransitionTo(IUmlNode nextNode) { var transition = new UmlTransition(ContainerName, this, nextNode) { LogType = LogType }; AddConnector(transition); return(transition); }
public UmlTransition(string containerName, IUmlNode supplier, IUmlNode consumer, IUmlConstraint guard) { ContainerName = containerName; Triggers = new List <IUmlTrigger>(); Supplier = supplier; SupplierName = supplier.Name; Consumer = consumer; ConsumerName = consumer.Name; Guard = guard; LogType = LogType; }
/// <summary> /// Recursively finds all connectors to the next node from the current node. /// </summary> /// <param name="currentNode">starting node</param> /// <param name="found">list of found connectors</param> private void FindAllConnectors(IUmlNode currentNode, List <IUmlConnector> found) { var current = currentNode as UmlNode; if (current != null) { foreach (var connector in current.Connectors) { if (connector != null && !found.Contains(connector)) { found.Add(connector); FindAllConnectors(connector.Consumer, found); } } } }
public UmlTransition TransitionTo(IUmlNode consumer, IUmlConstraint guard, Action effect, params IUmlTrigger[] triggers) { var transition = base.TransitionTo(consumer); transition.Guard = guard; if (effect != null) { transition.Effect = new DynamicActivity(effect.Method.Name, effect); } if (triggers != null) { foreach (var trigger in triggers) { transition.UseTrigger(trigger); } } return(transition); }
/// <summary> /// Recursively finds all the pausable conditional nodes. /// </summary> /// <param name="currentNode">starting node</param> /// <param name="found">list of found nodes</param> private void FindAllPausableNodes(IUmlNode currentNode, Dictionary <int, PausableNode> found) { var current = currentNode as UmlNode; if (current != null) { foreach (var connector in current.Connectors) { if (connector != null) { var conditionalNode = connector.Consumer as PausableNode; if (conditionalNode != null && !found.ContainsValue(conditionalNode)) { found.Add(conditionalNode.Index, conditionalNode); } FindAllPausableNodes(connector.Consumer, found); } } } }
/// <summary> /// Recursively finds all connectors to the target node from the current node. /// </summary> /// <param name="targetNode">connector consumer</param> /// <param name="currentNode">connector supplier</param> /// <param name="found">list of found connectors</param> /// <param name="covered">collection of connectors that were already covered in this recursive search.</param> private void FindAllConnectorsTo(IUmlNode targetNode, IUmlNode currentNode, List <IUmlConnector> found, List <IUmlConnector> covered) { var current = currentNode as UmlNode; if (current != null) { foreach (var connector in current.Connectors) { if (connector != null && !covered.Contains(connector)) { covered.Add(connector); if (connector.Consumer == targetNode) { found.Add(connector); } else { FindAllConnectorsTo(targetNode, connector.Consumer, found, covered); } } } } }
public IUmlConnector FindConnectorTo(IUmlNode node) { return(_connectors.FirstOrDefault(c => c.Consumer == node)); }
public UmlTransition(string containerName, IUmlNode supplier, IUmlNode consumer) : this(containerName, supplier, consumer, null) { }