引言
作為 JRules 的核心組件,規則引擎決定了在規則集的執行過程中,哪些業務規則會被執行,以及以何種順序執行。理解併合理選擇規則引擎的運行模式對於業務規則的正確應用有着重要意義。文章首先介紹了 JRules 規則引擎的三種運行模式,然後闡述了如何針對特定的應用場合選擇合適的運行模式,最後展示了如何在 Rule Studio 中為 rule task 設置運行模式。本文需要讀者對 WebSphere ILOG JRules 以及 Rule Studio 有一定了解。
背景
隨着信息技術在企業的廣泛的應用,企業 IT 部門所開發和維護的應用系統也越來越複雜,如何使應用系統能夠更快的響應的企業業務的變化已成為企業 IT 發展的重要挑戰之一。業務規則管理系統(Business Rule Management System)正是解決上述問題的最佳方案,BRMS 將以程序代碼的形式固化在應用系統中的業務邏輯分離、抽象出來,被分離的業務邏輯以業務規則形式存儲在規則庫中,並通過規則引擎進行執行;同時,BRMS 還提供一系列的規則開發和管理工具供開發人員和業務人員來創建、修改、查詢、部署和管理這些業務規則。ILOG JRules 是面向 Java 環境的完整的業務規則管理系統 (BRMS)。它提供了所有必要的工具 , 用於對整個企業的業務規則進行管理 , 包括規則建模、規則編寫、規則測試、規則部署、規則執行和規則維護。
規則引擎簡介
規則引擎是 BRMS 中的核心模塊,它旨在處理業務規則集合與業務數據關係匹配,並通過選擇規則匹配算法來得出最後的計算結果 [1]。我們知道,業務規則管理技術能將業務邏輯從固化在代碼中剝離出來,使之能像管理業務數據一樣管理業務規則,因此從系統應用設計的角度看,規則引擎可視為一座連接應用系統與業務規則之間的重要橋樑。
規則引擎由基於規則的專家系統中的推理引擎發展而來,通常包括規則庫、Working Memory 和推理引擎(Inference Engine)。在規則引擎執行過程中,數據將首先被送入到 Working Memory,然後由推理引擎將 Working Memory 中的數據對象和規則庫中的規則進行比較,得到符合條件的規則並執行。因此,規則引擎運行模式的核心在於如何高效地匹配出符合條件的規則,規則條件匹配的效率即決定了引擎的性能。
JRules 規則引擎運行模式
JRules 規則引擎根據規則的不同應用場景和業務規則的特點提供了三種不同的運行模式:RetePlus、Sequential 和 FastPath。
RetePlus
Rete 是目前主流的規則引擎模式匹配算法,RetePlus 則是 JRules 在 Rete 算法上的擴展和優化,也是 JRules 規則引擎默認的運行模式。RetePlus 運行模式為 ILOG 規則引擎提供了種種手段,用以盡量減少需要加以評估的規則和條件的數量,計算哪些規則應當執行,並確定這些規則的執行順序。在 RetePlus 算法中,規則引擎使用 Working memory 和 Agenda 來存放和操作應用程序對象。Working memory 中包含的應用程序對象的引用,Agenda 則按順序列出將要執行的規則實例。如圖 1 所示:
圖 1. RetePlus 執行模式


下載 (27.86 KB)
2010-8-18 14:09
RetePlus 模式的執行過程如下:
規則引擎依據 Working Memory 中的數據對象來匹配規則集中規則的條件部分。在模式匹配過程中,RetePlus 首先創建出以規則條件測試之間的語義關係為基礎的網絡(步驟 1),然後將匹配的規則實例化並添加到 Agenda 中,隨後對 Agenda 中的規則按照一定原則進行排序(步驟 2)。
執行 Agenda 中的規則實例,即執行規則的動作(Action)部分。同時,規則實例的執行也會影響 Working Memory 中的數據對象,主要方式有:(步驟 3):
往 Working Memory 中加入一個新的對象
移除 Working Memory 中現有對象
修改現有對象的屬性
以上過程將不斷重複,直至執行完 Agenda 中所有規則實例。
在 RetePlus 算法中每當 Working Memory 被修改,規則引擎將重複模式匹配的過程。它在每次規則執行數據修改後重新評估每個規則匹配。這可能會改變 Agenda 中的規則實例。因此,RetePlus 是漸進的和數據驅動的。這些特點使 RetePlus 在計算和關聯性類型的應用方面擁有卓越的性能。
Sequential
順序運行模式,顧名思義,即規則引擎按順序執行 rule task 中符合條件的所有規則。如圖 2 所示:
圖 2. 順序執行模式


