日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Drools规则引擎使用入门

發(fā)布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Drools规则引擎使用入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

參考書籍:《Drools規(guī)則引擎技術(shù)指南》來志輝 | 微信讀書

最簡單的示例

規(guī)則引擎的配置方式最基本的方式有2種,一個是靜態(tài)配置文件,另一個是動態(tài)加載

靜態(tài)配置文件
動態(tài)加載配置

(一) 靜態(tài)配置文件方式


  • 新建一個空maven項目
  • resoures下建META-INF目錄,并新建kmodule.xml文件
  • resoures下建reules.collect文件夾, 并新建一個drools-rule1.drl文件
  • src 下新建com.pojo包路徑,新建一個Person類
  • 建立一個測試類,這里是MainTest





  • 以下幾個是文件內(nèi)容詳解

    pom文件引用maven包

    <dependency><groupId>org.drools</groupId><artifactId>drools-compiler</artifactId><version>7.10.0.Final</version> </dependency>

    kmodule.xml 文件內(nèi)容

    <?xml version="1.0" encoding="UTF-8" ?> <kmodule xmlns="http://www.drools.org/xsd/kmodule"><kbase name="rule_test1" packages="rules.collect"><ksession name="rule_test1_session"/></kbase></kmodule>

    drools-rule1.drl文件內(nèi)容

    package rules.collect //當前drl文件所在resources中的路徑 import com.pojo.Person //引用包是 Person 類的路徑名rule "test001"wheneval(true);thenSystem.out.println("Hello World");endrule "test002"when$p:Person(age>21,$n:name=="liuyb")then$p.setName("Banana");update($p);System.out.println("檢查姓名:"+$n);System.out.println("輸出引用對象 "+$p);end

    實體類Person內(nèi)容

    @Data public class Person {private int age;private String name; }

    測試代碼

    public static void main(String[] args) {KieServices factory = KieServices.Factory.get();KieContainer container = factory.getKieClasspathContainer();KieSession session = container.newKieSession("rule_test1_session");Person person = new Person();person.setName("liuyb");person.setAge(22);session.insert(person);int count = session.fireAllRules();System.out.println("總共執(zhí)行了條" + count + "規(guī)則");session.dispose(); }

    這樣靜態(tài)配置的方式就完成了, 執(zhí)行MainTest測試代碼




    (二) 動態(tài)配置加載

    這里是用字符串形式進行簡單使用示例

    將規(guī)則文件中的字符串全部拷貝出來,準備好

    實戰(zhàn)應(yīng)用中規(guī)則內(nèi)容比較少,可以通過數(shù)據(jù)庫字段進行存取,量特別大時候要使用寫配置文件的方式

    測試代碼

    public static void main(String[] args) {// 規(guī)則文本字符串String drlStr = "package rules.collect\n" +"import com.pojo.Person\n" +"\n" +"rule \"test001\"\n" +" when\n" +" eval(true);\n" +" then\n" +" System.out.println(\"Hello World\");\n" +"\n" +"end\n" +"\n" +"rule \"test002\"\n" +" when\n" +" $p:Person(age>21,$n:name==\"liuyb\")\n" +" then\n" +" $p.setName(\"Banana\");\n" +" update($p);\n" +" System.out.println(\"檢查姓名:\"+$n);\n" +" System.out.println(\"輸出引用對象 \"+$p);\n" +"\n" +"end";Person person = new Person();person.setName("liuyb");person.setAge(22);KieHelper helper = new KieHelper();helper.addContent(drlStr, ResourceType.DRL);KieSession kieSession = helper.build().newKieSession();kieSession.insert(person);kieSession.fireAllRules();kieSession.dispose();}

    直接運行即可

    總結(jié)

    以上是生活随笔為你收集整理的Drools规则引擎使用入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。