drools 规则文件 —— 文件构成介绍
来源:互联网 发布:js 事件触发target 编辑:程序博客网 时间:2024/06/06 03:50
http://liureying.blog.163.com/blog/static/6151352011111391336589/?suggestedreading
简述:
规则文件是按规则引擎的规范与语法,记录一下处理逻辑。按引擎的算法来触发符合规则的处理
1.规则文件构成:
package(规则文件所在包*)import(导入java 包)globalsfunction(函数)query(查找)rules(规则*)
2.各部分介绍
- rules(规则*)
作用:规则文件规则部分语法:
rule 规则名when条件then处理end;
note:
一个规则文件可以有多个规则
2.package(规则文件所在包*)
作用:
package的作用是用来对功能相似或相关的文件放在同一个package下进行管理。与java的package类似
语法:
package com.demo.fun
3.import(导入java 包)
作用:
对于要用到的Java类,需要在规则文件当中用 import将类导入后方能使用,这点和Java文件的编写规则相同
语法:
import 类名;
示例:
package com.demo.find#Applicant是com.demo.Applicant,跟规则不在同一个包import com.demo.*;rule "text"when
app : Applicant(age < 30)
then
System.out.println("age > 0");
end
4.function
作用:
函数是定义在规则文件当中一代码块,作用是将在规则文件当中若干个规则都会用到的业务操作封装起来,实现业务代码的复用,减少规则编写的工作量。
语法:
#void/返回类型 function方法名(参数类型:参数名){
dosomething
}
示例:
package com.demo.fun#导入java类的静态方法#import function 类名.静态方法名import function com.demo.fun.RuleTools.printInfo#在规则文件function声明function void printName(String name){System.out.println("你的名字是:" +name);}#rulerule "rule1"wheneval(true)thenSystem.out.println("---------rule 1-------");//调用方法printName("具爱珍");endrule "rule3"wheneval(true);thenSystem.out.println("------------rule 3--------");printInfo("依晨");end
note:
function 声明有两种方法
1.在规则文件内声明。只能在该规则文件中使用,不需要import2.在规则文件内import Java静态类作为function,需要使用规则引擎import function 类名.静态方法名,就能使用
5.query
作用:
query是 Drools 当中提供的一种根据条件在当前的 WorkingMemory 当中查找 Fact 的方法。
语法:1.不带参数语法query 名字dosomethingend2.带参数语法
query 名字(参数类型 $参数名)
dosomething
end
示例:package com.demo.findimport com.demo.*;#query
query "myQueryTest"
app : Applicant(age > 30)
endquery "testQuery"(int $age)
app : Applicant(age > $age)
endrule "text"when
app : Applicant(age < 30)
then
System.out.println("age > 0");
end
6.globals
作用:在Drools规则引擎当中,用于记录规则当中产生的数据及状态的变化数据,通过在 StatefulKnowledgeSession 当中设置 global 对象来实现语法:
global 类型 公共变量名;
示例:
package com.demo.myglobalglobal java.util.List myGlobalList;global com.demo.Applicant app;rule "rule1"when$inNum:Integer();eval($inNum > 2)then
#System.out.println($inNum+">2");
myGlobalList.add("grobal test");
app.setAge(app.getAge() + 1);
end
7.declare
作用:
Drools除了可以接受用户在外部向 WorkingMemory当中插入现成的Fact对象,还允许用户在规则文件当中定义一个新的 Fact对象。
语法:
declare Address
熟悉名 : 类型
end
示例:package com.demo.factdeclare Address
city : StringaddressName : String
endrule "rule1"
salience 2
when
eval(true);
then
Address add = new Address();add.setCity("中国上海");add.setAddressName("中国上海松江区");insert(add);
end
- drools 规则文件 —— 文件构成介绍
- drools 规则文件 —— 语法
- Drools 规则文件 ——语法属性
- Drools 规则文件 ——语法属性
- Drools 规则文件 ——语法属性
- drools的规则文件
- Drools动态加载规则文件
- Drools动态加载规则文件
- Drools规则引擎远程加载规则文件
- drools 规约文件 —— 语法
- drools解析决策表为drl普通规则文件
- Drools学习 搭建helloworld 与规则文件结构
- 急!!!求教关于drools动态加载规则文件
- Drools规则引擎介绍一
- udev 规则文件介绍
- C++头文件规则介绍
- Drools规则引擎之类库介绍
- Drools学习笔记1-规则引擎介绍
- IReport与JasperReport生成HTML报表的问题
- linux epoll Model Test
- cloudstack(1)——介绍
- WCF4.0 –- RESTful WCF Services (1) (入门)
- quartz
- drools 规则文件 —— 文件构成介绍
- PCI总线驱动概要
- Eclipse 中设置JVM 内存
- Scilab文件和c语言的转换问题
- yii中使用Memcache
- WebKit资源加载进度
- anroid Remote Service 使用注意事项
- json作为客户端调用服务端说明
- android studio 编译调试 错误