不同行中的流涎条件与同一行中的条件相比

时间:2017-11-13 10:35:53

标签: drools

我的规则如下 -

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))

为什么上面的代码块表现不同

1 个答案:

答案 0 :(得分:0)

Drools语法是自由格式的,并且行结尾无关紧要。

两个左手边根本不同。

myObject( eval( condition1) )
myObject( eval( condition2 ) && condition3 )

如果你有一个myObject满足所有约束,如果你有一个myObject匹配condition1和另一个myObject匹配condition2和condition3,前面的LHS匹配。

myObject( eval( condition1 ) && eval( condition2 ) && condition3 )

前面的模式要求所有三个约束对于一个myObject都是真的。