2010-03-16 25 views

回答

6

規則引擎可以封裝業務邏輯,通常以聲明方式。這避免了在軟件中定製編碼業務邏輯的需要。

規則引擎的算法是怎樣的規則匹配和觸發實現的,所以它的實現細節,而實際解決問題本身。算法可能有不同的非功能優勢或劣勢。規則引擎算法的常見示例是Rete Algorithm,用於Java規則引擎JESSDrools中。

+0

+1不錯的定義 – JohnIdol 2010-03-16 22:01:13

1
  • 的問題僅僅是 傳統代碼過於繁瑣:這個問題可能不是很複雜,但你不能看到它建立的非易碎的方式。

  • 問題是超越了任何明顯的算法基於解決方案:這是解決一個複雜的問題,有沒有明顯的傳統解決方案或基本問題還沒有完全理解。

  • 邏輯經常變化:邏輯本身可能很簡單(但並非必須),但規則經常變化。在很多組織中,軟件發佈很少,而且規則可以幫助提供合理安全的方式所需和預期的「敏捷性」。

  • 域專家(或業務分析師)是隨時可用的,但是非技術性的。

this site

0

採取了規則引擎計算的決定,基於一個或多個輸入參數。

0

規則引擎往往試圖解決經常變更或有時快速,輕鬆地定義不清的問題。

它們並不十分複雜,許多實現都表現出嚴重的性能和擴展性問題。

1

在最低水平,向前鏈規則引擎可以在大致有以下幾種方式構建的規則集(通常是大的規則集):

if (Condition A) {assert (Condition B)} 
if (Condition C) {assert (Condition B)} 
if (Condition B) {do something} 

的條件下也可以有參數:

if (Condition A (X, Y)) {assert (Condition B (X)} 
if (Condition C (X)) {assert (Condition B (X)} 
if (Condition B (X)) {do something with X} 

這些鏈條可以像你想要的一樣深。 Rete algorithm及其變體允許大規則集的高效處理。

規則引擎解決的問題是將規則集的維護與應用程序分離 - 無需重新編譯應用程序即可重新配置規則。雖然(理論上)非技術分析師或中小企業能夠保持規則集自己,在實踐中需要一點技術知識,以避免搬起石頭砸自己的腳在一個複雜的規則集 - 和規則引擎是位毫無意義,如果你不沒有一個很大的規則集。

如果規則引擎的閃光點就是規則集大且經常變化,或在那裏它們被內置到打包的應用程序和用於配置以支持客戶的具體業務規則或工作流程觸發的應用。