專利名稱::流程驅(qū)動方法及裝置的制作方法
技術領域:
:本發(fā)明涉及計算機領域,特別涉及一種流程驅(qū)動方法及裝置。
背景技術:
:隨著計算機技術的日益發(fā)展,流程語言的種類也越來越多。盡管流程語言的語法與格式各不相同,但要解決的問題卻是大體相同的,流轉(zhuǎn)行為是一致的。設計一個適應各種流程語言的通用驅(qū)動系統(tǒng),有利于提高BPM(BusinessProcessManagement,業(yè)務流程管理系統(tǒng))引擎的開發(fā)效率;可以使得BPM產(chǎn)品線具有高度的擴展性;也可以滿足在一個系統(tǒng)中同時支持多種流程語言的特殊需求。現(xiàn)有技術一提供的驅(qū)動系統(tǒng),首先提出了PVM(ProcessVirtualMachine,流程虛擬機)這個概念,并利用該PVM成功驅(qū)動了BPEL(BusinessProcessExecutionLanguage,業(yè)務流程執(zhí)行語目)禾口JPDL(JavabusinessprocessmanagementProcessDefinitionLanguage,業(yè)務流程管理過程定義語言)?,F(xiàn)有技術二則開發(fā)了WindowsWorkflowFoundation(工作流框架)系統(tǒng),雖然沒有取名“PVM”,但是該系統(tǒng)的設計目標和PVM是一致的,該系統(tǒng)可驅(qū)動各種與BPEL語言類似的流程語言。在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術至少存在以下缺點現(xiàn)有技術一提供的PVM在運行時嚴重依賴開放源代碼的對象關系映射框架(Hibernate),該PVM還具有IOCanversionofControl,控制反轉(zhuǎn))容器等組件,這些組件本質(zhì)上與PVM無關,反而導致該產(chǎn)品無法與其他產(chǎn)品集成,導致移植性差;現(xiàn)有技術二對于圖狀流程語言,如BPMN(BusinessProcessModelingNotation,業(yè)務流程建模標注)等則較難勝任,尤其對于有自由跳轉(zhuǎn)、取回、加簽等需求的業(yè)務流程;另外,由于嚴重依賴于.NetFramework,導致擴展性也較差。
發(fā)明內(nèi)容為了提高流程驅(qū)動的擴展性及可移植性,進而提高流程驅(qū)動的實用性能,本發(fā)明實施例提供了一種流程驅(qū)動方法及裝置。所述技術方案如下—方面,提供了一種流程驅(qū)動方法,所述方法包括確定待驅(qū)動流程的流程元素,及所述流程元素對應的流程行為;將所述流程元素映射到對應的執(zhí)行對象中,并將所述流程元素的流程行為裝配到所述對應的執(zhí)行對象中;在外部調(diào)用所述執(zhí)行對象時啟動所述執(zhí)行對象的執(zhí)行過程。另一方面,提供了一種流程驅(qū)動裝置,所述裝置包括確定模塊,用于確定待驅(qū)動流程的流程元素,及所述流程元素對應的流程行為;映射模塊,用于將所述流程元素映射到對應的執(zhí)行對象中,并將所述流程元素的流程行為裝配到所述對應的執(zhí)行對象中;驅(qū)動模塊,用于在外部調(diào)用所述執(zhí)行對象時啟動所述執(zhí)行對象的執(zhí)行過程。本發(fā)明實施例提供的技術方案的有益效果是通過將流程元素映射到對應的執(zhí)行對象中,并在外部調(diào)用該執(zhí)行對象時啟動執(zhí)行對象的執(zhí)行過程,即以執(zhí)行對象概括各種流程語言的行為特征,實現(xiàn)對流程的驅(qū)動,不僅可以支持塊狀流程語言,也可以很好地支持圖狀流程語言,從而提高了流程驅(qū)動的擴展性;另外,由于本發(fā)明實施例提供的技術方案不與任何特定的數(shù)據(jù)存儲層技術及IOC容器進行綁定,因此,具有很高的可移植性。為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實施例--提供的流程驅(qū)動方法流程圖2是本發(fā)明實施例二提供的BPMN2.0與流程驅(qū)動裝置的關系示意圖圖3是本發(fā)明實施例二提供的流程驅(qū)動方法流程圖4是本發(fā)明實施例二提供的BPMN2.0的流程元素示意圖5是本發(fā)明實施例二提供的BPMN2.0的流程元素的流程行為示意圖圖6是本發(fā)明實施例二提供的各種執(zhí)行對象示意圖7是本發(fā)明實施例二提供的各種執(zhí)行對象之間的關系示意圖8是本發(fā)明實施例二提供的執(zhí)行對象結構示意圖9是本發(fā)明實施例三[提供的流程驅(qū)動裝置結構示意圖10是本發(fā)明實施例_Ξ提供的驅(qū)動模塊結構示意圖11是本發(fā)明實施例_三提供的執(zhí)行單元結構示意圖。具體實施例方式為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明實施方式作進一步地詳細描述。實施例一參見圖1,本實施例提供了一種流程驅(qū)動方法,該方法流程具體如下101確定待驅(qū)動流程的流程元素,及該流程元素對應的流程行為;102將該流程元素映射到對應的執(zhí)行對象中,并將該流程元素的流程行為裝配到對應的執(zhí)行對象中;103在外部調(diào)用該執(zhí)行對象時啟動該執(zhí)行對象的執(zhí)行過程。本實施例提供的方法,通過將流程元素映射到對應的執(zhí)行對象中,并在外部調(diào)用該執(zhí)行對象時啟動執(zhí)行對象的執(zhí)行過程,即以執(zhí)行對象概括各種流程語言的行為特征,實現(xiàn)對流程的驅(qū)動,不僅可以支持塊狀流程語言,也可以很好地支持圖狀流程語言,從而提高了流程驅(qū)動的擴展性;另外,由于本發(fā)明實施例提供的技術方案不與任何特定的數(shù)據(jù)存儲層技術及IOC容器綁定,因此,具有很高的可移植性。實施例二本實施例提供了一種流程驅(qū)動方法,該方法通過將流程元素映射到對應的執(zhí)行對象中,以執(zhí)行對象概括各種流程語言的行為特征,實現(xiàn)對流程的驅(qū)動。為了便于說明,本實施例以BPMN2.0流程語言為例進行說明,圖2為該BPMN2.0流程引擎與流程驅(qū)動裝置之間的關系示意圖。參見圖3,本實施例提供的方法流程具體如下301確定待驅(qū)動流程的流程元素,及該流程元素對應的流程行為;針對該步驟,每個特定的流程語言都包含了各種流程元素,關于如何確定待驅(qū)動流程的流程元素及對應的流程行為,本實施例不做具體限定。以BPMN2.0流程語言為例,其流程元素如圖4所示,包含了ftOcess,Activity,Event,SequnceFlow等流程元素,對應的流程行為可如圖5所示。302為該流程元素選擇對應的執(zhí)行對象;具體地,本實施例以ExecutableObject表示執(zhí)行對象,將其看作是一個具有特定行為的JavaBean,并定義了三種進程,即執(zhí)行進程execute()、喚醒進程awaken()和結束進程complete()。其中,execute()用于執(zhí)行業(yè)務邏輯,該業(yè)務邏輯即為映射到該執(zhí)行對象中的流程所承載的業(yè)務邏輯;awakenO用于喚醒執(zhí)行對象,實際應用時,通過進行數(shù)據(jù)恢復喚醒執(zhí)行對象;complete()則在execute()執(zhí)行業(yè)務邏輯結束后被調(diào)用。雖然每個執(zhí)行對象都有execute(),awaken(),complete()三個進程,但這些進程的具體實現(xiàn)方式不一定完全相同。參見圖6,根據(jù)進程實現(xiàn)方式的不同,可以將執(zhí)行對象分為網(wǎng)(NetInstance),節(jié)點(NodeInstance)和弧(ArcInstance)三種類型。其中,一個網(wǎng)可以包含若干個互相連接的節(jié)點和??;節(jié)點可以有若干個輸入弧和若干個輸出弧,每個弧必須有一個輸入節(jié)點和一個輸出節(jié)點;另外,一個網(wǎng)可以包含子網(wǎng),各種執(zhí)行對象之間的關系可如圖7所示。關于如何為流程元素選擇對應的執(zhí)行對象,本實施例不對具體的選擇方式進行限定,仍以BPMN2.0中的流程元素為例,可以選擇將Process流程元素映射到Net類型的執(zhí)行對象中,ActiVity、EVent等流程元素映射到Node類型的執(zhí)行對象中,而將kqunceFlow等流程元素映射到Arc類型的執(zhí)行對象中。303將該流程元素映射到對應的執(zhí)行對象中,并將該流程元素的流程行為裝配到對應的執(zhí)行對象中;其中,將該流程元素的流程行為裝配到對應的執(zhí)行對象中之后,可以將所有執(zhí)行對象裝配到內(nèi)核管理器,由該內(nèi)核管理器負責管理一系列有互相關系的執(zhí)行對象,在外部調(diào)用執(zhí)行對象時,通過該內(nèi)核管理器負責調(diào)用執(zhí)行對象的執(zhí)行過程。304在外部調(diào)用該執(zhí)行對象時啟動該執(zhí)行對象的執(zhí)行過程。針對該步驟,由于不同的流程定義語言表達所承載的業(yè)務邏輯的方式不一樣,ExecutableObject不可能將所有的情況預先硬編碼到流程驅(qū)動裝置架構中。因此,本實施例提供的方法采用擴展點的設計思想來滿足這個需求為每個ExecutableObject裝配了3個擴展點,即引用3個固定的接口JncomingLogic,BusinessLogic,LeavingLogic,如圖8所示。其中,hcomingLogic接口中設置有CanBeFiredO對象,用于判斷業(yè)務邏輯是否滿足了執(zhí)行條件;BusinessLogic中設置有performO對象,用于執(zhí)行真正的業(yè)務邏輯;LeavingLogic中設置有determineLeavingStragegyQ對象,用于在業(yè)務邏輯結束時指示下一步操作,下一步操作可能是執(zhí)行一個新的ExecuteObject,也可能是返回上一級ExecuteObject,并調(diào)用其complete()方法。則啟動執(zhí)行對象的執(zhí)行過程時,首先調(diào)用hcomingLogic接口中設置的CanBeFiredO對象,再調(diào)用BusinessLogic中設置的perform()對象,最后調(diào)用LeavingLogic中設置的determineLeavingStragegy()對象,也就是說,啟動執(zhí)行對象的執(zhí)行過程時,具體包括判斷是否可觸發(fā)執(zhí)行對象所對應的業(yè)務邏輯;如果是,則執(zhí)行業(yè)務邏輯,并在執(zhí)行結束之后指示下一步操作。其中,執(zhí)行業(yè)務邏輯,具體包括調(diào)用執(zhí)行進程execute()執(zhí)行業(yè)務邏輯,并在執(zhí)行業(yè)務邏輯結束后,調(diào)用結束進禾呈complete();如果需要長時間執(zhí)行業(yè)務邏輯,則將執(zhí)行對象的狀態(tài)保存在存儲介質(zhì)中,直至執(zhí)行業(yè)務邏輯結束,調(diào)用喚醒進程awaken()進行數(shù)據(jù)恢復,并在數(shù)據(jù)恢復后調(diào)用結束進程complete()0本實施例提供的方法,通過將流程元素映射到對應的執(zhí)行對象中,并在外部調(diào)用該執(zhí)行對象時啟動執(zhí)行對象的執(zhí)行過程,即以執(zhí)行對象概括各種流程語言的行為特征,實現(xiàn)對流程的驅(qū)動,不僅可以支持塊狀流程語言,也可以很好地支持圖狀流程語言,從而提高了流程驅(qū)動的擴展性;另外,由于本發(fā)明實施例提供的技術方案不與任何特定的數(shù)據(jù)存儲層技術及IOC容器綁定,因此,具有很高的可移植性。實施例三參見圖9,本實施例提供了一種流程驅(qū)動裝置,該裝置包括確定模塊901,用于確定待驅(qū)動流程的流程元素,及流程元素對應的流程行為;映射模塊902,用于將流程元素映射到對應的執(zhí)行對象中,并將流程元素的流程行為裝配到對應的執(zhí)行對象中;驅(qū)動模塊903,用于在外部調(diào)用執(zhí)行對象時啟動執(zhí)行對象的執(zhí)行過程。具體地,參見圖10,驅(qū)動模塊903,具體包括判斷單元9031,用于在外部調(diào)用執(zhí)行對象時,判斷是否可觸發(fā)執(zhí)行對象所對應的業(yè)務邏輯;執(zhí)行單元9032,用于在判斷單元9031判斷可觸發(fā)業(yè)務邏輯時,執(zhí)行業(yè)務邏輯;指示單元9033,用于在執(zhí)行單元9032執(zhí)行業(yè)務邏輯結束后,指示下一步操作。進一步地,參見圖11,執(zhí)行單元9032,具體包括第一調(diào)用子單元9032a,用于調(diào)用執(zhí)行進程執(zhí)行業(yè)務邏輯;第二調(diào)用子單元9032b,用于在第一調(diào)用子單元903調(diào)用的執(zhí)行進程執(zhí)行業(yè)務邏輯結束后,調(diào)用結束進程;第三調(diào)用子單元9032c,用于在第一調(diào)用子單元903調(diào)用的執(zhí)行進程需要長時間執(zhí)行業(yè)務邏輯時,將執(zhí)行對象的狀態(tài)保存在存儲介質(zhì)中,直至執(zhí)行業(yè)務邏輯結束,調(diào)用喚醒進程進行數(shù)據(jù)恢復,并在數(shù)據(jù)恢復后調(diào)用結束進程。本實施例提供的裝置,通過將流程元素映射到對應的執(zhí)行對象中,并在外部調(diào)用該執(zhí)行對象時啟動執(zhí)行對象的執(zhí)行過程,即以執(zhí)行對象概括各種流程語言的行為特征,實6現(xiàn)對流程的驅(qū)動,不僅可以支持塊狀流程語言,也可以很好地支持圖狀流程語言,從而提高了流程驅(qū)動的擴展性;另外,由于本發(fā)明實施例提供的技術方案不與任何特定的數(shù)據(jù)存儲層技術及IOC容器綁定,因此,具有很高的可移植性。需要說明的是上述實施例提供的流程驅(qū)動裝置在驅(qū)動流程時,僅以上述各功能模塊的劃分進行舉例說明,實際應用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將設備的內(nèi)部結構劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的流程驅(qū)動裝置與流程驅(qū)動方法實施例屬于同一構思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。本發(fā)明實施例中的全部或部分步驟,可以利用軟件實現(xiàn),相應的軟件程序可以存儲在可讀取的存儲介質(zhì)中,如光盤或硬盤等。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。權利要求1.一種流程驅(qū)動方法,其特征在于,所述方法包括確定待驅(qū)動流程的流程元素,及所述流程元素對應的流程行為;將所述流程元素映射到對應的執(zhí)行對象中,并將所述流程元素的流程行為裝配到所述對應的執(zhí)行對象中;在外部調(diào)用所述執(zhí)行對象時啟動所述執(zhí)行對象的執(zhí)行過程。2.根據(jù)權利要求1所述的方法,其特征在于,所述在外部調(diào)用所述執(zhí)行對象時啟動所述執(zhí)行對象的執(zhí)行過程,具體包括判斷是否可觸發(fā)所述執(zhí)行對象所對應的業(yè)務邏輯;如果是,則執(zhí)行所述業(yè)務邏輯,并在執(zhí)行結束之后指示下一步操作。3.根據(jù)權利要求2所述的方法,其特征在于,所述執(zhí)行所述業(yè)務邏輯,具體包括調(diào)用執(zhí)行進程執(zhí)行所述業(yè)務邏輯,并在執(zhí)行所述業(yè)務邏輯結束后,調(diào)用結束進程;如果需要長時間執(zhí)行所述業(yè)務邏輯,則將所述執(zhí)行對象的狀態(tài)保存在存儲介質(zhì)中,直至執(zhí)行所述業(yè)務邏輯結束,調(diào)用喚醒進程進行數(shù)據(jù)恢復,并在數(shù)據(jù)恢復后調(diào)用結束進程。4.根據(jù)權利要求1所述的方法,其特征在于,所述執(zhí)行對象分為網(wǎng),節(jié)點和??;其中,每個網(wǎng)包含多個互相連接的節(jié)點和??;每個節(jié)點包含多個輸入弧和多個輸出??;每個弧至少包含一個輸入節(jié)點和一個輸出節(jié)點。5.一種流程驅(qū)動裝置,其特征在于,所述裝置包括確定模塊,用于確定待驅(qū)動流程的流程元素,及所述流程元素對應的流程行為;映射模塊,用于將所述流程元素映射到對應的執(zhí)行對象中,并將所述流程元素的流程行為裝配到所述對應的執(zhí)行對象中;驅(qū)動模塊,用于在外部調(diào)用所述執(zhí)行對象時啟動所述執(zhí)行對象的執(zhí)行過程。6.根據(jù)權利要求5所述的裝置,其特征在于,所述驅(qū)動模塊,具體包括判斷單元,用于在外部調(diào)用所述執(zhí)行對象時,判斷是否可觸發(fā)所述執(zhí)行對象所對應的業(yè)務邏輯;執(zhí)行單元,用于在所述判斷單元判斷可觸發(fā)所述業(yè)務邏輯時,執(zhí)行所述業(yè)務邏輯;指示單元,用于在所述執(zhí)行單元執(zhí)行所述業(yè)務邏輯結束后,指示下一步操作。7.根據(jù)權利要求6所述的裝置,其特征在于,所述執(zhí)行單元,具體包括第一調(diào)用子單元,用于調(diào)用執(zhí)行進程執(zhí)行所述業(yè)務邏輯;第二調(diào)用子單元,用于在所述第一調(diào)用子單元調(diào)用的執(zhí)行進程執(zhí)行所述業(yè)務邏輯結束后,調(diào)用結束進程;第三調(diào)用子單元,用于在所述第一調(diào)用子單元調(diào)用的執(zhí)行進程需要長時間執(zhí)行所述業(yè)務邏輯時,將所述執(zhí)行對象的狀態(tài)保存在存儲介質(zhì)中,直至執(zhí)行所述業(yè)務邏輯結束,調(diào)用喚醒進程進行數(shù)據(jù)恢復,并在數(shù)據(jù)恢復后調(diào)用結束進程。全文摘要本發(fā)明公開了一種流程驅(qū)動方法及裝置,屬于計算機領域。該方法包括確定待驅(qū)動流程的流程元素,及所述流程元素對應的流程行為;將所述流程元素映射到對應的執(zhí)行對象中,并將所述流程元素的流程行為裝配到所述對應的執(zhí)行對象中;在外部調(diào)用所述執(zhí)行對象時啟動所述執(zhí)行對象的執(zhí)行過程。本發(fā)明通過將流程元素映射到對應的執(zhí)行對象中,并在外部調(diào)用該執(zhí)行對象時啟動執(zhí)行對象的執(zhí)行過程,即以執(zhí)行對象概括各種流程語言的行為特征,實現(xiàn)對流程的驅(qū)動,不僅可以支持塊狀及圖狀等流程語言,提高了流程驅(qū)動的擴展性;又由于不與任何特定的數(shù)據(jù)存儲層技術及IOC容器綁定,因此,又可以提高流程驅(qū)動的可移植性。文檔編號G06Q10/00GK102254233SQ20101018004公開日2011年11月23日申請日期2010年5月20日優(yōu)先權日2010年5月20日發(fā)明者陳乜云申請人:深圳市金蝶中間件有限公司