Drools 基础语法
规则文件
Drools 规则引擎中,标准的规则文件就是以“.drl”结尾的文本文件。
一套完整的规则文件内容,如下所示:
规则体语法结构
匹配模式(pattern)
LHS 部分由一个或多个条件组成,条件又称为 pattern。多个 pattern 之间既可以使用 and 或 or 进行连接,又可以使用小括号确定优先级,默认条件是 true。
语法结构:[绑定变量名:Object(Field 约束)]
例如 $p:Person(age==18),表示:①必须有 insert(Person 对象);②age 必须等于 18。
约束连接
[not] contains
contains 用来检查一个 Fact 对象的某个属性值是否包含一个指定的对象值。
not contains 的作用与 contains 相反,用来判断一个 Fact 对象的某个字段不包含一个指定的对象。
语法:Object( field[Collection/Array] [not] contains value )
[not] momberOf
memberOf 用来判断一个 Fact 对象的某个字段是否在一个或多个集合中。
not memberOf 与 memberOf 的作用相反,用来判断 Fact 对象中某个字段值不在某个集合中。
语法:Object( filedName [not] memberOf value[Collection/Array] )
[not] matches
matches 用来对一个 Fact 对象的字段与标准的 Java 正则表达式进行相似匹配。
not matches 的作用与 matches 相反,是用来将某个 Fact 对象的字段与一个 Java 标准正则表达式进行匹配,若与正则表达式不匹配,则规则成立。
语法:Object( fieldName [not] matches "正则表达式" )
soundslike
soundslike 用来检查一个 Fact 对象的字段是否与给定值相等。
语法:Object( fieldName soundslike value )
str
str 不仅检查 String 字段是否以某一值开头/结尾,还可以判断字符串长度。
语法:Object( fieldName str[starsWith | endsWith | length] "String"|1 )
注释语法
Drools 的注释标记与 Java 语法完全一样。
package rules; /* * 多行注释 */ rule "comment" // 单行注释 when eval(true) then System.out.println("comment"); end
评论