在數字化浪潮風起雲涌的當下,企業一直在追求業務規則的靈活性和響應速度。
規則引擎本質上是基於"條件-動作"規則集的系統,它的核心架構包含四大組件:規則庫(存儲業務規則)、工作內存(存放運行時數據)、規則執行引擎(匹配並觸發規則)、事件管理器(監聽外部事件)。當數據進入工作內存時,引擎通過Rete算法、LEAPS算法等高效匹配機制,動態識別滿足條件的規則,並按照優先級順序執行對應動作,形成"數據驅動-規則推理-動作執行"的閉環決策鏈。
為什麼需要規則引擎
解耦業務邏輯,實現敏捷開發
在這個快速變化的數字時代,業務規則需要頻繁調整才能適應市場需求。
一方面是為提高效率,另一方面,市場要求業務規則經常變化,IT系統必須能夠快速、低成本地適應這些變化。
更理想的情況是,業務人員能夠直接管理IT系統中的規則,減少程序開發人員的參與。
規則引擎是怎麼工作的
以JVS規則引擎為例,規則引擎的工作機制可拆解為數據輸入、規則匹配、決策執行、結果輸出四大核心環節。
系統架構設計
JVS採用“規則引擎+組件倉庫+執行器”三層架構:
• 規則層:負責解析配置文件,構建有向無環圖(DAG)表示流程拓撲。
• 組件層:管理所有業務組件的生命週期,支持AOP切面注入(如日誌、重試、熔斷)。
• 執行層:基於事件驅動模型,支持單線程順序執行、多線程併發、響應式編程等多種模式。
核心工作流程
數據輸入
• 數據來源:支持多種數據形態,包括數據庫(MySQL、MongoDB等)、Excel、API接口、低代碼數據模型等。
• 數據存儲:數據被加載至工作內存(Working Memory),作為規則匹配的事實(Fact)基礎。
規則匹配
• 規則庫加載:規則以決策流、規則集、評分卡等形式定義,存儲在規則庫中。JVS規則引擎支持通過拖拽方式編排決策流,組合條件分支、多元計算等節點。
1.從左側組件庫拖入“開始”節點、“判斷”節點、“規則”節點、“結束”節點等。
2.用連線連接節點,形成流程圖。例如,在“判斷”節點中設置條件:如果 訂單金額 >= 100 或 用户等級 == "VIP"。
3.根據條件結果(是/否),設置不同的輸出路徑,比如一條路徑指向“執行包郵”操作,另一條指向“不包郵”操作。
• 模式匹配:使用Rete算法高效匹配規則條件與工作內存中的事實。例如,在電商促銷規則中,系統會匹配用户積分、歷史消費記錄等條件。
決策執行
• 動作執行:匹配成功的規則觸發預定義動作,比如修改數據、調用API、生成日誌等。
• 變量管理:JVS規則引擎支持基礎變量(如數值、字符串)、複合變量(如對象集合)、SQL變量(自定義查詢),通過作用域機制實現數據隔離與共享。
sql變量
可以在決策中,創建私有的變量或者引入已經存在的變量
• 動態發佈:當規則修改時,系統可以自動生成新版本(比如v2、v3),通過發佈操作無縫切換,避免業務中斷。例如,電商促銷規則調整後,新版本規則立即生效,無需重啓系統。
結果輸出
• 結果反饋:決策結果輸出至數據源或下游系統,形成閉環。例如,風控規則執行結果會同步至審計日誌和監控平台。
• 日誌與監控:系統會詳細記錄規則執行上下文(輸入參數、節點耗時、異常堆棧),通過查看執行日誌,業務人員和技術人員可以清晰地瞭解決策依據,快速定位問題,並基於數據對規則進行持續優化
在線demo:http://rules.bctools.cn
gitee:https://gitee.com/software-minister/jvs-rules