/**
  * @author WN
  * @param Rule $rule
  * @param Value $value
  * @param float $noMatchRisk
  * @return RuleAdvice
  */
 public function process(Rule $rule, Value $value, $noMatchRisk = Risk::MAXIMUM_RISK)
 {
     $advice = RuleAdvice::make(['rule' => $rule, 'value' => $value, 'risk' => $noMatchRisk]);
     foreach ($rule->getConditions() as $condition) {
         try {
             if ($condition->checkCondition($value)) {
                 $advice->setRisk($condition->getRisk());
                 $advice->setCondition($condition);
                 break;
             }
         } catch (ProcessingException $e) {
             $advice->addExceptions('Processing condition [' . $condition->getValue() . ']: ' . $e->getMessage());
         }
     }
     $advice->setMeta(['processor' => 'First match standard rule processor', 'no_match_risk' => $noMatchRisk]);
     return $advice;
 }