我这里有一个简单的规则案例
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)}
为:
input.setZ(9);
然后规则按预期顺序执行。
我的问题是:我是否需要使用modify关键字? modify关键字有什么作用?
答案 0 :(得分:1)
modify(或update)。省略此操作不会触发约束与新值匹配的规则。
对于这两个规则,不需要修改。但是如果有规则
rule x
when
Input( z == 9 || == 3 )
then ... end
你必须使用它。在这种情况下,请为规则添加约束:
Input( ..., z != 3 )
和
Input( ..., z != 9 )
分别为,它将起作用,你甚至不再需要无循环。