Drools學習教程 - 1. 萬年HelloWorld


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();
    }
}

  1. 運行結果:
HelloWorld

總結:

通過本次學習,從零開始學習drools,並對其基本概念進行了解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM