專利名稱:一種事務(wù)規(guī)則驅(qū)動(dòng)的敏捷sowf架構(gòu)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及面向服務(wù)架構(gòu)、服務(wù)組合、工作流等技術(shù)領(lǐng)域,實(shí)現(xiàn)了一種事務(wù)規(guī)則驅(qū)動(dòng)的敏捷SOWF架構(gòu)方法,該方法在事務(wù)規(guī)則驅(qū)動(dòng)下能夠動(dòng)態(tài)組合不同的事務(wù)服務(wù),構(gòu)建靈活的軟件業(yè)務(wù)系統(tǒng),滿足用戶業(yè)務(wù)不斷變化的需求,該方法可有效避免工作流過程模型重寫,縮短開發(fā)周期,具有快速響應(yīng)業(yè)務(wù)需求變化的能力。
背景技術(shù):
面向服務(wù)架構(gòu)(Service-Oriented Architecture, S0A)作為一種分布式軟件架構(gòu)模式通過服務(wù)組合構(gòu)建軟件系統(tǒng),使得軟件各模塊之間的耦合度更低,是今后主流的軟件形態(tài)。工作流技術(shù)是一種重組和自動(dòng)化企業(yè)信息流程的技術(shù),它可以縮減因業(yè)務(wù)變動(dòng)產(chǎn)生的額外開銷,并快速響應(yīng)業(yè)務(wù)過程調(diào)整。面向服務(wù)工作流(Service-OrientedWorkflow, SOffF)結(jié)合了 SOA思想與工作流技術(shù),解決了傳統(tǒng)工作流技術(shù)無法滿足跨組織的業(yè)務(wù)與應(yīng)用集成的問題。SOWF的概念由Piccinelli,G.在2003年提出,并給出了一個(gè)面向服務(wù)的工作流框架。羅英偉等(北京大學(xué),2007)對SOWF技術(shù)進(jìn)行了研究,提出了一個(gè)三層服務(wù)工作流模型。邵虹等人(沈陽工業(yè)大學(xué),2008)開發(fā)了面向服務(wù)的工作流管理系統(tǒng),將工作流引擎以及各個(gè)協(xié)作模塊封裝為服務(wù),并作為獨(dú)立的服務(wù)層,實(shí)現(xiàn)了工作流管理系統(tǒng)的松耦合?,F(xiàn)有SOWF的工作流過程模型的建立都是通過相應(yīng)的業(yè)務(wù)過程執(zhí)行語言(如BPEL4WS)以預(yù)定義的形式進(jìn)行的,當(dāng)業(yè)務(wù)變化的時(shí)候,需要將之前定義的過程模型重新改寫,并構(gòu)建新的工作流過程以響應(yīng)業(yè)務(wù)的變化,而重寫過程模型不僅需要花費(fèi)較大的成本(約站所有工作量的80%以上),而且對業(yè)務(wù)需求變化的響應(yīng)變得非常遲鈍,導(dǎo)致軟件系統(tǒng)無法有效地支持業(yè)務(wù)的運(yùn)轉(zhuǎn)。
發(fā)明內(nèi)容
為了克服已有的SOWF模型在需求變化時(shí)需要重寫過程模型的不足,縮短開發(fā)周期,快速響應(yīng)業(yè)務(wù)需求變化,本發(fā)明提出了一種事務(wù)規(guī)則驅(qū)動(dòng)的敏捷SOWF架構(gòu)方法,其步驟如下:I)將業(yè)務(wù)活動(dòng)基于Web服務(wù)技術(shù)封裝成具有相對獨(dú)立業(yè)務(wù)功能的模塊,稱為“事務(wù)服務(wù)”。2)定義事務(wù)規(guī)則模版。事務(wù)規(guī)則定義了事務(wù)服務(wù)的交互規(guī)則和交互方法,它包含一組約束規(guī)則,用來描述事務(wù)服務(wù)的數(shù)據(jù)、結(jié)構(gòu)以及事件必須滿足的限定條件,并通過約束作用于過程模型,使模型中定義的事務(wù)服務(wù)發(fā)生動(dòng)態(tài)的重組,避免手動(dòng)修改過程模型。事務(wù)規(guī)則模版基于XML語言定義,包含了一組標(biāo)簽,這些標(biāo)簽用于定義事務(wù)規(guī)則中的各類規(guī)則。2.1)定義結(jié)構(gòu)規(guī)則。結(jié)構(gòu)規(guī)則 Structure_Rule=〈flow, pattern〉,flows 是流,pattern e {sequential, iteractive, parallel, if, trigger}是流執(zhí)行的模式,用于處理復(fù)雜的業(yè)務(wù)流程,其定義的標(biāo)簽是〈rule type=”pattern” >,pattern的值共有五種:(1)sequence:順序結(jié)構(gòu)定義標(biāo)簽,表示其中的流順序執(zhí)行。(2) iteractive:循環(huán)迭代結(jié)構(gòu)定義標(biāo)簽,表示其中的流循環(huán)執(zhí)行。(3)parallel:并行結(jié)構(gòu)定義標(biāo)簽,表示其中的流可并行執(zhí)行。(4) trigger:觸發(fā)規(guī)則標(biāo)簽,當(dāng)條件被觸發(fā)時(shí),將執(zhí)行定義流或過程,可用于定時(shí)控制與狀態(tài)監(jiān)控。(5) if:條件控制標(biāo)簽,用于邏輯判斷與過程流轉(zhuǎn)。2.2)定義數(shù)據(jù)規(guī)則。數(shù)據(jù)規(guī)貝丨J Data_Rule=<actIvityi, activityk, message>, activityj 與 activityk 表示兩個(gè)交互的活動(dòng),activityj — activityk !message 是activityj activityk 的數(shù)據(jù)的限定,message e Outputsi,message e outputsk。其定義的標(biāo)簽是〈rule type=” data”〉包含以下子標(biāo)簽:(l)target:數(shù)據(jù)規(guī)則針對的目標(biāo),值是服務(wù)的名稱,表明對那個(gè)服務(wù)進(jìn)行規(guī)則限定;(2) input:輸入?yún)?shù)的限定,與message元素關(guān)聯(lián);(3)output:輸出參數(shù)的限定,與message元素關(guān)聯(lián)。下面是一個(gè)數(shù)據(jù)規(guī)則的XMLSchema。2.3)定義事件規(guī)則。事件規(guī)則 Event_Rule=〈event, target, message, action〉,其中event是事件的名稱;target是事件作用的活動(dòng)或流的對象集合;message是事件發(fā)生時(shí)產(chǎn)生的消息;action是事件的處理方法。其標(biāo)簽為〈rule type=” event” >包含以下子標(biāo)簽:(l)target:事件規(guī)則影響的對象,值是服務(wù)的名稱,表明對那個(gè)服務(wù)進(jìn)行規(guī)則限定;(2)message:表明事件的參數(shù)信息,通過名稱與已定義的message元素進(jìn)行關(guān)聯(lián);(3)event:對事件的來源(source),觸發(fā)信號(hào)(signal),回應(yīng)行為(action)做出定義。3)實(shí)現(xiàn)事務(wù)規(guī)則驅(qū)動(dòng)的SOWF架構(gòu)。該架構(gòu)包括四層:事務(wù)規(guī)則定義層、工作流引擎層、事務(wù)服務(wù)層、業(yè)務(wù)活動(dòng)層,下面對每層的組成及功能做一說明:3.1)事務(wù)規(guī)則定義層主要包括流程管理器、過程模型編輯器與規(guī)則模板編輯器。流程管理器用于對流程進(jìn)行管理,包括流程創(chuàng)建與終止;過程模型編輯器用于對過程模型庫中的過程模型文件進(jìn)行管理,包括定義活動(dòng)、流、消息等要素,以及描述抽象業(yè)務(wù)過程;規(guī)則模板編輯器用于新建與編輯規(guī)則模板,包括規(guī)則模板的定義、規(guī)則模版庫管理等。3.2)工作流引 擎層主要包括事務(wù)規(guī)則引擎、事務(wù)規(guī)則庫、過程模型庫。事務(wù)規(guī)則引擎負(fù)責(zé)規(guī)范工作流引擎的啟動(dòng)和執(zhí)行,解析流程事務(wù)規(guī)則XML文件,依據(jù)事務(wù)規(guī)則組合事務(wù)服務(wù)來完成特定的業(yè)務(wù)需求;事務(wù)規(guī)則庫用于存儲(chǔ)規(guī)則模板,并提供給事務(wù)規(guī)則引擎,事務(wù)規(guī)則引擎根據(jù)讀取規(guī)則庫中的規(guī)則模板進(jìn)行業(yè)務(wù)流程的組合與搭建。過程模型庫提供基本的過程模型元素,用于支持業(yè)務(wù)流程的組合。3.3)事務(wù)服務(wù)層為工作引擎層提供服務(wù),是多個(gè)事務(wù)服務(wù)的集合。事務(wù)服務(wù)是由業(yè)務(wù)活動(dòng)封裝而成。業(yè)務(wù)活動(dòng)被服務(wù)化后可以消除異構(gòu)系統(tǒng)與平臺(tái)的差異性,即服務(wù)層可以容納跨系統(tǒng)跨部門的業(yè)務(wù)活動(dòng)。3.4)業(yè)務(wù)活動(dòng)層由已存在的業(yè)務(wù)系統(tǒng)提供,多個(gè)活動(dòng)可以屬于同一個(gè)業(yè)務(wù)系統(tǒng),也可以跨越不同的業(yè)務(wù)系統(tǒng)。4)將事務(wù)規(guī)則模版作為SOWF架構(gòu)的輸入,其工作機(jī)制如下:4.1)通過規(guī)則模板編輯器撰寫事務(wù)規(guī)則模板。4.2)通過流程管理器將描述了服務(wù)執(zhí)行流程的事務(wù)規(guī)則模板輸入到規(guī)則庫中,事務(wù)規(guī)則模板以Key-Value的方式存儲(chǔ)到NoSQL形式的事務(wù)規(guī)則庫中。4.3)解釋器通過Key讀取規(guī)則庫里存儲(chǔ)的規(guī)則模板,并進(jìn)行翻譯,將生成的經(jīng)過優(yōu)化并容易處理的中間代碼提交給組合器。
4.4)組合器對中間代碼進(jìn)行解析及預(yù)處理操作。首先計(jì)算出所有的過程模型元素的引用,然后通過調(diào)度器發(fā)出調(diào)度指令,將這些引用映射為具體的業(yè)務(wù)實(shí)體,如服務(wù)和消息。接著經(jīng)由綁定器將由調(diào)度器申請到的業(yè)務(wù)實(shí)體與上下文綁定在一起,進(jìn)行服務(wù)實(shí)例以及資源的預(yù)分配。最后則將一系列動(dòng)作產(chǎn)生的描述信息寫回到中間代碼中,并進(jìn)行編譯工作,輸出可執(zhí)行二進(jìn)制代碼,這樣就完成了抽象的規(guī)則模板和過程模型描述到可執(zhí)行流的映射。4.5)處理完成之后,組合器將可執(zhí)行流提交給執(zhí)行器進(jìn)行執(zhí)行。執(zhí)行器保證了組合過程中的資源分配與執(zhí)行環(huán)境的可靠,同時(shí)監(jiān)控工作流的執(zhí)行狀態(tài)。本發(fā)明的優(yōu)點(diǎn)是:可以克服現(xiàn)有SOWF在業(yè)務(wù)需求變化時(shí)需要重寫過程模型的缺點(diǎn),在事務(wù)規(guī)則驅(qū)動(dòng)下通過動(dòng)態(tài)組合事務(wù)服務(wù)構(gòu)建軟件業(yè)務(wù)系統(tǒng),大大縮短開發(fā)周期,提高了快速響應(yīng)用戶業(yè)務(wù)需變化的能力。
圖1事務(wù)規(guī)則驅(qū)動(dòng)的SOWF架構(gòu)圖2S0WF架構(gòu)工作過程圖3高級(jí)專業(yè)技術(shù)資格職稱申報(bào)與評審流程圖4結(jié)構(gòu)規(guī)則的定義方式圖5數(shù)據(jù)規(guī)則的定義方式圖6事件規(guī)則的定義方式
具體實(shí)施方案參照附圖,對本發(fā)明作進(jìn)一步說明。一種事務(wù)規(guī)則驅(qū)動(dòng)的敏捷SOWF架構(gòu)方法,包括以下步驟:I)將業(yè)務(wù)活動(dòng)基于Web服務(wù)技術(shù)封裝成具有業(yè)務(wù)功能的事務(wù)服務(wù)。以圖3的高級(jí)專業(yè)技術(shù)資格職稱申報(bào)與評審流程舉例,表I列出了其中的主要事務(wù)服務(wù)。表I高級(jí)專業(yè)技術(shù)資格職稱申報(bào)與評審的主要事務(wù)服務(wù)
權(quán)利要求
1.一種事務(wù)規(guī)則驅(qū)動(dòng)的敏捷SOWF架構(gòu)方法,其步驟如下: 1)將業(yè)務(wù)活動(dòng)基于Web服務(wù)技術(shù)封裝成具有相對獨(dú)立業(yè)務(wù)功能的模塊,稱為“事務(wù)服務(wù)”。
2)定義事務(wù)規(guī)則模版。事務(wù)規(guī)則定義了事務(wù)服務(wù)的交互規(guī)則和交互方法,它包含一組約束規(guī)則,用來描述事務(wù)服務(wù)的數(shù)據(jù)、結(jié)構(gòu)以及事件必須滿足的限定條件,并通過約束作用于過程模型,使模型中定義的事務(wù)服務(wù)發(fā)生動(dòng)態(tài)的重組,避免手動(dòng)修改過程模型。事務(wù)規(guī)則模版基于XML語 言定義,包含了一組標(biāo)簽,這些標(biāo)簽用于定義事務(wù)規(guī)則中的各類規(guī)則。
· 2.1)定義結(jié)構(gòu)規(guī)則。結(jié)構(gòu)規(guī)則 Structure_Rule=〈flow, pattern〉,flows 是流,pattern e {sequential, iteractive, parallel, if, trigger}是流執(zhí)行的模式,用于處理復(fù)雜的業(yè)務(wù)流程,其定義的標(biāo)簽是〈rule type=” pattern” >,pattern的值共有五種:(I) sequence:順序結(jié)構(gòu)定義標(biāo)簽,表示其中的流順序執(zhí)行。(2) iteractive:循環(huán)迭代結(jié)構(gòu)定義標(biāo)簽,表示其中的流循環(huán)執(zhí)行。(3)parallel:并行結(jié)構(gòu)定義標(biāo)簽,表示其中的流可并行執(zhí)行。(4)trigger:觸發(fā)規(guī)則標(biāo)簽,當(dāng)條件被觸發(fā)時(shí),將執(zhí)行定義流或過程,可用于定時(shí)控制與狀態(tài)監(jiān)控。(5) if:條件控制標(biāo)簽,用于邏輯判斷與過程流轉(zhuǎn)。
·2.2)定義數(shù)據(jù)規(guī)則。數(shù)據(jù)規(guī)則 Data-Rule=Cactivityi, activityk, message〉, activit}^與 activityk 表示兩個(gè)交互的活動(dòng),activityj — activityk !message 是 activityj 流向activityk的數(shù)據(jù)的限定,message e Outputsi,message e outputsk。其定義的標(biāo)簽是〈ruletype=” data” >包含以下子標(biāo)簽:(I) target:數(shù)據(jù)規(guī)則針對的目標(biāo),值是服務(wù)的名稱,表明對那個(gè)服務(wù)進(jìn)行規(guī)則限定;(2) input:輸入?yún)?shù)的限定,與message元素關(guān)聯(lián);(3) output:輸出參數(shù)的限定,與message元素關(guān)聯(lián)。下面是一個(gè)數(shù)據(jù)規(guī)則的XML Schema。
· 2.3)定義事件規(guī)則。事件規(guī)則 Event_Rule=〈event, target, message, action〉,其中event是事件的名稱;target是事件作用的活動(dòng)或流的對象集合;message是事件發(fā)生時(shí)產(chǎn)生的消息;action是事件的處理方法。其標(biāo)簽為〈rule type=”event”>包含以下子標(biāo)簽:(l)target:事件規(guī)則影響的對象,值是服務(wù)的名稱,表明對那個(gè)服務(wù)進(jìn)行規(guī)則限定;(2)message:表明事件的參數(shù)信息,通過名稱與已定義的message元素進(jìn)行關(guān)聯(lián);(3) event:對事件的來源(source),觸發(fā)信號(hào)(signal),回應(yīng)行為(action)做出定義。 · 3)實(shí)現(xiàn)事務(wù)規(guī)則驅(qū)動(dòng)的SOWF架構(gòu)。該架構(gòu)包括四層:事務(wù)規(guī)則定義層、工作流引擎層、事務(wù)服務(wù)層、業(yè)務(wù)活動(dòng)層,下面對每層的組成及功能做一說明: ·3.1)事務(wù)規(guī)則定義層主要包括流程管理器、過程模型編輯器與規(guī)則模板編輯器。流程管理器用于對流程進(jìn)行管理,包括流程創(chuàng)建與終止;過程模型編輯器用于對過程模型庫中的過程模型文件進(jìn)行管理,包括定義活動(dòng)、流、消息等要素,以及描述抽象業(yè)務(wù)過程;規(guī)則模板編輯器用于新建與編輯規(guī)則模板,包括規(guī)則模板的定義、規(guī)則模版庫管理等。 · 3.2)工作流引擎層主要包括事務(wù)規(guī)則引擎、事務(wù)規(guī)則庫、過程模型庫。事務(wù)規(guī)則引擎負(fù)責(zé)規(guī)范工作流引擎的啟動(dòng)和執(zhí)行,解析流程事務(wù)規(guī)則XML文件,依據(jù)事務(wù)規(guī)則組合事務(wù)服務(wù)來完成特定的業(yè)務(wù)需求;事務(wù)規(guī)則庫用于存儲(chǔ)規(guī)則模板,并提供給事務(wù)規(guī)則引擎,事務(wù)規(guī)則引擎根據(jù)讀取規(guī)則庫中的規(guī)則模板進(jìn)行業(yè)務(wù)流程的組合與搭建。過程模型庫提供基本的過程模型元素,用于支持業(yè)務(wù)流程的組合。 · 3.3)事務(wù)服務(wù)層為工作引擎層提供服務(wù),是多個(gè)事務(wù)服務(wù)的集合。事務(wù)服務(wù)是由業(yè)務(wù)活動(dòng)封裝而成。業(yè)務(wù)活動(dòng)被服務(wù)化后可以消除異構(gòu)系統(tǒng)與平臺(tái)的差異性,即服務(wù)層可以容納跨系統(tǒng)跨部門的業(yè)務(wù)活動(dòng)。
.3.4)業(yè)務(wù)活動(dòng)層由已存在的業(yè)務(wù)系統(tǒng)提供,多個(gè)活動(dòng)可以屬于同一個(gè)業(yè)務(wù)系統(tǒng),也可以跨越不同的業(yè)務(wù)系統(tǒng)。
.4)將事務(wù)規(guī)則模版作為SOWF架構(gòu)的輸入,其工作機(jī)制如下: .4.1)通過規(guī)則模板編輯器撰寫事務(wù)規(guī)則模板。
.4.2)通過流程管理器將描述了服務(wù)執(zhí)行流程的事務(wù)規(guī)則模板輸入到規(guī)則庫中,事務(wù)規(guī)則模板以Key-Value的方式存儲(chǔ)到NoSQL形式的事務(wù)規(guī)則庫中。
.4.3)解釋器通過Key讀取規(guī)則庫里存儲(chǔ)的規(guī)則模板,并進(jìn)行翻譯,將生成的經(jīng)過優(yōu)化并容易處理的中間代碼提交給組合器。
.4.4)組合器對中間代碼進(jìn)行解析及預(yù)處理操作。首先計(jì)算出所有的過程模型元素的引用,然后通過調(diào)度器發(fā)出調(diào)度指令,將這些引用映射為具體的業(yè)務(wù)實(shí)體,如服務(wù)和消息。接著經(jīng)由綁定器將由調(diào)度器申請到的業(yè)務(wù)實(shí)體與上下文綁定在一起,進(jìn)行服務(wù)實(shí)例以及資源的預(yù)分配。最后則將一系列動(dòng)作產(chǎn)生的描述信息寫回到中間代碼中,并進(jìn)行編譯工作,輸出可執(zhí)行二進(jìn)制代碼,這樣就完成了抽象的規(guī)則模板和過程模型描述到可執(zhí)行流的映射。
.4.5)處理完成之后,組合器將可執(zhí)行流提交給執(zhí)行器進(jìn)行執(zhí)行。執(zhí)行器保證了組合過程中的資源分配與執(zhí)行環(huán)境的可靠, 同時(shí)監(jiān)控工作流的執(zhí)行狀態(tài)。
全文摘要
本發(fā)明專利實(shí)現(xiàn)了一種事務(wù)規(guī)則驅(qū)動(dòng)的敏捷SOWF架構(gòu)方法,包括以下步驟(1)將業(yè)務(wù)活動(dòng)封裝成具有相對獨(dú)立業(yè)務(wù)功能的事務(wù)服務(wù);(2)基于XML語言定義事務(wù)規(guī)則模版,包括結(jié)構(gòu)規(guī)則、數(shù)據(jù)規(guī)則、事件規(guī)則,用于限定事務(wù)服務(wù)的交互規(guī)則和交互方法;(3)實(shí)現(xiàn)了基于事務(wù)規(guī)則驅(qū)動(dòng)的SOWF架構(gòu),包括事務(wù)規(guī)則定義層、工作流引擎層、事務(wù)服務(wù)層、業(yè)務(wù)活動(dòng)層。(4)在事務(wù)規(guī)則驅(qū)動(dòng)下動(dòng)態(tài)組合事務(wù)服務(wù),構(gòu)建靈活的軟件業(yè)務(wù)系統(tǒng)。該方法克服了現(xiàn)有SOWF重寫過程模型的缺點(diǎn),縮短了開發(fā)周期,具有快速響應(yīng)業(yè)務(wù)需求變化的能力。
文檔編號(hào)G06F9/44GK103150164SQ20131007058
公開日2013年6月12日 申請日期2013年3月6日 優(yōu)先權(quán)日2013年3月6日
發(fā)明者張?jiān)Q, 肖剛, 程振波, 徐俊, 陸佳煒, 陳儒 申請人:浙江工業(yè)大學(xué)