ZT - WebSphere ILOG JRules 規則引擎執行模式簡介(3)

saintsiro發表於2010-08-08
選擇合適的執行模式 你可以為規則流中的每一個規則任務選擇執行模式,預設情況下,規則任務採用 Reteplus 執行模式。為了達到最佳效能,您可能需要選擇其他的執行模式,以更好的適應特定規則任務中的規則。 通常要確定規則任務應該使用哪種執行模式,你需要分析規則任務中各個規則的結構,以及它們執行何種型別的業務處理。 為了更好的作出決策,您需要回答一下這些問題: 您的業務規則針對何種型別的應用? 你的業務規則使用什麼型別的物件? 規則執行的影響是什麼? 規則條件中使用什麼型別的測試? 您的業務規則使用了什麼樣的優先設定? 您的業務規則針對何種型別的應用? 根據規則任務中業務邏輯的目的不同,所選擇的執行模式也各異。 一致性檢查、校驗 鬆散關聯的規則檢查一系列條件以產生 GO /NOGO 或類似限制的結果。一致性業務規則的應用通常用於承保,欺詐檢測,資料驗證和表單驗證。這種型別的應用中的業務規則通常會有一個是或不是的結果並提供一些關於這個決定的解釋。 對於這種型別的應用,推薦使用順序或者 Fastpath 執行模式。 計算 緊密關聯的規則,用來計算一個複雜物件模型的度量。計算型業務規則應用程式通常用於評分、定級,合同和分配。這種應用中的業務規則將針對特定物件進行不同運算並據此提供一個最終結果(或品級)。 對於這種型別的應用,推薦使用 RetePlus 執行模式。 相關性 緊密相關的規則,從一組物件中抽取資訊,從而計算一些複雜的資料。相關性業務規則的應用程式通常用於計費。這種型別中的業務規則通常需要插入資訊。 對於這種型別的應用,推薦使用 RetePlus 或 Fastpath 執行模式。 有狀態會話 強烈的關聯引擎的狀態會期活動,相互關聯的規則。有狀態應用通常用於報警過濾和相關性,圖形使用者介面定製,以及網頁導航。 對於這種型別的應用,推薦使用 RetePlus 執行模式。 你的業務規則使用什麼型別的物件? 根據您的規則中所使用的物件的不同,所選擇的執行模式也各異。 Working memory 物件或規則集引數 如果您的規則中使用的物件是透過規則集傳入的,那麼建議您選擇順序或 Fastpath 執行模式。如果這些物件是您插入到 working memory 中的,那麼建議您選擇 RetePlus 或 Fastpath 執行模式。 當規則操作的不是相同的物件時,我們稱之為異構繫結,當遇到異構繫結時,這些規則的條件部分可能會有不同,例如: 表 1. 異構繫結 Rule1 when{A();B()} ... Rule2 ... when{A()} ... Rule3 ... when{B()} ... 如果您的規則採用了異構繫結,那麼建議您使用 RetePlus 或 Fastpath 執行模式。 當規則操作的物件相同(相同型別相同數量)僅僅是測試條件不同時,我們稱之為同構繫結,例如: 表 2. 同構繫結 Rule1 ... when{Person(age == 12);} ... Rule2 ... when{Person(age > 20);} ... 如果您的規則採用了同構繫結,那麼建議您選擇順序執行模式。 規則執行的影響是什麼? 根據您的規則執行所產生的影響的型別,所選擇的執行模式也各異。 對 Working memory 進行修改 如果規則的執行部分透過使用 IRL insert、retract 或者 update 關鍵字操作 working memory 物件,那麼你必須要使用 RetePlus 執行模式。因為這些關鍵字需要修改 working memory,並期望規則引擎重新評估後續的規則。如果您選擇其他執行模式,規則引擎將不會在工作區修改之後重新評估後續規則。 規則鏈 所謂規則鏈即規則的執行部分將觸發工作區或者引數的更改而且這些規則所匹配的物件本身沒有關聯。 例如有這樣的規則: 金卡客戶訂單超過 5000 元,升級為鑽石客戶 鑽石客戶訂單超過 5000 元,享受 75 折優惠 可以看到這兩個規則之間存在規則鏈,因為它們的模式匹配基於兩個不同的物件——客戶和訂單,並且訂單的多少將導致客戶物件級別的變化。 一般來說,如果您知道您的規則的執行部分將引發其他規則的執行,那麼您應該使用 RetePlus 執行模式。 規則條件中使用什麼型別的測試? 根據您的規則中使用什麼型別的條件,所選擇的執行模式也各異。 測試需要查詢工作區 如果您的規則的條件使用 IRL exist 關鍵字驗證 working memory 中否存在一個物件或使用 collect 關鍵字從工作區中收集一些物件而不提供 from 或 in 在條件的構造中,那麼我們建議您使用 RetePlus 或者 Fastpath 執行模式。 測試條件具有特定規律 如果您的規則的測試條件具有一致的模式或順序,就像決策表所使用的測試,那麼我們建議您使用 Fastpath 執行模式。 如果測試條件的順序沒有規則,則使用 RetePlus 或者順序執行模式。 您的業務規則使用了什麼樣的優先設定? 如果您的規則設定了靜態優先順序,可以使用任何執行模式。然而如果您設定的是動態的優先順序即優先順序被定義成一個表示式,則您只能選擇 RetePlus 執行模式。 小結 您可以參考下表來決定為您的任務選擇執行模式: 表 3. 選擇執行模式 規則任務型別 RetePlus Sequential Fastpath 一致性檢查、校驗 × √ √ 計算型應用 √ × × 相關性應用 √ × √ 有狀態型應用 √ × × 使用 Working Memory 物件 √ √ √ 規則鏈 √ × × 對 Working Memory 中的物件進行存在性和集合性測試 √ √ √ 測試條件具有一致性 × × √ 異構繫結 √ × √ 動態優先順序 √ × × 動態規則選擇 √ √ × 大量規則聚合 × √ √[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16896827/viewspace-1036450/,如需轉載,請註明出處,否則將追究法律責任。

相關文章