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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringMVC中的HandlerMapping和HandlerAdapter詳解
這篇文章主要介紹了SpringMVC中的HandlerMapping和HandlerAdapter詳解,在Spring MVC中,HandlerMapping(處理器映射器)用于確定請求處理器對象,請求處理器可以是任何對象,只要它們使用了@Controller注解或注解@RequestMapping,需要的朋友可以參考下2023-08-08Java畢業(yè)設計實戰(zhàn)之健身俱樂部管理系統的實現
這是一個使用了java+SSM+Mysql+Jsp開發(fā)的健身俱樂部管理系統,是一個畢業(yè)設計的實戰(zhàn)練習,具有俱樂部管理該有的所有功能,感興趣的朋友快來看看吧2022-02-02