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']); } } } }
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']); } } }
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']); } } }