Jboss 修改对象时规则执行失败

Jboss 修改对象时规则执行失败,jboss,drools,kie,drools-kie-server,Jboss,Drools,Kie,Drools Kie Server,在下面的规则中,我希望规则2是fire,因为我正在将客户名称修改为mahesh。但当我执行时,规则2不触发,但规则3触发。我有什么遗漏吗 rule "Rule1" lock-on-active true salience 95 when $c:Customer($customerName:customerName) then System.out.println($customerName+" =======2========"); modif

在下面的规则中,我希望规则2是fire,因为我正在将客户名称修改为mahesh。但当我执行时,规则2不触发,但规则3触发。我有什么遗漏吗

  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 

lock on active
的作用是,如果定义规则的议程组已处于活动状态,则阻止激活该规则。 在您的情况下,由于您已经在执行规则(
fireAllRules
),因此
MAIN
议程组(这是您的两条规则所属的组)已经处于活动状态。这意味着第二个规则激活将被Drools取消

你可以找到更深入的解释


希望有帮助,

我删除了对活动true的锁定,然后触发了Rule2,但不知道如何在活动true上添加锁定,使Rule2不触发!!