Drools:多个匹配规则

Drools:多个匹配规则,drools,Drools,我这里有一个简单的规则案例 salience 50 no-loop true rule "1" when input: Input(a == 20, b == 16026) then modify(input) {setZ(3)} end salience 40 no-loop true rule "2" when input: Input(a == 20, c == 209) then modif

我这里有一个简单的规则案例

salience 50
no-loop true
rule "1"
    when
        input: Input(a == 20, b == 16026)
    then
        modify(input) {setZ(3)}
end

salience 40
no-loop true
rule "2"
    when
        input: Input(a == 20, c == 209)
    then
        modify(input) {setZ(9)}
end
如果我保持上述规则不变,它们将进入一个连续循环。 但是,如果我从以下位置修改这两个规则:

modify(input) {setZ(9)}
致:

然后规则按预期顺序执行

我的问题是:我需要使用modify关键字吗?modify关键字的作用是什么?

如果Drools引擎要根据修改的事实对象的新值重新计算规则,则必须使用modify(或update)。忽略此项不会触发约束与新值匹配的规则

对于这两个规则,不需要修改。但如果有规则的话

rule x
when
  Input( z == 9 || == 3 )
then ... end
你必须使用它。在这种情况下,将约束添加到规则中:

Input( ..., z != 3 )


它将分别工作,您甚至不再需要循环。

我有3个条件,我想将这些条件转换为3个不同的规则,并在所有规则匹配时修改值。我怎样才能做到?
Input( ..., z != 3 )
Input( ..., z != 9 )