摘要:規則引擎是一種嵌入在應用程序中的組件。起源于基于規則的專家系統。它可以在應用系統中分離商業決策邏輯和程序邏輯。目前的商用規則引擎,包括JBoss Rules,基本上都是基于Ret算法。文章先敘述了規則引擎的原理及Java規則引擎工作機制,然后介紹了Drools中改進后的Ret算法,最后以實例說明了如何在應用程序中使用JBossRules來管理規則。
關鍵詞:規則引擎;Rete算法;JBoss Rules;Drools
0 引言
任何軟件開發過程都是從需求到設計再到編碼的,企業應用系統也如此。在傳統企業應用系統開發中,業務規則是由用戶在需求分析階段提供,內嵌在程序代碼中,它使用復雜的if-else語句來構成,一旦開發完成,便不易變更。然而現實情況卻是業務規則往往頻繁地變更,往往在設計和編碼完成后還在變化,每一項規則的變化都需要開發人員對那些復雜的if-else語句進行修改,這無疑增加了系統的更新成本。正因為如此,所以企業管理者希望業務人員能夠直接管理應用系統中的規則,不需要程序開發人員的參與。但問題是,很多復雜的規則,對于開發人員也很難推導出算法和抽象出數據模型,且業務規則往往嵌在系統的各處代碼中,不可能讓非開發人員管理。于是規則引擎應運而生,它的出現給開發人員帶來了解決上述問題的契機。
1 業務規則及規則引擎
一個業務規則由一組條件和在此條件下執行的操作組成,它們表示業務規則應用程序的一段業務邏輯。業務規則通常應該由業務人員和策略管理者開發和修改,但有些復雜的業務規則也可以由技術人員使用面向對象的技術語言腳本來定制。業務規則的理論基礎是:設置一個或多個條件,當滿足條件時會觸發一個或多個操作。
規則引擎是一種嵌入在應用程序中的組件,它起源于基于規則的專家系統(RBES),而基于規則的專家系統又是專家系統的一個分支。專家系統屬于人工智能的范疇,它模仿人類的推理方式,使用試探性的方法進行推理。并使用人類能理解的術語解釋和證明它的推理結論。規則引擎的任務是把當前提交給引擎的數據對象與加載在引擎中的業務規則進行比較,激活那些符合當前數據狀態下的業務規則。根據業務規則中聲明的執行邏輯,對當前數據對象執行對應的操作。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。