DROOLS

drools规则语法(一)

1、基本的匹配规则1.1变量drools使用匹配的方式对Fact进行比对,比如Java代码 account : Account(balance > 100) 这个规则的含义就是在Fact中找到类型为Account,且balance属性值大于100的所有Account实例。可以指定变量来

1、基本的匹配规则

1.1变量

drools使用匹配的方式对Fact进行比对,

比如

Java代码   收藏代码

  1. account : Account(balance > 100)  

 这个规则的含义就是在Fact中找到类型为Account,且balance属性值大于100的所有Account实例。

可以指定变量来描述一个类型或者一个映射一个类的属性,

比如

Java代码   收藏代码

  1. $account : Account($type : type)  

 使用$Variable来定义一个变量,这里定义了两个变量,$account表示定义一个类型为Account的变量,而$type映射Account类型中的type属性。定义变量是为了在后续的规则中使用。

Java代码   收藏代码

  1. $account : Account(balance >100)   

  2. Customer(account == $account)  

 这个就是说要找到一些Custom类型的Fact,且其account属性必须满足前面定义的balance>100的条件。

1.2类型

drools支持各种java数据类型

String:字符串

Java代码   收藏代码

  1. Customer(name == "john")  

正则表达式:

 

Java代码   收藏代码

  1. Customer(name matches "[A-Z][a-z]+")  

 

表示Customer类型的name属性必须满足首字母为大写A-Z,且第二位以后有一个或者多个小写的a-z组成。

Date:日期类型

Java代码   收藏代码

  1. Account(dateCreate > "01-Feb-2009")  

 

日期的格式默认是"dd-mmmm-yyyy",可以更改。

Boolean:布尔类型

Java代码   收藏代码

  1. Transaction(isApprove == true)  

 

Enum:枚举类型

Java代码   收藏代码

  1. Account(type == Account.Type.STUDENT)  

 

1.3注释

单行注释://或者#

多行注释: /*   */

1.4包

Java代码   收藏代码

  1. package com.kingsun.drools.rules  

 

声明该规则文件所属的包,是一种namespace组织方式,和java的包类似,物理上不需要存在相应的目录结构,它只是逻辑上的划分。

1.5导入

import可以导入在规则中使用到的类,也可以导入在规则中使用到的外部定义的functiong

Java代码   收藏代码

  1. import java.util.Map;  

  2.   

  3. import com.kingsun.drools.service.LegacyBankService.extractData;  

 

当导入方法时,这个方法必须是static的,因为利用的是jdk1.5的static import特性。

1.6全局变量global

声明一个global变量

Java代码   收藏代码

  1. glo

原创不易,完成人机校验,阅读全文

相关推荐