專利名稱:并行業務規則引擎及其實現方法
技術領域:
本發明涉及計算機軟件開發領域,應用于系統集成、軟件系統配置、容錯和高性能計算等方面。具體地,設計方案通過在規則引擎中増加并行執行體,在并行執行體中聲明對分支的選擇方式,及生成和查找方式,以提供對并行計算的有效支持。
背景技術:
規則引擎(regular rule)是指用一段易懂的腳本表示業務過程中的規則,腳本不需要經過編譯,在程序運行期由規則引擎框架讀取和解釋,應用程序調用規則引擎接ロ觸發執行相應的規則,從而達到業務邏輯和業務編程實現的分離。規則引擎不同于規則發現引擎,規則引擎屬于程序配置體系;規則發現引擎是指通過模式匹配發現業務過程中的某種規律,屬于模式識別范疇。規則引擎包括如下部分:規則腳本(不需要編譯)、規則引擎框架、調用規則引擎的應用程序。一般規則腳本包括:執行體和規則體,規則體包括觸發條件和對執行體和需執行方法的調用。エ作流(workf1w)指一系列前后相續相連的步驟。工作流引擎(workf1wengine)使用易懂的腳本等表示這些步驟之間的關系,工作流引擎框架讀取和解釋這些步驟,使用時,應用程序通過工作流引擎接ロ調用執行相應的工作流步驟,并得到結果。工作流引擎分離了工作流程和具體的程序編程。本發明中的并行計算(操作)指,由于數據分布在不同的邏輯地址,需要通過相同或不同的子程序模塊去分別操作,這些不同的子程序或者不同的邏輯地址的組合稱為分支,對數據的一次操作(計算),需要從ー個或多個可能的分支去選擇,操作(或稱計算)在空間上是并行的,因此稱為并行計算。業務規則引擎和工作流引擎基本實現了對系統易變部分的有效配置,但目前還沒有較好的方案引擎能便捷,快速的實現對系統數據備份、聯合查詢等并行計算的有效支持。
發明內容
為了填補了業務規則引擎在并行計算方面的空白,并行業務規則引擎在配置文件中使用并行執行體。數據的一次并行操作可以通過使用不同的子程序或者使用不同的邏輯地址達到,發明中請人將這些不同的子程序或者不同的邏輯地址的組合稱為分支。并行執行體對數據有兩種操作方式:數據讀取,和數據寫入(包括修改刪除)。數據讀取包括聯合、選擇、競爭等分支選擇方式:聯合讀取就是從一系列分支中讀取數據,最后拼裝成結果集;選擇就是假設各個分支數據是一祥的,執行體從分支中(隨機)選擇ー個分支讀取結果集;競爭就是假設各個分支數據是一祥的,執行體從各個分支讀取,但是只取最快的那份,其余的丟棄。數據寫入包括聯合、同時等分支選擇方式:聯合就是將數據按照規則拆散放到各個分支中,每個分支得到的是不完整的數據,但是所有分支數據的總和是完整數據;同時就是將數據不拆散,完整的保存到各個分支中。
分支的查找和生成規則為:分支地址或子程序名稱是由引擎傳入的參數通過映射得到的,參與映射的參數值可以是“”或null。映射規則是,設有i個變量,{Xi}為這些變量的集合,分支地址或子程序名稱為F({Xi}),那么找出ー個F({Xi}),通過F({Xi})可以通過逆映射獲得{Xi}中的所需要部分或全部。本規則引擎通過變量映射規則而不是通過條件判斷選擇分支,從而獲得對多種數據讀寫方式的支持,這是本發明的特征。并行計算通過并行執行體實現,并行執行體參數有三種類型:常量,由應用程序調用規則引擎框架時傳入的變量,由常量和其他參數映射得來的參數。方法或執行體引用的方式有兩種:常量方法,由常量和其他參數映射而來的方法。并行執行體的第三種類型映射了邏輯地址分支,并行執行體中方法或并行執行體的第二種引用方式映射了子程序分支。因為并行執行體是通過映射而非條件判斷選擇分支的,因此,本發明的方案可應用于工作流引擎。具體是:并行執行體作為工作流引擎的ー個執行節點;工作流引擎的上一個節點或該段工作流引擎的調用者傳入相應的參數,并調用該節點;該節點映射各個分支,然后返回最終結果給下一個節點;如果這是引擎的最后ー個節點,那就返回給工作流引擎的調用者。
圖1是對并行業務規則引擎結構的解釋。并行業務規則引擎需要配置三種組件:執行體和規則體是一般業務規則引擎所擁有的,而并行規則體則是本方案所特有的。并行規則體的參數和“方法或執行體引用”部分都可以分別映射分支,通過這種分支映射的組合,并行業務規則引擎可以具備很好的伸縮性能。圖2是對并行規則體在工作流引擎中的應用的解釋。工作流引擎中,并行節點的上一個節點(如果有)或應用程序通過引擎框架調用并行節點;并行執行體隱式地通過映射方式執行分支;然后,并行執行體獲得并行運算的最終結果;并將最終結果和控制交給下一個節點(如果有),如果沒有下ー個節點,那就把結果交給通過引擎框架調用該引擎的應用程序。
具體實施例方式業務規則引擎的實現有以下步驟:
1.規則引擎需要靠規則引擎框架解釋執行,應用程序讀入規則引擎框架。
2.配置文件中配置業務規則,應用程序讀入配置文件,并通過框架解釋這些規則。
3.應用程序在相應的地方通過對框架SPI的調用,并傳入相應的參數,執行規則,最后
獲得結果。
4.如果程序在該相應的地方需求規則改變,只要參數不變,程序員就可以通過重新配置業務規則達到效果。并行業務規則引擎和并行業務工作流引擎的配置過程如下:
1.首先定義需要被調用的分支的程序的方法,如果分支程序的方法不同就進ー步將該方法封裝為執行體。
2.定義并行執行體,并行執行體聲明為讀取或寫入類型,并聲明聯合、選擇、競爭、同時等方式。
3.在并行執行體中配置傳入參數、對“方法和執行體的引用”。參數和“方法或執行體引用”的類型可以由映射生成,映射的結果可以作為參數;或者作為步驟I定義的執行體的名稱,進ー步通過執行體獲得參數;或者作為步驟I定義的執行體的名稱由“方法或執行體引用”所引用。
4.應用程序調用引擎框架,執行并行執行體,做并行操作。下面結合具體的應用場景,進ー步闡明本發明,本發明可以應用于但不限于以下情形:假設日志系統需要每大生成ー個日志文件,并且可以查看所有天的日志。
開發者可按照如下步驟開發和配置:
1.在程序中編譯ー個通用的方法,用于寫入日志,如果沒有相應的日志文件就生成日志文件。
2.配置并行執行體1,用于對日志文件進行并行操作。并行執行體的“方法或執行體引用”部分配置為對步驟I的方法的引用,傳入參數與步驟I中的參數一致。
3.并行執行體I為寫入類型,并聲明為同時方式,以適應并行寫入的需求。
4.并行執行體I中的日志文件名參數以映射方式配置,映射公式為F(X)= Log|MMDD,麗為月,DD為日;麗和DD分別作為固定參數傳入,表示當前時間,因此,對并行執行體I的毎次寫入操作只執行ー個固定的分支。
5.在程序中編譯ー個通用的方法,用于讀取日志。
6.配置并行執行體2,用于對日志文件進行并行操作。并行執行體的“方法或執行體引用”部分配置為對步驟I的方法的引用,傳入參數與步驟I中的參數一致。
7.并行執行體2中的日志文件名參數以映射方式配置,映射公式為F(X)= Log|MMDD,MM為月,DD為日。
8.并行執行體2為讀取類型,并聲明為聯合方式,以適應從各個分支聯合查詢數據的需求。假設應用系統需要訪問兩個數據庫,這兩個數據庫數據完全一祥,一個用來備份,一個用來做正常業務訪問;兩個數據庫只有地址不一祥。
開發者可按照如下步驟開發和配置:
1.在引擎腳本中先配置兩個執行體,分別返回兩個數據庫的地址,現假設這兩個執行體名稱為DBOOOl和DB0002 ;
2.在程序中編譯ー個通用的方法,用于對兩個數據庫進行讀取操作,該方法的參數應包含數據庫地址。
3.配置并行執行體1,用于對兩個數據庫進行并行讀取操作。并行執行體的“方法或執行體引用”部分配置為對步驟2的方法的引用,傳入參數與步驟2中的參數一致。
4.并行規則體I中的數據庫地址參數被配置為對執行體DBOOOX的引用,所引用的執行體名稱是由映射F(X) = DB I 000X得來的(如步驟I)。
5.并行執行體I選擇為讀取類型,聲明為選擇方式,以適應從備份中讀ー個分支數據的需求。
6.在程序中編譯ー個通用的方法,用于對兩個數據庫進行寫入操作,該方法的參數應包含數據庫地址。
7.配置并行執行體2,用于對兩個數據庫進行并行寫入操作。并行執行體的“方法或執行體引用”部分配置為對步驟2的方法的引用,傳入參數與步驟6中的參數一致。
8.并行規則體2中的數據庫地址參數被配置為對執行體DBOOOX的引用,所引用的執行體名稱是由映射F(X) = DB I 000X得來的(如步驟I)。
9.并行執行體2選擇為寫入類型,聲明為同時方式,以適應從備份中讀ー個分支數據的需求。搶票系統分別從不同公司買票,假設N家公司,每家公司系統購票接ロ參數格式和返回數據都一祥(或者可以轉換成一祥的),只是具體的實現方法不一樣,搶票系統需要獲得購到的第一張票,如果搶到一張票以后,其余的票都撤單丟棄。
開發者可按照如下步驟開發和配置:
1.在規則引擎腳本中先配置N個執行體,參數為各家公司系統的接ロ參數,實現方法分別為各家公司系統的實現方法,執行體名稱為ZXTl到ZXTN。
2.配置并行執行體,用于對這N家公司的并行購票操作。由于這N家公司的參數格式都是一致的,因此,并行執行體的參數同步驟I的參數一祥。
3.并行執行體的“方法或執行體引用”部分配置為對N個執行體的引用。引用的執行體名稱由映射F⑴=ZXT IN得來(見步驟I)。
4.并行執行體選擇規則聲明為競爭讀取方式,以適應從各個分支競爭查詢,從而最快獲得票的需求。
權利要求
1.規則引擎是指用一段易懂的代碼表示業務過程中的規則,它不需要經過編譯,在程序運行期被讀取、執行。現有的業務規則引擎只解決了“在什么條件下執行什么”的需求,并行業務規則引擎及其方案的特征是:并行業務規則引擎根據業務的需要,利用并行執行體以映射方式獲得所有分支,并對分支中的數據進行有選擇的操作,選擇方式有聯合、選擇、競爭、同時等,從而方便靈活地滿足各種并行計算的需求。
2.根據權利要求
所述的并行業務規則引擎及方案,其特征在于:并行業務規則引擎通過變量映射的方式查找和生成不同的分支,有別于傳統的通過條件判斷語句或條件觸發語句查找和生成分支的方式;映射規則如下,設有i個變量,{Xi}為這些變量的集合,分支地址或子程序名稱為{Y},那么找出ー個{Y} =F({Xi})的映射,通過計算映射將{Xi}映射到F({Xi})。
3.根據權利要求
所述的并行業務規則引擎及方案,其特征在于:并行執行體包括讀取和寫入兩種類型,通過聲明同時、聯合、競爭、選擇等選擇方式,從而適應不同應用情景下并行操作需求。
4.根據權利要求
所述的并行業務規則引擎及方案,其特征在干:該方案可用于并行工作流引擎,引擎中使用并行執行體將對并行節點的操作映射為并行操作,從而很方便地獲得良好的性能;工作流(workflow)指一系列前后相續相連的步驟;工作流引擎(workflow engine)使用易懂的腳本等表示這些步驟之間的關系,工作流引擎框架讀取和解釋這些步驟,使用時,應用程序通過工作流引擎接ロ調用執行相應的工作流步驟,并得到結果;工作流引擎分離了工作流程和具體的程序編程。
全文摘要
并行業務規則引擎及其實現方法,包括在引擎的并行執行體中對選擇、聯合、競爭、同時這四種選擇方式的聲明;并行執行體通過映射方式生成和查找到分支,然后執行分支,返回結果。本發明在現有的規則引擎基礎上增加了并行功能,并且使得引擎用戶可以快速地配置并行計算,滿足了用戶備份、系統集成、高性能計算等方面的需求。該技術同時應用于并行工作流引擎。
文檔編號G06F9/44GK103116498SQ20131007343
公開日2013年5月22日 申請日期2013年3月7日 優先權日2013年3月7日
發明者徐國慶 申請人:徐國慶