最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java基于drools做規(guī)則校驗(yàn)的實(shí)現(xiàn)

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

需求

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

實(shí)現(xiàn)

基于drools規(guī)則引擎實(shí)現(xiàn)

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

客戶端傳參,提供相應(yīng)的條件值

得到drl和輸入?yún)?shù)后,便可以用 drools 來(lái)校驗(yàn)規(guī)則是否通過,以及通過后相應(yīng)的業(yè)務(wù)處理了

代碼

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è)務(wù)代碼處理后得到的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);

        //校驗(yàn)的條件值
        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();
    }

}

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

相關(guān)文章

  • 在非Spring管理對(duì)象中注入Spring Bean的解決方案

    在非Spring管理對(duì)象中注入Spring Bean的解決方案

    在SpringBoot開發(fā)中,我們習(xí)慣了通過@Autowired/@Resource等注解輕松注入依賴 Bean,但在WebSocket、定時(shí)任務(wù)等場(chǎng)景下,會(huì)遇到一個(gè)核心問題:非Spring創(chuàng)建的對(duì)象無(wú)法直接注入 Spring Bean,所以本文給大家介紹了在非Spring管理對(duì)象中注入Spring Bean的解決方案
    2026-02-02
  • SpringBoot實(shí)現(xiàn)消息推送功能的示例代碼

    SpringBoot實(shí)現(xiàn)消息推送功能的示例代碼

    項(xiàng)目開發(fā)中,實(shí)時(shí)消息推送已成為提升用戶體驗(yàn)的關(guān)鍵技術(shù),無(wú)論是聊天應(yīng)用、通知系統(tǒng)、實(shí)時(shí)數(shù)據(jù)展示,還是協(xié)同辦公場(chǎng)景,都需要服務(wù)器能夠主動(dòng)向客戶端推送消息,本文將詳細(xì)介紹SpringBoot實(shí)現(xiàn)消息推送功能的具體指南,需要的朋友可以參考下
    2025-12-12
  • Java中SimpleDateFormat方法超詳細(xì)分析

    Java中SimpleDateFormat方法超詳細(xì)分析

    這篇文章主要給大家介紹了關(guān)于Java中SimpleDateFormat方法超詳細(xì)分析的相關(guān)資料,SimpleDateFormat 是一個(gè)以國(guó)別敏感的方式格式化和分析數(shù)據(jù)的具體類,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 基于Spring Boot 的小區(qū)人臉識(shí)別與出入記錄管理系統(tǒng)功能

    基于Spring Boot 的小區(qū)人臉識(shí)別與出入記錄管理系統(tǒng)功能

    文章介紹基于SpringBoot框架與百度AI人臉識(shí)別API的小區(qū)出入管理系統(tǒng),實(shí)現(xiàn)自動(dòng)識(shí)別、記錄及查詢功能,涵蓋技術(shù)選型、數(shù)據(jù)模型設(shè)計(jì)、接口開發(fā)與系統(tǒng)優(yōu)化方案,為智慧社區(qū)提供高效安全管理工具,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • spring boot里增加表單驗(yàn)證hibernate-validator并在freemarker模板里顯示錯(cuò)誤信息(推薦)

    spring boot里增加表單驗(yàn)證hibernate-validator并在freemarker模板里顯示錯(cuò)誤信息(推

    這篇文章主要介紹了spring boot里增加表單驗(yàn)證hibernate-validator并在freemarker模板里顯示錯(cuò)誤信息的相關(guān)資料,需要的朋友可以參考下
    2018-01-01
  • Spring的Eureka續(xù)約(心跳檢測(cè))詳解

    Spring的Eureka續(xù)約(心跳檢測(cè))詳解

    這篇文章主要介紹了Spring的Eureka續(xù)約(心跳檢測(cè))詳解,eureka?client每隔一定的時(shí)間,會(huì)給eureka?server發(fā)送心跳,保持心跳,讓eureka?server知道自己還活著,需要的朋友可以參考下
    2023-11-11
  • Java將Word文件轉(zhuǎn)為OFD文件

    Java將Word文件轉(zhuǎn)為OFD文件

    大家好,本篇文章主要講的是Java將Word文件轉(zhuǎn)為OFD文件,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 一種新的日期處理方式之JavaScript Temporal API

    一種新的日期處理方式之JavaScript Temporal API

    JavaScript Temporal API是一種為Web開發(fā)人員提供了一種新的處理日期和時(shí)間數(shù)據(jù)類型的方式。它的目的是使操作日期和時(shí)間更加簡(jiǎn)單和可靠,而且不用擔(dān)心歷史時(shí)區(qū)問題或全球化協(xié)調(diào)時(shí)間(UTC)之類的問題,感興趣的同學(xué)可以參考閱讀
    2023-05-05
  • java 輸入某年某月某日,判斷這一天是這一年的第幾天

    java 輸入某年某月某日,判斷這一天是這一年的第幾天

    這篇文章主要介紹了java 輸入某年某月某日,判斷這一天是這一年的第幾天,需要的朋友可以參考下
    2017-02-02
  • Spring Boot修改啟動(dòng)端口的方法

    Spring Boot修改啟動(dòng)端口的方法

    下面小編就為大家?guī)?lái)一篇Spring Boot修改啟動(dòng)端口的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-07-07

最新評(píng)論

灵川县| 忻城县| 红桥区| 百色市| 尼勒克县| 资中县| 巧家县| 宿州市| 丽江市| 洪洞县| 平武县| 依兰县| 永平县| 南安市| 玉溪市| 芜湖市| 稻城县| 河曲县| 县级市| 南平市| 哈巴河县| 牡丹江市| 大理市| 准格尔旗| 定安县| 兴义市| 平谷区| 南充市| 英吉沙县| 汪清县| 于都县| 册亨县| 临颍县| 云浮市| 象州县| 南阳市| 海宁市| 舒城县| 弋阳县| 浦城县| 阿坝|