我的规则如下 -
when
$myobj :
myObject( eval( condition1))//new line
myObject( eval(condition 2) && condition3)
在上述情况下,如果我的condition2评估为false,则执行条件3。
然而,在我的下面的代码中,所有条件都在同一行,短路&&按预期工作 - 当条件2为假时,不评估条件3。
when
$myobj :
myObject( eval( condition1) && eval(condition 2) && condition3))
为什么上面的代码块表现不同
答案 0 :(得分:0)
Drools语法是自由格式的,并且行结尾无关紧要。
两个左手边根本不同。
myObject( eval( condition1) )
myObject( eval( condition2 ) && condition3 )
如果你有一个myObject满足所有约束或,如果你有一个myObject匹配condition1和另一个myObject匹配condition2和condition3,前面的LHS匹配。
myObject( eval( condition1 ) && eval( condition2 ) && condition3 )
前面的模式要求所有三个约束对于一个myObject都是真的。