旗正規則引擎,是由杭州旗正信息技術股份有限公司獨立開發的一款規則引擎。
規則引擎由推理引擎發展而來,是一種嵌入在應用程式中的組件,實現了將業務決策從應用程式代碼中分離出來,並使用預定義的語義模組編寫業務決策。接受數據輸入,解釋業務規則,並根據業務規則做出業務決策。
基本介紹
- 中文名:旗正規則引擎
- 外文名:VRS
- 語種:java
- 性能:嵌入式組建
產生背景,使用方式,架構與推理,技術特點,定義,軟體部署,適用範圍,軟體意義,
產生背景
企業管理者對企業級IT系統的開發有著如下的要求:(1)為提高效率,管理流程必須自動化,即使現代商業規則異常複雜(2)市場要求業務規則經常變化,IT系統必須依據業務規則的變化快速、低成本的更新(3)為了快速、低成本的更新,業務人員應能直接管理IT系統中的規則,不需要程式開發人員參與。
而項目開發人員則碰到了以下問題:(1)程式=算法+數據結構,有些複雜的商業規則很難推導出算法和抽象出數據模型(2)軟體工程要求從需求-設計-編碼,然而業務規則常常在需求階段可能還沒有明確,在設計和編碼後還在變化,業務規則往往嵌在系統各處代碼中(3)對程式設計師來說,系統已經維護、更新困難,更不可能讓業務人員來管理。
基於規則的專家系統的出現給開發人員以解決問題的契機。規則引擎由基於規則的專家系統中的推理引擎發展而來。下面簡要介紹一下基於規則的專家系統。
使用方式
由於規則引擎是軟體組件,所以只有開發人員才能夠通過程式接口的方式來使用和控制它,規則引擎的程式接口至少包含以下幾種API:載入和卸載規則集的API;數據操作的API;引擎執行的API。開發人員在程式中使用規則引擎基本遵循以下5個典型的步驟:創建規則引擎對象;向引擎中載入規則集或更換規則集;向引擎提交需要被規則集處理的數據對象集合;命令引擎執行;導出引擎執行結果,從引擎中撤出處理過的數據。使用了規則引擎之後,許多涉及業務邏輯的程式代碼基本被這五個典型步驟所取代。
一個開放的業務規則引擎應該可以"嵌入"在應用程式的任何位置,不同位置的規則引擎可以使用不同的規則集,用於處理不同的數據對象。此外,對使用引擎的數量沒有限制。
架構與推理
規則引擎的推理步驟如下:a. 將初始數據(fact)輸入至工作記憶體(Working Memory)。b. 使用Pattern Matcher將規則庫(Rules repository)中的規則(rule)和數據(fact)比較。c. 如果執行規則存在衝突(conflict),即同時激活了多個規則,將衝突的規則放入衝突集合。d. 解決衝突,將激活的規則按順序放入Agenda。e. 執行Agenda中的規則。重複步驟b至e,直到執行完畢Agenda中的所有規則。
任何一個規則引擎都需要很好地解決規則的推理機制和規則條件匹配的效率問題。
當引擎執行時,會根據規則執行佇列中的優先順序逐條執行規則執行實例,由於規則的執行部分可能會改變工作區的數據對象,從而會使佇列中的某些規則執行實例因為條件改變而失效,必須從佇列中撤銷,也可能會激活原來不滿足條件的規則,生成新的規則執行實例進入佇列。於是就產生了一種"動態"的規則執行鏈,形成規則的推理機制。這種規則的"鏈式"反應完全是由工作區中的數據驅動的。
規則條件匹配的效率決定了引擎的性能,引擎需要迅速測試工作區中的數據對象,從載入的規則集中發現符合條件的規則,生成規則執行實例。1982年美國卡耐基·梅隆大學的Charles L. Forgy發明了一種叫Rete算法,很好地解決了這方面的問題。現階段世界頂尖的商用業務規則引擎產品基本上都使用Rete算法。
技術特點
使用規則引擎可以通過降低實現複雜業務邏輯的組件的複雜性,降低應用程式的維護和可擴展性成本,其特點如下:
· 分離商業決策者的商業決策邏輯和套用開發者的技術決策;
· 能有效的提高實現複雜邏輯的代碼的可維護性;
· 在開發期間或部署後修復代碼缺陷;
· 應付特殊狀況,即客戶一開始沒有提到要將業務邏輯考慮在內;
· 符合組織對敏捷或疊代開發過程的使用;
定義
旗正規則引擎,是一個基於規則引擎實現的可視化定製業務邏輯的商業規則管理系統,同時又具有快速開發java軟體項目的功能。旗正規則引擎可以在程式外部對軟體項目中所涉及的業務邏輯進行單獨管理,並且提供多種語言的API接口供外部程式調用。可以集成到現有的軟體項目中,將軟體中經常容易發生變化的部分,獨立出來由規則庫進行管理。可以用於直接開發web項目。
旗正結合國內項目的特點而開發的一款業務規則管理系統(BRMS)產品。是全中文配置、學習曲線度低、執行速度快、動態熱部署、易集成等特點!旗正規則引擎以規則庫為基礎,規則編輯器為規則錄入視窗,規則引擎為動力,輔以規則協同管理、遠程項目與服務管理、集群規則同步等功能模組。
引用中國科技論文線上的一段話來解說,現有方法在對媒體編碼速率進行調整的過程中都具有一定的弊端,如策略不夠靈活、對網路資源的檢測不夠準確。提出了一種基於規則引擎的業務運行系統,能夠通過終端用戶的反饋信息準確的獲得網路資源情況,同時通過規則引擎提供靈活的策略管理能夠根據實際網路對策略進行調整使策略更加符合實際情況。規則引擎通過反饋的網路資源使用情況進行策略的匹配來決定如何對編碼速率進行調整使用戶獲得最佳的體驗。
軟體部署
旗正規則引擎分為開發平台和運行平台,部署和集成與運行平台相關。現階段考慮兼容性,配置的規則包編譯後生成的代碼,已經生成的jsp頁面等,支持JDK 1.4及以上版本。 運行平台主要包括規則引擎、web框架以及生成規則包編譯檔案以及jsp代碼。如果不通過旗正規則引擎來生成jsp代碼,則不需要web框架。規則引擎和web框架是兩個jar檔案,可以直接打包放到web工程的lib目錄中。編譯後的規則包檔案可以打包到web工程的classes下面,也可以指定特定目錄,放到特定的目錄下。生成jsp頁面是純粹的jsp頁面,因此可以放到web工程的根目錄下面
jar包
部署首先要發布兩個jar包,一個是engine.jar,一個是flservlet.jar包。engine.jar和flservlet都是基於JDK1.4進行編譯的。
web.xml配置
發布了類庫之後還需要在web工程的web.xml中進行一定的配置來啟動對應的web服務。
資料庫配置檔案
當規則包中需要調用資料庫時,需要對應配置資料庫源的信息。這個配置檔案可以由資料庫管理器生成。
規則包發布
發布規則包時,只需要發布編譯後的規則包檔案,一般是rsc格式的檔案
web框架發布
web框架主要是生成的jsp頁面用到的公共代碼。這些代碼存儲在stimage目錄下。只要將這個目錄直接複製到web工程的根目錄下即可。
web頁面發布
頁面配置器自動生成jsp代碼,因此這些代碼可以直接複製到web工程的跟目錄下即可。
適用範圍
·業務規則複雜多變,業務系統需快速做出決策,快速實現需求
·業務邏輯複雜,IT部門跟不上業務變化的節奏
·快速開發,java軟體項目開發過慢,需要快速完成項目的開發
·需要有一個系統,可以像管理數據一樣管理規則,沉澱企業業務知識與邏輯,形成可指導現實業務的專家系統。
以上常見於一些績效管理系統、薪資考核系統、生產排程系統、運力運價系統、渠道管理系統、報價系統、通信運營商系統等,經常性的出現業務變更,且IT部門需要投入較多的時間和人力成本來迎合業務規則變更。
軟體意義
我們通過一個案例來看規則引擎所帶來的實際意義吧
華中電網IT運維系統具有專有的Rules自適應規則引擎。該引擎具有大量收集和標準化事件數據的能力, 能對各類安全設備告警事件進行跨類型、跨廠商的採集和分析,並可將處理後的信息精確關聯到知識庫中。這 種記憶功能是該引擎自適應能力的體現點之一。
同時,Rules自適應規則採用容易編輯和理解的腳本表達,避免了複雜的定製開發和程式修改。經過廠家 培訓的技術實施人員即可掌握腳本編寫規則。當增加新設備的時候,技術人員可以手動將非標準的腳本規則寫 入rules規則庫,大大提高了規則導入效率,節約了技術支持成本。
自適應規則引擎的自適應能力還體現為它的智慧型化分析統計功能上: 通過對數據的識別、歸整、過濾、壓 縮、歸併、關聯將大量原始事件歸納為安全事件,有利於企業提高對安全隱患的發現。該引擎支持最高1000 條/秒的事件處理能力,可從容應對安全事件風暴