規則引擎

推理引擎

      推理引擎就是應用系統中用 來完成推理功能的模塊,也能夠稱做推理機。推理機通常包括調度器,執行器和一致性協調器三部分。調度器控制整個推理流程,使得推理能夠按照必定的流程進行下去;執行器執行調度器所選定的動做,而且負責讀取知識庫中的知識和全局黑板中的信息;一致性協調器保持推理中間結果的一致性,主要用於反向推理中。

     推理引擎根據知識表示的不一樣採起的控制策略也是不一樣的,在這裏咱們所實現的是基於產生式規則集的知識表示。選擇這種知識表示是由於其具備不少的優勢,尤爲是其易於理解、易於獲取、易於管理,而且在現今的大多數智能應用系統中都採用了這種知識表示方法。基於這種知識表示的推理引擎採用「識別-動做"的方式來循環執行規則。 java

規則引擎

      規則引擎由 推理引擎發展而來,是一種嵌入在應用程序中的組件 ,實現了將業務決策從應用程序代碼中分離出來,並使用預約義的語義模塊編寫業務決策。接受數據輸入,解釋業務規則,並根據業務規則作出業務決策。
      應用背景: 企業級管理者對企業IT系統的開發有着以下的要求:
         1.爲提升效率,管理流程必須自動化,即便現代商業規則異常複雜。
         2.市場要求業務規則常常變化,IT系統必須依據業務規則的變化快速、低成本的更新。
         3.爲了快速、低成本的更新,業務人員應能直接管理IT系統中的規則,不須要程序開發人員參與。
     使用規則引擎能夠經過下降實現複雜業務邏輯的組件的複雜性,下降應用程序的維護和可擴展性成本,其優勢以下:
       · 分離商業決策者的商業決策邏輯和應用開發者的技術決策;
       · 能有效的提升實現複雜邏輯的代碼的可維護性;
       · 在開發期間或部署後修復代碼缺陷;
       · 應付特殊情況,即客戶一開始沒有提到要將業務邏輯考慮在內;
       · 符合組織對敏捷或 迭代開發過程的使用;

      

      大多數規則引擎都支持規則的次序和規則衝突檢驗,支持簡單腳本語言的規則實現,支持通用開發語言的嵌入開發。目前業內有多個規則引擎可供使用,其中包括商業和開放源碼選擇。開源的表明是Drools,商業的表明是VisualRules ,iLog。 數據庫

      規則引擎是解析、調用、執行規則包的服務,目前VisualRules採用java語言來實現規則引擎,而且提供了java類接口、Socket、Servlet、SOAP等多種外部調用接口。其實Java類接口是全部這些接口的核心,其餘接口其實也是經過Java類接口來加以調用。考慮到最小化規則引擎,所以規則包的解析工做已經放在規則編輯時,預先進行了處理。規則引擎只處理規則包的調用和執行,同時爲規則包用到的 數據庫接口、Excel接口、內存表接口、Xml接口提供缺省的實現。
規則引擎執行原理      

     VisualRules規則引擎會根據規則包名稱,取得對應規則包編譯後的rsc文件。而後將rsc加載到內存中,生成規則包執行上下文。同時規則引擎將傳遞的參數傳遞到規則包執行上下文中,而後開始執行規則包。執行完畢後,再將規則包執行上下文中的數據,傳回給調用規則包的應用程序。整個執行原理很是簡單,所以最大限度的保證了規則運行平臺的穩定以及最佳的性能。 dom

       數據庫接口
      規則包的對象庫中,定義瞭如下一些 數據庫對象接口Database、Table、Select、View、Procedure。VisualRules規則引擎直接用JDBC來實現這些接口,最大限度的保證了 數據庫對象調用的性能。固然用戶能夠根據本身的須要,從新來實現這些 數據庫接口


      Excel接口        性能

      規則包須要調用的Excel接口主要是IExcelBook、IExcelSheet、IExcelTableSheet、IExcelXYSheet。VisualRules規則引擎採用POI來實現Excel接口。 spa


      內存表格接口
      規則包須要調用的內存表格接口爲Sheet,VisualRules採用Object[][]來實現內存表格接口的實現。


       Xml接口        htm

       規則包須要調用的XML接口爲Node。目前VisualRules採用Jdom來實現。 對象

      如何調用 接口

      規則引擎是外部Java程序調用規則包的一組Java類,其包含在engine.jar中。 外部Java程序調用規則包時只須要用到兩個類。一個是 com.flagleader.engine.RuleEngine 。另外一個是 com.flagleader.engine.RuleEngineFactory 。
      RuleEngineFactory是獲得規則引擎實例的工廠類。 一般代碼爲
      RuleEngine ruleEngine = RuleEngineFactory.newInstance().getRuleEngine();
     獲得規則引擎實例後,能夠調用規則引擎中的方法,主要是put、excute和get這三個方法。 put用於傳入須要傳入的值,excute用於運行指定的規則包,get用於獲得傳出的值。 通常的調用代碼爲:
           ruleEngine.put(傳入對象);
           ruleEngine.excute("規則包調用名");
           傳出對象 = ruleEngine.get("傳出對象名");
所以外部程序調用規則包很是簡單。只需以上幾行代碼就能夠完成應用。



----from 百度百科 內存

相關文章
相關標籤/搜索