Пример #1
0
 public static function checkProcessRules($roleId = null, $cacheConjuncts = true)
 {
     if (!is_null($roleId)) {
         $role = new Role($roleId);
         Notifications::addLog("------------------------- CHECKING PROCESS RULES (for role {$role->name}) -------------------------", 'RuleEngine');
         foreach ($role->maintains as $ruleName) {
             $rule = RuleEngine::getRule($ruleName);
             $violations = RuleEngine::checkRule($rule, $cacheConjuncts);
             foreach ((array) $violations as $violation) {
                 Notifications::addViolation($rule, $violation['src'], $violation['tgt']);
             }
         }
     } else {
         Notifications::addLog("------------------------- CHECKING ALL PROCESS RULES -------------------------", 'RuleEngine');
         foreach (RuleEngine::getAllProcessRuleNames() as $ruleName) {
             $rule = RuleEngine::getRule($ruleName);
             $violations = RuleEngine::checkRule($rule, $cacheConjuncts);
             foreach ((array) $violations as $violation) {
                 Notifications::addViolation($rule, $violation['src'], $violation['tgt']);
             }
         }
     }
 }
Пример #2
0
 public function getViolations()
 {
     $conjunctIds = array();
     $conjunctRuleMap = array();
     foreach ($this->maintains as $ruleName) {
         $rule = RuleEngine::getRule($ruleName);
         foreach ($rule['conjunctIds'] as $conjunctId) {
             $conjunctRuleMap[$conjunctId][] = $ruleName;
         }
         $conjunctIds = array_merge($conjunctIds, $rule['conjunctIds']);
     }
     $signals = RuleEngine::getSignalsFromDB($conjunctIds);
     /*
      * $signal[] = array('conjId' => , 'src' => , 'tgt' => )
      * 
      */
     foreach ($signals as $signal) {
         foreach ($conjunctRuleMap[$signal['conjId']] as $ruleName) {
             Notifications::addViolation(RuleEngine::getRule($ruleName), $signal['src'], $signal['tgt']);
         }
     }
 }
Пример #3
0
 public static function getProcessViolationsFromDB($session)
 {
     $conjunctIds = array();
     $conjunctRuleMap = array();
     foreach ($session->rulesToMaintain as $ruleName) {
         $rule = RuleEngine::getRule($ruleName);
         foreach ($rule['conjunctIds'] as $conjunctId) {
             $conjunctRuleMap[$conjunctId][] = $ruleName;
         }
         $conjunctIds = array_merge($conjunctIds, $rule['conjunctIds']);
     }
     $signals = RuleEngine::getSignalsFromDB($conjunctIds);
     foreach ($signals as $signal) {
         // $signal[] = array('conjId' => , 'src' => , 'tgt' => )
         foreach ($conjunctRuleMap[$signal['conjId']] as $ruleName) {
             Notifications::addViolation(RuleEngine::getRule($ruleName), $signal['src'], $signal['tgt']);
         }
     }
 }