package package-name
imports
globals
functions
queries
rules
package
同一package 下的用户自定义函数、自定义的查询等,不管这些函数与查询是否在同一个规则文件里面,在规则里面是可以直接使用的,这点和Java 的同一package 里的Java类调用是一样的。
rule
rule "name"
attributes
when
LHS
then
RHS
end
在一个规则当中when 与then 中间的部分就是LHS部分。在LHS 当中,可以包含0~n 个条件,如果LHS 部分没空的话,那么引擎会自动添加一个eval(true)的条件,由于该条件总是返回true,所以LHS 为空的规则总是返回true
LHS部分是由一个或多个条件组成,条件又称之为pattern(匹配模式),多个pattern之间用可以使用and 或or 来进行连接,同时还可以使用小括号来确定pattern 的优先级。
[绑定变量名:]Object([field 约束])
在Drools当中在pattern 中没有连接符号,那么就用and 来作为默认连接,所以在该规则的LHS 部分中两个pattern 只有都满足了才会返回true
表面上看“,”与“&&”具有相同的含义,但是有一点需要注意,“,”与“&&”和“||”不能混合使用,也就是说在有“&&”或“||”出现的LHS 当中,是不可以有“,”连接符出现的,反之亦然。
比较操作符
在Drools5当中共提供了十二种类型的比较操作符,分别是:>、>=、<、<=、==、!=、contains、not contains、memberof、not memberof、matches、not matches
Object(field[Collection/Array] contains value)
Object(fieldName memberOf value[Collection/Array])
Object(fieldName matches “正则表达式”)
Object(fieldName memberOf value[Collection/Array])