奇怪的drools语法

时间:2012-06-27 15:47:03

标签: drools

我很难理解value : value == 0部分?这段代码是如何工作的?

rule "My rule"
   when
       m : MyClass( value : value == 0)
    then
end

1 个答案:

答案 0 :(得分:5)

假设您正在使用Drools 5.4或更新的快照,您可以将任何布尔表达式编写为约束,因此value == 0是一个约束,其中“value”是MyClass中的字段名称。

Drools还允许您使用“:”将属性绑定到变量名称,如下所示:

<variable_name> : <fieldName>

所以,你可以写:

MyClass( $var : value == 0)

最后,由于Drools使用“上下文感知”解析器,因此您可以拥有一个与属性名称相同的变量,因为Drools知道之前的内容:是变量名称,而不是字段。因此,在您的示例中:变量“value”将绑定到属性“value”,如果value属性等于0,则约束“value == 0”将为true。

希望它有所帮助。