Posted on 2009-05-20 12:37
zolly 閱讀(1502)
評論(0) 編輯 收藏
規則引擎出現的目的:
復雜企業級項目的開發以及其中隨外部條件不斷變化的業務規則(business logic),迫切需要分離商業決策者的商業決策邏輯和應用開發者的技術決策,并把這些商業決策放在中心數據庫或其他統一的地方,讓它們能在運行時(即商務時間)可以動態地管理和修改從而提供軟件系統的柔性和適應性。規則引擎正是應用于上述動態環境中的一種解決方法。
規則引擎出現的相關背景:
企業管理者對企業級IT系統的開發有著如下的要求:(1)為提高效率,管理流程必須自動化,即使現代商業規則異常復雜(2)市場要求業務規則經常變化,IT系統必須依據業務規則的變化快速、低成本的更新(3)為了快速、低成本的更新,業務人員應能直接管理IT系統中的規則,不需要程序開發人員參與。
而項目開發人員則碰到了以下問題:(1)程序=算法+數據結構,有些復雜的商業規則很難推導出算法和抽象出數據模型(2)軟件工程要求從需求->設計->編碼,然而業務規則常常在需求階段可能還沒有明確,在設計和編碼后還在變化,業務規則往往嵌在系統各處代碼中(3)對程序員來說,系統已經維護、更新困難,更不可能讓業務人員來管理。
什么是業務規則:
一個業務規則包含一組條件和在此條件下執行的操作,它們表示業務規則應用程序的一段業務邏輯。業務規則通常應該由業務分析人員和策略管理者開發和修改,但有些復雜的業務規則也可以由技術人員使用面向對象的技術語言或腳本來定制。
業務規則的理論基礎是:設置一個或多個條件,當滿足這些條件時會觸發一個或多個操作。
什么是規則引擎:
規則引擎由推理引擎發展而來,是一種嵌入在應用程序中的組件,實現了將業務決策從應用程序代碼中分離出來,并使用預定義的語義模塊編寫業務決策。接受數據輸入,解釋業務規則,并根據規則做出業務決策。
規則引擎的算法:
大部分規則引擎產品的算法,基本上都來自于Dr. Charles Forgy在1979年提出的RETE算法及其變體,Rete算法是目前效率最高的一個Forward-Chaining推理算法,Drools項目是Rete算法的一個面向對象的Java實現,Rete算法其核心思想是將分離的匹配項根據內容動態構造匹配樹,以達到顯著降低計算量的效果。
Java規則引擎API(JSR-94)
Java規則引擎API由javax.rules包定義,是訪問規則引擎的標準企業級API。Java規則引擎API允許客戶程序使用統一的方式和不同廠商的規則引擎產品交互,就像使用JDBC編寫獨立于廠商訪問不同的數據庫產品一樣。
原文請參考:
http://www.ibm.com/developerworks/cn/java/j-java-rules/#N10041 (Java規則引擎與其API(JSR-94))