/** * @param Rule $rule * @param WorkingMemory $workingMemory * * @return array */ public function execute(Rule $rule, WorkingMemory $workingMemory) { if ($rule instanceof RuleRunDecorator && $rule->hasSuccessCombinationRules()) { $workingMemory->setExecuted($rule->getRule()); foreach ($rule->getSuccessCombinationRules() as $combinationRule) { $this->inferenceProfiler && $this->inferenceProfiler->addIterationRuleExecution($combinationRule); $workingMemory->setAllFacts($this->execAction($combinationRule, $workingMemory)); $workingMemory->setExecuted($combinationRule); } } else { $this->inferenceProfiler && $this->inferenceProfiler->addIterationRuleExecution($rule); $workingMemory->setAllFacts($this->execAction($rule, $workingMemory)); $workingMemory->setExecuted($rule->getRule()); } }