Drools的规则引擎文件种类
- drl/drls:最常见的格式,普通的决策文件
- xls/xlsx:用于决策表
开始编写-drl文件
1. 先来创建一个规则文件:helloworld.drl
package hello.world
rule "Hello-World"
when
eval(true);
then
System.out.println("HelloWorld");
end
- package:包,和java 的包一样,与kbase中的package一一对应
- rule: 规则,一个规则文件中可以有多个规则 但是Id不能一致
- import: 导入,和Java的包导入是一样
- when: 和Java中的if一样的,用于判断
- then: 当when中条件为真则会执行then
- end:和rule一对,表示规则结束
2. 创建Drools配置文件:META-INF/kmodule.xml
drools会默认从META-INF下读取对应的kmodule.xml,来进行初始化drools
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://www.drools.org/xsd/kmodule">
<kbase name="rules" packages="hello.world">
<ksession name="helloWorld"/>
</kbase>
</kmodule>
3. 编写Java代码执行引擎
package cn.lonecloud.drools.chp1;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
public class HelloWorldMain {
public static void main(String[] args) {
//创建kieService
KieServices kieServices = KieServices.Factory.get();
//获取Kie容器
KieContainer kieClasspathContainer = kieServices.getKieClasspathContainer();
//从容器中获取ksession ->ksession里面的name
KieSession helloWorld = kieClasspathContainer.newKieSession("helloWorld");
//运行该kieSession下的所有规则
int i = helloWorld.fireAllRules();
System.out.println("一共运行了"+i+"条规则");
helloWorld.dispose();
}
}
- 运行结果:
HelloWorld
总结:
通过本次学习,从零开始学习drools,并对其基本概念进行了解