在下面的规则中,我希望规则2是火的,因为我正在将客户名称修改为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取消。
您可以在此处找到更深入的解释。
希望对您有所帮助,