protected List <IUmlConnector> FindAllConnectorsTo(IUmlNode targetNode)
        {
            var quitConnectors = new List <IUmlConnector>();

            FindAllConnectorsTo(targetNode, InitialNode, quitConnectors, new List <IUmlConnector>());
            return(quitConnectors);
        }
Exemplo n.º 2
0
        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);
                        }
                    }
                }
            }
        }
Exemplo n.º 8
0
 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)
 {
 }