摘要 Java 規則引擎是嵌入 Java 程式的組件,任務是將提交的 Java 資料物件與引擎載入的業務規則測試比對,激活符合當前資料狀態的業務規則,依規則宣告的執行邏輯觸發應用程式對應操作。
引言 Java 社群推動新技術——Java 規則引擎。可將商業決策者的決策邏輯與開發者的技術決策分離,置於中心資料庫或統一位置,運行時動態管理修改,為企業靈活性與競爭力提供技術支撐。
Java 規則引擎源於 RBES,屬專家系統一分支,屬人工智慧範疇,模擬人類推理,用試探性方法推理並用人類可理解術語解釋結論。RBES 包含三部分:Rule Base(知識庫)、Working Memory(事實庫)、Inference Engine(推理引擎),結構如圖 1。

圖 1 基於規則的專家系統構成
推理引擎含三部份:模式匹配器、議程、執行引擎。推理引擎決定哪些規則滿足事實或目標並授予優先級,滿足者加入議程。模式匹配器決定選擇執行哪規則、何時執行;議程管理執行次序;執行引擎負責執行規則與其他動作。
對應人類思維,推理引擎有兩種推理方式:演繹法與歸納法。演繹法從初始事實出發不斷應用規則得出結論;歸納法依假設尋找符合事實。Rete 演算法是目前最高效的 Forward-Chaining 推理演算法,許多 Java 規則引擎基於此演算法。
推理步驟:(1) 初始資料輸入 Working Memory。(2) Pattern Matcher 比較規則庫規則與資料。(3) 若執行規則衝突(同時激活多規則),放入衝突集合。(4) 解決衝突,激活規則按序放入 Agenda。(5) 執行引擎執行 Agenda 中規則。重複 2-5 直到 Agenda 規則執行完畢。
規則引擎依規則過濾條件判定能否匹配運行時即時條件來執行規定動作。四個基本概念:
協同工作流程(圖 2):四階段——信息服務接收事件轉換為信息元→傳給隊列管理器→規則引擎接收並應用自身攜帶規則執行→直到隊列無信息元。
