全局变量的使用:在规则中,全局变量是定义在package之后的任何一个地方,但我们为了方便 管理统一的放到package下面
- global 变量类型 变量名; 其实与java中定义是一样的,只是关键字不同;
- session.setGlobal("变量名", 变量值); 这里通过java代码来给全局变量赋值的,也可以在规则中给变量赋值。这样的赋值与map是一样的,因为是全局的变量,在其他地方有改动的话,可能会影响到全局变量的值。
详细的说明请参考:http://blog.csdn.net/u013115157/article/details/52538370
函数是定义在规则文件当中一代码块,作用是将在规则文件当中若干个规则都会用到的 业务操作封装起来,实现业务代码的复用,减少规则编写的工作量。
函数的编写位置可以是规则文件当中
package 声明后的任何地方
Drools 当中的函数以
function 标记开头,如果函
数体没有返回值,那么 function 后面就 是 void,
如果有返回值这里的 void 要换成对应的返回值对象,接下来就是函数的名称函数名称的定义可以参考 Java 类当中方法的命名原则,对于一个函数可以有若干个输入参数, 所以函数名后面的括号当中可以定义若干个输入参数。
定义输入参数的方法是先声明参数类型,
然后接上参数名,这点和Java当中方法的输入参数定义是完全一样的,最后就是用“{…}” 括起来的业务逻辑代码,业务代码的书写采用的是标准的 Java 语法。
详细的说明请参考:http://blog.csdn.net/u013115157/article/details/52486868
查询
查询是 Drools 当中提供的一种根据条件在当前的 WorkingMemory 当中查找 Fact 的方法。查询是定义在规则文件当中,和函数一样,查询的定义可以是
package 语句之后的任意位置,在 Drools 当中查询可分为两种:一种是不需要外部传入参数;一种是需要外部传入参数
无参数查询
在 Drools 当中查询以 query 关键字开始,以 end 关键字结束,在 package 当中一个查询要有
唯一的名称,查询的内容就是查询的条件部分,条件部分内容的写法与规则的 LHS 部分写法完全相同。
举例说明:
实现类方法部分代码
Drl 定义的query
输出结果
参数查询:
和函数一样,查询也可以接收外部传入参数
语言格式
和不带参数的查询相比,唯一不同之外就是在查询名称后面多了一个用括号括起来的输入参数,查询可接收多个参数,多个参数之间用“,”分隔,每个参数都要有对应的类型声明
举例说明
上述代码的改动
将所要传入的值按DRL文件定义好的类型顺序依次写入。
详细的说明请参考:http://blog.csdn.net/u013115157/article/details/52486891
$age $name 主要用于区别 Person属性的名。
对象定义
在 Drools 当中,可以定义两种类型的对象:
一种是普通的类型 Java Fact 的对象;
另一
种是用来描述 Fact 对象或其属性的元数据对象。
Fact 对象定义
我们知道在 Drools 当中是通过向 WorkingMemory 中插入Fact对象的方式来实现规则引
擎与业务数据的交互,对于 Fact 对象就是普通的具有若干个属性及其对应的 getter 与 setter
方法的 JavaBean 对象。
Drools 除了可以接受用户在外部向 WorkingMemory 当中插入现成的
Fact 对象,还允许用户在规则文件当中定义一个新的 Fact 对象。
在规则文件当中定义 Fact 对象要以
declare 关键字开头,
以 end 关键字结尾,
中间部分就是该 Fact 对象的属性名及其类型等信息的声明
语法举例说明
这个Fact对象与java Bean是等效的。
get set方法省略....
实践上面述说功能代码
上述只是一个简单的例子, 其实多种多样的还有很多, 比如:多对象引用,对象作为属性,和hibernate多表关联的意思一样例如:
赋值时要分开;
元数据定义
我们知道,元数据就是用来描述数据的数据。在 Drools 当中,可以为 Fact 对象、Fact
对象的属性或者是规则来定义元数据,元数据定义采用的是“@”符号开头,后面是元数据
的属性名 (属性名可以是任意的) , 然后是括号, 括号当中是该元数据属性对应的具体值 (值
是任意的)
基本语法
@metadata_key( metadata_value )
括号metadata_value是可选的
@author(jim)
详细的说明请参考:http://blog.csdn.net/u013115157/article/details/52486891
下面是小编的微信转帐二维码,小编再次谢谢读者的支持,小编会更努力的
----请看下方↓↓↓↓↓↓↓
百度搜索 Drools从入门到精通:可下载开源全套Drools教程
深度Drools教程不段更新中:
更多Drools实战陆续发布中………
扫描下方二维码关注公众号 ↓↓↓↓↓↓↓↓↓↓