Выполнение правила не выполняется при изменении объекта

В приведенных ниже правилах я ожидаю, что Rule2 - это огонь, потому что я изменяю имя клиента на mahesh. Но когда я выполняю, Rule2 не запускается, а Rule3 запускается. Я что-то здесь упускаю?

  rule "Rule1"
lock-on-active true
salience 95
    when
        $c:Customer($customerName:customerName)
    then
    System.out.println($customerName+" =======2========");
    modify($c){
            setCustomerName("mahesh");
        }
        System.out.println($customerName);
end

rule "Rule2"
lock-on-active true
salience 85 
    when
        $c1:Customer($customerName:customerName=="mahesh");
    then
        System.out.println($customerName+" Rules Name is 1 - " + drools.getRule().getName());
         $c1.setCustomerName("mahesh456");
        update($c1);
end

rule "Rule3"
lock-on-active true
    when
        $c:Customer($customerName:customerName)
    then
        System.out.println($customerName+ "***** ");
end 

1 ответ

Какие lock-on-active делает, чтобы предотвратить активацию правила, если группа повестки дня, в которой определено правило, уже активна. В вашем случае, потому что вы уже выполняли правила (fireAllRules) MAIN Группа повестки дня (к которой принадлежат оба ваших правила) уже активна. Это означает, что активация второго правила будет отменена Drools.

Вы можете найти здесь более подробное объяснение.

Надеюсь, поможет,

Другие вопросы по тегам