下載 (49.89 KB)
2010-8-18 14:09
具體執行過程如下:
規則引擎根據輸入參數以及 working memory 中的對象集合和規則的條件部分進行匹配。每次匹配都將生成一個規則實例並立即運行。(步驟 1)
當規則實例被執行後,它有可能設置屬性或規則集輸出參數的值。(步驟 2)
順序算法執行的規則是無狀態的。順序算法的運行就像堆棧一樣,匹配的規則只會運行一次,而不會再次評估。因此在順序模式下,規則中不能使用類似”至少有一個 < 詞彙 >”、”如下對象的數目:< 詞彙 >”等等跟 working memory 中對象有關係的存在性條件(existence conditions),除非這個對象是集合類型。
順序模式的特性決定了其在校驗和一致性等類型的應用中有良好的性能表現。
順序處理可以通過規則任務的算法屬性來指定,通常可以在 Rule Studio 中顯式的選擇。
FastPath
Fastpath 運行模式是增強型的順序運行模式,和順序模式類似,Fastpath 也是順序運行,但是它同時還能和 RetePlus 模式一樣在進行模式匹配時檢測規則條件的語義關係。
圖 3.FastPath 執行模式


下載 (26.95 KB)
2010-8-18 14:09
在 Fastpath 模式中,規則引擎可以通過 working memory 引用應用數據對象或規則集參數。與 Reteplus 類似,在模式匹配時 Fastpath 同樣創建以規則條件測試之間的語義關係為基礎的網絡(步驟 1)。
每次匹配,將創建一個規則實例並立即執行。規則實例執行後,它可能修改 working memory 中的對象,但是這些修改不會影響其它規則的執行,並且規則引擎也不會重複模式匹配的過程(步驟 2)。
Fastpath 綜合了 Reteplus 的模式匹配和順序運行模式的規則執行的特性,從這個意義上來說,它在關聯型應用和校驗類應用中都有較好表現。
和順序運行模式一樣,Fastpath 運行模式也是無狀態的,適合在大量單獨執行簡單判定或少量交叉測試的規則上進行對象匹配。這樣一些規則集可以在沒有任何 agenda 支持下很好的按順序執行。除了作為一種變異的順序模式的優勢,Fastpath 運行模式的目的是進一步優化一致性和校驗性類型規則的執行,通常這些類型的規則佔據了商業規則的絕大部分。
選擇合適的運行模式
你可以為規則流中的每一個規則任務選擇運行模式,默認情況下,規則任務採用 Reteplus 運行模式。為了達到最佳性能,您可能需要選擇其他的運行模式,以更好的適應特定規則任務中的規則。
通常要確定規則任務應該使用哪種運行模式,你需要分析規則任務中各個規則的結構,以及它們執行何種類型的業務處理。
為了更好的作出決策,您需要回答一下這些問題:
您的業務規則針對何種類型的應用?
你的業務規則使用什麼類型的對象?
規則執行的影響是什麼?
規則條件中使用什麼類型的測試?
您的業務規則使用了什麼樣的優先設置?
您的業務規則針對何種類型的應用?
根據規則任務中業務邏輯的目的不同,所選擇的運行模式也各異。
一致性檢查、校驗
鬆散關聯的規則檢查一系列條件以產生 GO /NOGO 或類似限制的結果。一致性業務規則的應用通常用於承保,欺詐檢測,數據驗證和表單驗證。這種類型的應用中的業務規則通常會有一個是或不是的結果並提供一些關於這個決定的解釋。
對於這種類型的應用,推薦使用順序或者 Fastpath 運行模式。
計算
緊密關聯的規則,用來計算一個複雜對象模型的度量。計算型業務規則應用程序通常用於評分、定級,合同和分配。這種應用中的業務規則將針對特定對象進行不同運算並據此提供一個最終結果(或品級)。
對於這種類型的應用,推薦使用 RetePlus 運行模式。
相關性
緊密相關的規則,從一組對象中抽取信息,從而計算一些複雜的數據。相關性業務規則的應用程序通常用於計費。這種類型中的業務規則通常需要插入信息。
對於這種類型的應用,推薦使用 RetePlus 或 Fastpath 運行模式。
有狀態會話
強烈的關聯引擎的狀態會期活動,相互關聯的規則。有狀態應用通常用於報警過濾和相關性,圖形用戶界面定製,以及網頁導航。
對於這種類型的應用,推薦使用 RetePlus 運行模式。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| TOP | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
在 Rule Studio 中為您的任務設置運行模式
JRules 支持在規則任務級別上設置運行模式,因此,您可以在 Rule Studio 中為規則流中的每一個規則任務指定不同的運行模式,默認情況下,規則任務將採用 Reteplus 模式執行。為規則任務設置運行模式,首先需要代開需要設置的規則任務所在的規則流;選中需要設置的規則任務。
圖 4. 規則流


下載 (9.65 KB)
2010-8-18 14:12
這時在規則任務的屬性窗口中,將可以看到該規則任務所使用的規則執行的算法,默認是使用 RetePlus,您可以在這裡修改為 Sequential 或者 FastPath。
圖 5. 規則任務屬性


下載 (25.21 KB)
2010-8-18 14:12
結束語
JRules 規則引擎提供了 RetePlus、Sequential 和 FastPath 三種運行模式,以適應不同的應用需求,獲得最優性能。在基於業務規則引擎的應用中,需要根據不同應用的特點,合理地組織和編排業務規則,選擇合適的運行模式,有助於更好的發揮規則引擎的效能。
以下文章點擊率最高
Loading…