Выполнение правила не выполняется при изменении объекта - PullRequest
0 голосов
/ 04 июля 2018

В приведенных ниже правилах я ожидаю, что 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 Ответ

0 голосов
/ 05 июля 2018

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

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

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

...