写点什么

Drools 基础语法

用户头像
LeifChen
关注
发布于: 3 小时前

规则文件


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

用户头像

LeifChen

关注

持续学习与分享。 2017.10.29 加入

Java 开发

评论

发布
暂无评论
Drools 基础语法