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,並對其基本概念進行了解