drools规则语法(一)
1、基本的匹配规则
1.1变量
drools使用匹配的方式对Fact进行比对,
比如
account : Account(balance > 100)
这个规则的含义就是在Fact中找到类型为Account,且balance属性值大于100的所有Account实例。
可以指定变量来描述一个类型或者一个映射一个类的属性,
比如
$account : Account($type : type)
使用$Variable来定义一个变量,这里定义了两个变量,$account表示定义一个类型为Account的变量,而$type映射Account类型中的type属性。定义变量是为了在后续的规则中使用。
$account : Account(balance >100)
Customer(account == $account)
这个就是说要找到一些Custom类型的Fact,且其account属性必须满足前面定义的balance>100的条件。
1.2类型
drools支持各种java数据类型
String:字符串
Customer(name == "john")
正则表达式:
Customer(name matches "[A-Z][a-z]+")
表示Customer类型的name属性必须满足首字母为大写A-Z,且第二位以后有一个或者多个小写的a-z组成。
Date:日期类型
Account(dateCreate > "01-Feb-2009")
日期的格式默认是"dd-mmmm-yyyy",可以更改。
Boolean:布尔类型
Transaction(isApprove == true)
Enum:枚举类型
Account(type == Account.Type.STUDENT)
1.3注释
单行注释://或者#
多行注释: /* */
1.4包
package com.kingsun.drools.rules
声明该规则文件所属的包,是一种namespace组织方式,和java的包类似,物理上不需要存在相应的目录结构,它只是逻辑上的划分。
1.5导入
import可以导入在规则中使用到的类,也可以导入在规则中使用到的外部定义的functiong
import java.util.Map;
import com.kingsun.drools.service.LegacyBankService.extractData;
当导入方法时,这个方法必须是static的,因为利用的是jdk1.5的static import特性。
1.6全局变量global
声明一个global变量
glo
原创不易,完成人机校验,阅读全文
