通常我們都是把Drools作為嵌入式使用,但在微服務泛濫時代,還在老套的嵌入式顯然不符合微服務架構要求,本文分享一個把Drools作為微服務獨立部署的方案。
本方案基于Drools引擎微服務,提供REST接口。
- 1、可以動態部署Drools規則
- 2、規則存儲在RDBMS中
- 3、可以動態運行規則,運行模式有兩種,
- 3.1. 一種是直接輸入一組數據,運行規則后返回反結果
- 3.2. 一種模式是從源數據逐頁讀取數據,執行規則處理后,輸出結果到目標數據源中。
- 4、可以動態修改規則,修改后重新部署規則。
另外,我們還支持業務人員采用圖形方式配置規則(SourceRule),然后再編譯成Drools的規則文件,然后再部署到規則服務中。
定義:
- 1、domain:規則領域,定義規則的分組,比如:稅務計算,工資計算,考勤計算等。
- 每個domain內的所有規則會同時調用,比如有若干個工資計算規則,它們會按順序一起執行。
- 每個domain會有同一個數據源和數據目標配置。
- 2、SourceRule:基于可視化圖形,由業務人員定義的源規則,源規則會編譯成Drools規則文件,然后部署到規則服務中。
模塊結構:
-
- irmp-rule-api:提供REST接口定義,方便客戶端自己根據定義實現遠程客戶端,調用服務。
-
- irmp-rule-service:規則引擎服務提供模塊,提供規則引擎,規則存儲,規則執行等核心功能。
-
- irmp-rule-client:規則引擎客戶端,基于Spring-boot Rest Client框架,實現規則引擎客戶端,方便客戶端調用。
未完待續。。。
代碼鏈接:https://gitee.com/iisp_team/irmp-rule
依賴項目:分享系列項目的基礎項目