欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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 來校驗(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)文章

最新評(píng)論