Exemplo n.º 1
0
        /// <summary>
        /// Adds a model element in this model element
        /// </summary>
        /// <param name="copy"></param>
        public override void AddModelElement(Utils.IModelElement element)
        {
            {
                StructureElement item = element as StructureElement;
                if (item != null)
                {
                    appendElements(item);
                }
            }
            {
                Procedure item = element as Procedure;
                if (item != null)
                {
                    appendProcedures(item);
                }
            }
            {
                Rules.Rule item = element as Rules.Rule;
                if (item != null)
                {
                    appendRules(item);
                }
            }

            base.AddModelElement(element);
        }
Exemplo n.º 2
0
        /// <summary>
        ///     Add actions when leaving a state
        /// </summary>
        /// <param name="priority"></param>
        /// <param name="updates"></param>
        /// <param name="variable"></param>
        /// <param name="leaveState"></param>
        /// <param name="enterState"></param>
        private void HandleLeaveState(acceptor.RulePriority?priority, List <VariableUpdate> updates, IVariable variable,
                                      State leaveState, State enterState)
        {
            if (!_processedStates.Contains(leaveState))
            {
                _processedStates.Add(leaveState);

                if (!leaveState.getStateMachine().Contains(leaveState, enterState))
                {
                    if (leaveState.getLeaveAction() != null)
                    {
                        Rules.Rule            rule           = (Rules.Rule)leaveState.getLeaveAction();
                        ExplanationPart       explanation    = new ExplanationPart(rule, "Rule evaluation");
                        HashSet <Activation>  newActivations = new HashSet <Activation>();
                        List <VariableUpdate> newUpdates     = new List <VariableUpdate>();
                        // the priority is not specified for the rule evaluation since
                        // the rules of the leave states have to be executed regardless the priority
                        rule.Evaluate(this, null, variable, newActivations, explanation);
                        EvaluateActivations(newActivations, priority, newUpdates);
                        updates.AddRange(newUpdates);
                    }

                    if (leaveState.EnclosingState != null)
                    {
                        HandleLeaveState(priority, updates, variable, leaveState.EnclosingState, enterState);
                    }
                }

                _processedStates.Remove(leaveState);
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Adds a model element in this model element
 /// </summary>
 /// <param name="copy"></param>
 public override void AddModelElement(Utils.IModelElement element)
 {
     {
         Range item = element as Range;
         if (item != null)
         {
             appendRanges(item);
         }
     }
     {
         Enum item = element as Enum;
         if (item != null)
         {
             appendEnumerations(item);
         }
     }
     {
         Structure item = element as Structure;
         if (item != null)
         {
             appendStructures(item);
         }
     }
     {
         Collection item = element as Collection;
         if (item != null)
         {
             appendCollections(item);
         }
     }
     {
         Functions.Function item = element as Functions.Function;
         if (item != null)
         {
             appendFunctions(item);
         }
     }
     {
         Functions.Procedure item = element as Functions.Procedure;
         if (item != null)
         {
             appendProcedures(item);
         }
     }
     {
         Rules.Rule item = element as Rules.Rule;
         if (item != null)
         {
             appendRules(item);
         }
     }
     {
         Variables.Variable item = element as Variables.Variable;
         if (item != null)
         {
             appendVariables(item);
         }
     }
 }
Exemplo n.º 4
0
            /// <summary>
            /// Indicates which rules are not active
            /// </summary>
            /// <param name="obj"></param>
            /// <param name="visitSubNodes"></param>
            public override void visit(Generated.Rule obj, bool visitSubNodes)
            {
                Rules.Rule rule = obj as Rule;
                if (rule != null)
                {
                    rule.ActivationPriorities = null;
                }

                base.visit(obj, visitSubNodes);
            }
        public override void visit(Rule obj, bool visitSubNodes)
        {
            Rules.Rule rule = obj as Rules.Rule;

            if (rule != null)
            {
                rule.ExecutionCount       = 0;
                rule.ExecutionTimeInMilli = 0L;
            }

            base.visit(obj, visitSubNodes);
        }
Exemplo n.º 6
0
        private Rules.RuleModule.RuleModule CreateRuleModule(Rules.Rule rule)
        {
            var ruleModule = new Rules.RuleModule.RuleModule
            {
                Name  = "Test rule module",
                Rules = new HashSet <IRuleCompilable>
                {
                    rule
                }
            };

            var id = this.RuleModuleService.CreateAsync(ruleModule).Result;
            var createdRuleModule = this.RuleModuleService.InquireAsync(id).Result;

            return(createdRuleModule);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Adds a model element in this model element
        /// </summary>
        /// <param name="copy"></param>
        public override void AddModelElement(Utils.IModelElement element)
        {
            {
                Parameter item = element as Parameter;
                if (item != null)
                {
                    appendParameters(item);
                }
            }
            {
                Rules.Rule item = element as Rules.Rule;
                if (item != null)
                {
                    appendRules(item);
                }
            }

            base.AddModelElement(element);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Adds a model element in this model element
        /// </summary>
        /// <param name="copy"></param>
        public override void AddModelElement(Utils.IModelElement element)
        {
            {
                Constants.State item = element as Constants.State;
                if (item != null)
                {
                    appendStates(item);
                }
            }
            {
                Rules.Rule item = element as Rules.Rule;
                if (item != null)
                {
                    appendRules(item);
                }
            }

            base.AddModelElement(element);
        }
Exemplo n.º 9
0
        /// <summary>
        /// Applies a rule defined in a procedure
        /// </summary>
        /// <param name="rule"></param>
        /// <param name="changes"></param>
        /// <param name="ctxt"></param>
        private void ApplyRule(Rules.Rule rule, ChangeList changes, InterpretationContext ctxt, ExplanationPart explanation)
        {
            foreach (Rules.RuleCondition condition in rule.RuleConditions)
            {
                if (condition.EvaluatePreConditions(ctxt))
                {
                    foreach (Rules.Action action in condition.Actions)
                    {
                        action.GetChanges(ctxt, changes, explanation, true);
                    }

                    foreach (Rules.Rule subRule in condition.SubRules)
                    {
                        ApplyRule(subRule, changes, ctxt, explanation);
                    }
                    break;
                }
            }
        }
Exemplo n.º 10
0
        private Rules.Rule CreateRule()
        {
            var rand = new System.Random();
            var rule = new Rules.Rule
            {
                Name          = "Test rule",
                SaveArguments = Enumerable.Range(0, 5)
                                .Select(index => new Rules.RuleArgument
                {
                    Position  = rand.Next(0, 100),
                    SaveValue = new string[] { "Alabama1", "Alabama2" },
                    ValueType = typeof(string).FullName
                })
                                .ToList(),
                RuleType   = RuleType.Boolean,
                Expression = "Order.TrackingNumber.IsInList(@0)"
            };

            return(rule);
        }
Exemplo n.º 11
0
        /// <summary>
        /// Instanciates this state machine for the instanciation of a StructureProcedure into a Procedure
        /// </summary>
        /// <returns></returns>
        public StateMachine instanciate()
        {
            StateMachine retVal = (StateMachine)Generated.acceptor.getFactory().createStateMachine();

            retVal.Name = Name;
            retVal.setFather(getFather());
            retVal.InitialState = InitialState;
            foreach (Constants.State state in States)
            {
                Constants.State newState = state.duplicate();
                retVal.appendStates(newState);
            }
            foreach (Rules.Rule rule in Rules)
            {
                Rules.Rule newRule = rule.duplicate();
                retVal.appendRules(newRule);
            }

            return(retVal);
        }
 public override Generated.Rule createRule()
 {
     Rules.Rule retVal = new Rules.Rule();
     retVal.setPriority(Generated.acceptor.RulePriority.aProcessing);
     return retVal;
 }
 public override Generated.Rule createRule()
 {
     Rules.Rule retVal = new Rules.Rule();
     retVal.setPriority(Generated.acceptor.RulePriority.aProcessing);
     return(retVal);
 }