亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java基于drools做規(guī)則校驗的實現

 更新時間:2024年03月07日 08:28:44   作者:編程經驗分享  
工作中需要開發(fā)一個規(guī)則服務,提供各種規(guī)則,本文主要介紹了Java基于drools做規(guī)則校驗的實現,具有一定的參考價值,感興趣的可以了解一下

需求

工作中需要開發(fā)一個規(guī)則服務,提供各種規(guī)則,每條規(guī)則由不同的校驗條件以及返回值構成。配置好的規(guī)則可以提供給其他服務使用,做各種業(yè)務校驗。

實現

基于drools規(guī)則引擎實現

根據不同的規(guī)則,可以動態(tài)地生成不同的drl

客戶端傳參,提供相應的條件值

得到drl和輸入參數后,便可以用 drools 來校驗規(guī)則是否通過,以及通過后相應的業(yè)務處理了

代碼

pom

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

使用示例

public class DynamicRule {

    public static void main(String[] args) {
        //業(yè)務代碼處理后得到的drl
        String drl =
                "import java.util.Map;\n" +
                "import java.util.HashMap;\n" +
                "import java.util.List;\n" +
                "import java.util.ArrayList;\n" +

                "global java.util.HashMap returnObj\n" +

                "rule \"test\"\n" +
                "when\n" +
                "    $m : Map()\n" +
                "    $o : Object($m[\"name\"].equals(\"abc\") && $m[\"age\"] >= 18)\n" +
                "then\n" +
                "    System.out.println($m);\n" +
                "    returnObj.put(\"result\", true);\n" +
                "end";

        KieSession kieSession = getKieSession(drl);
        Map<String, Object> returnObj = new HashMap<>();
        kieSession.setGlobal("returnObj", returnObj);

        //校驗的條件值
        Map<String, Object> data = new HashMap<>();
        data.put("name", "abc");
        data.put("age", 17);
        kieSession.insert(data);
        kieSession.fireAllRules();
        kieSession.dispose();

        if (Boolean.TRUE.equals(returnObj.get("result"))) {
            System.out.println("success");
        } else {
            System.out.println("fail");
        }
    }

    public static KieSession getKieSession(String drl) {
        KieHelper kieHelper = new KieHelper();
        kieHelper.addContent(drl, ResourceType.DRL);

        return kieHelper.build().newKieSession();
    }

}

到此這篇關于Java 基于 drools 做規(guī)則校驗的文章就介紹到這了,更多相關Java 基于 drools 做規(guī)則校驗內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • Mybatis 中的insertOrUpdate操作

    Mybatis 中的insertOrUpdate操作

    這篇文章主要介紹了Mybatis 中的insertOrUpdate操作,代碼簡單易懂,非常不錯需要的的朋友參考下
    2016-12-12
  • 詳解快速排序算法中的區(qū)間劃分法及Java實現示例

    詳解快速排序算法中的區(qū)間劃分法及Java實現示例

    這篇文章主要介紹了詳解快速排序算法中的區(qū)間劃分法及Java實現示例,文中分別介紹了快排時兩種區(qū)間劃分的思路,需要的朋友可以參考下
    2016-04-04
  • Spring中Bean初始化和銷毀的方式總結

    Spring中Bean初始化和銷毀的方式總結

    這篇文章主要為大家整理了Spring中Bean初始化和銷毀的多種方式,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以了解一下
    2023-04-04
  • SpringBoot設置Json返回字段為非空問題

    SpringBoot設置Json返回字段為非空問題

    這篇文章主要介紹了SpringBoot設置Json返回字段為非空問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • java數據結構基礎:順序隊列和循環(huán)隊列

    java數據結構基礎:順序隊列和循環(huán)隊列

    下面小編就為大家分享一篇java隊列實現方法(順序隊列,循環(huán)隊列),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-08-08
  • Hibernate緩存機制實例代碼解析

    Hibernate緩存機制實例代碼解析

    這篇文章主要介紹了Hibernate緩存機制實例代碼解析,介紹了查詢緩存,一級二級緩存等內容,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • SpringMVC中的HandlerMapping和HandlerAdapter詳解

    SpringMVC中的HandlerMapping和HandlerAdapter詳解

    這篇文章主要介紹了SpringMVC中的HandlerMapping和HandlerAdapter詳解,在Spring MVC中,HandlerMapping(處理器映射器)用于確定請求處理器對象,請求處理器可以是任何對象,只要它們使用了@Controller注解或注解@RequestMapping,需要的朋友可以參考下
    2023-08-08
  • Java畢業(yè)設計實戰(zhàn)之健身俱樂部管理系統的實現

    Java畢業(yè)設計實戰(zhàn)之健身俱樂部管理系統的實現

    這是一個使用了java+SSM+Mysql+Jsp開發(fā)的健身俱樂部管理系統,是一個畢業(yè)設計的實戰(zhàn)練習,具有俱樂部管理該有的所有功能,感興趣的朋友快來看看吧
    2022-02-02
  • Java實戰(zhàn)入門之雙色球彩票小游戲

    Java實戰(zhàn)入門之雙色球彩票小游戲

    這篇文章主要介紹了Java實戰(zhàn)入門之雙色球彩票,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Java 括號匹配問題案例詳解

    Java 括號匹配問題案例詳解

    這篇文章主要介紹了Java 括號匹配問題案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08

最新評論