專利名稱:一種位置透明傳遞和執(zhí)行流程的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)領(lǐng)域,尤其涉及一種使流程能以分布、位置透明的方式傳
遞和執(zhí)行的系統(tǒng)和方法。本發(fā)明的傳遞和/或執(zhí)行的流程涉及業(yè)務(wù)流程,而java 消息服務(wù)(JMS)消息傳輸應(yīng)用于本發(fā)明的實(shí)施例中。因此,對(duì)編制業(yè)務(wù)流程 的人和/或流程引擎本身而言,降低了其了解業(yè)務(wù)流程執(zhí)行步驟的位置和/或企 業(yè)內(nèi)使用的包括資源的物質(zhì)基礎(chǔ)設(shè)施的要求。
背景技術(shù):
業(yè)務(wù)流程通常與許多不同的后端應(yīng)用系統(tǒng)和分布在多個(gè)地域的人群相互 作用。例如, 一家企業(yè)通常具有許多設(shè)備,每個(gè)設(shè)備都具有一些主機(jī)應(yīng)用程序, 工人們使用這些主機(jī)應(yīng)用程序在給定的設(shè)備上執(zhí)行特定的任務(wù)。很少由一個(gè)單 獨(dú)的中央數(shù)據(jù)中心提供一個(gè)業(yè)務(wù)運(yùn)作所需要的所有計(jì)算資源。
一種在不同地域間提供資源的方法涉及非集中式分散運(yùn)算。 一般而言,非 集中式分散運(yùn)算依靠大范圍聯(lián)網(wǎng)為不同設(shè)備之間提供連接。然而,廣域聯(lián)網(wǎng)通 常會(huì)使帶寬變窄,有時(shí)延,且比局域聯(lián)網(wǎng)的維護(hù)成本高。
因此,在本地處理數(shù)據(jù),如在局域網(wǎng)內(nèi)比在廣域網(wǎng)處理數(shù)據(jù)更高效更可靠。 但是,當(dāng)缺少或完全沒有了解企業(yè)的物質(zhì)基礎(chǔ)設(shè)施時(shí),這種流程布局使讓企業(yè) 認(rèn)識(shí)到業(yè)務(wù)流程管理(BPM, Business Process Management)的益處面臨了一 個(gè)技術(shù)挑戰(zhàn)。
流程編制的概念通常使用了編制引擎。市場(chǎng)上有售的業(yè)務(wù)流程管理的編制 引擎被設(shè)計(jì)出來,使得業(yè)務(wù)流程的狀態(tài)可以通過單一的編制引擎在單一位置控 制。這意味著與遠(yuǎn)程應(yīng)用程序交互的編制服務(wù)需要一個(gè)穩(wěn)定可靠的廣域網(wǎng),該 廣域網(wǎng)具有足夠的帶寬和冗余量來處理業(yè)務(wù)流程管理系統(tǒng)處理大量數(shù)據(jù)時(shí)經(jīng)常產(chǎn)生的負(fù)荷系數(shù)。
此外,業(yè)務(wù)用戶通常沒有充分了解企業(yè)內(nèi)物質(zhì)基礎(chǔ)設(shè)備,只是依賴業(yè)務(wù)流 程管理的流程建^t方法來快速創(chuàng)建面向業(yè)務(wù)的解決方案。但是,市場(chǎng)上有售的
通用業(yè)務(wù)流程管理套件(BMPS, Business Process Management Suite)產(chǎn)品在 定義流程時(shí)沒有去掉該流程將被如何部署和執(zhí)行的相關(guān)技術(shù)。
因此很有必要提供一種提高流程的傳遞和/或執(zhí)行的方法。此外,也需提 供實(shí)現(xiàn)位置透明流程執(zhí)行的技術(shù),例如,使得數(shù)據(jù)和服務(wù)可在多個(gè)地域之間有 效存取,并降低對(duì)企業(yè)的準(zhǔn)確技術(shù)結(jié)構(gòu)及其網(wǎng)絡(luò)架構(gòu)的理解。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例涉及由一種適當(dāng)配置的協(xié)議(例如Java消息服務(wù)信息傳 輸協(xié)議)實(shí)現(xiàn)的位置透明的分布式的流程執(zhí)行。在本發(fā)明的實(shí)施例中,流程引 擎通過排序/發(fā)布訂閱(例如在JMS消息中核對(duì))與步驟調(diào)用位置隔離,從而 執(zhí)行流程步驟之間的轉(zhuǎn)換。
本發(fā)明的一個(gè)目的在于提供一種業(yè)務(wù)流程管理流程引擎,所述業(yè)務(wù)流程管 理流程引擎可以實(shí)現(xiàn)業(yè)務(wù)流程的分布式執(zhí)行并通過合適的協(xié)議(例如,通過 JMS信息傳輸)使流程步驟執(zhí)行的位置隔離。
本發(fā)明的另一目的在于降低編制業(yè)務(wù)流程的人和/或流程引擎本身對(duì)業(yè)務(wù) 流程執(zhí)行步驟的位置以及企業(yè)內(nèi)使用的包括資源的物質(zhì)基礎(chǔ)設(shè)施的了解。
本發(fā)明的再一目的在于降低將流程綁定到特定流程編制引擎的需求,因此 使得步驟的執(zhí)行可以分布在企業(yè)各處,從而使得業(yè)務(wù)流程在一個(gè)分布式的運(yùn)算 環(huán)境中更有效地執(zhí)行。
本發(fā)明的又一目的在于提供一種具有顯著水平擴(kuò)展性能且易于管理的架構(gòu)。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種網(wǎng)絡(luò)配置方法。所述網(wǎng)絡(luò)配置方法 包括以下步驟。提供一個(gè)包括一流程引擎的面向服務(wù)的集成服務(wù)器。將至少一 物理服務(wù)器連接到網(wǎng)絡(luò)。每一個(gè)所述物理服務(wù)器包括一個(gè)所述集成服務(wù)器,而每一個(gè)所述集成服務(wù)器包括一個(gè)所述流程引擎。提供一用于網(wǎng)絡(luò)的消息傳輸 層。在設(shè)計(jì)時(shí), 一個(gè)流程被模擬從而生成一流程模型,所述流程模型中定義至 少一個(gè)與所述流程相關(guān)的活動(dòng)和至少一個(gè)與所述活動(dòng)相關(guān)的步驟。每個(gè)所述活 動(dòng)被指定到一邏輯服務(wù)器,使得在部署時(shí),所述流程引擎需要的任何可執(zhí)行的
產(chǎn)物(artifacts)都是可生成的。運(yùn)行期產(chǎn)物在設(shè)計(jì)時(shí)的所述流程模型中生成。 該流程包括以下步驟從設(shè)計(jì)時(shí)的流程模型中生成至少一個(gè)程序包,每一個(gè)所 述程序包與一個(gè)所述邏輯服務(wù)器相對(duì)應(yīng),且包括至少一個(gè)觸發(fā)器和流程片段文 件,所述觸發(fā)器負(fù)責(zé)訂閱將要被傳遞到安裝在相應(yīng)集成服務(wù)器上的流程引擎的 流程轉(zhuǎn)換文件消息,并且負(fù)責(zé)過濾公布在所述消息傳輸層的流程轉(zhuǎn)換文件消 息,所述流程片段文件只定義與對(duì)應(yīng)邏輯服務(wù)器相關(guān)的流程步驟;及在消息傳 輸層創(chuàng)建兩個(gè)隊(duì)列,所述隊(duì)列包括用于處理觸發(fā)新流程的流程消息的第一隊(duì)列 和用于調(diào)節(jié)流程模型的流程步驟之間的轉(zhuǎn)換的第二隊(duì)列。每一個(gè)所述程序包被 部署到一個(gè)物理服務(wù)器上。所述程序包作為對(duì)應(yīng)流程引擎的運(yùn)行期資產(chǎn)被部 署。所述流程轉(zhuǎn)換文件消息由所述流程引擎發(fā)布,所述流程轉(zhuǎn)換文件消息包括 用來傳遞所述消息的作為其自身一部分的傳遞數(shù)據(jù)。所述流程引擎通過訂閱和 過濾流程轉(zhuǎn)換文件消息來實(shí)現(xiàn)位置透明傳遞和執(zhí)行流程。
本發(fā)明提供了一種網(wǎng)絡(luò)操作方法,所述網(wǎng)絡(luò)包括至少一個(gè)物理服務(wù)器和一 消息傳輸層,每一個(gè)所述物理服務(wù)器包括一個(gè)用于網(wǎng)絡(luò)的面向月良務(wù)的集成服務(wù) 器,每個(gè)所述集成服務(wù)器包括一流程引擎。設(shè)計(jì)時(shí),生成一個(gè)與要執(zhí)行的流程 對(duì)應(yīng)的流程模型。所述流程模型包括至少一個(gè)與所述流程相關(guān)的活動(dòng)以及至少 一個(gè)與所述活動(dòng)相關(guān)的步驟。運(yùn)行期產(chǎn)物從流程模型中生成。所述運(yùn)行期產(chǎn)物 包括至少一個(gè)在對(duì)應(yīng)流程引擎上執(zhí)行的可部署的可執(zhí)行邏輯單元、 一個(gè)用于處 理觸發(fā)新流程的流程轉(zhuǎn)換文件消息的第 一 隊(duì)列和 一個(gè)調(diào)節(jié)流程;溪型的流程步 驟之間的轉(zhuǎn)換的第二隊(duì)列。每一個(gè)可執(zhí)行邏輯單元作為對(duì)應(yīng)的流程引擎的運(yùn)行 期資產(chǎn)部署到物理服務(wù)器上。根據(jù)所述流程模型被啟動(dòng)所述流程。發(fā)布一個(gè)流
程轉(zhuǎn)換文件消息。所述流程轉(zhuǎn)換文件消息由流程引擎將用來傳遞所述消息的作 為其自身一部分的傳遞數(shù)據(jù)填入。每一個(gè)所述流程引擎訂閱將要被傳遞到安裝在相應(yīng)的集成服務(wù)器上的流程引擎的流程轉(zhuǎn)換文件消息,且過濾發(fā)布到所述消 息傳輸層的其他流程轉(zhuǎn)換文件消息。執(zhí)行所述流程模型的一個(gè)步驟后,新的流 程轉(zhuǎn)換文件消息被發(fā)布,以執(zhí)行所述流程模型的下一步驟。所述流程以位置透 明的方式傳遞和凈丸4亍。
本發(fā)明還提供了一種以計(jì)算機(jī)為媒介的網(wǎng)絡(luò),包括面向月良務(wù)的集成服務(wù) 器、用于網(wǎng)絡(luò)的消息傳輸層和至少一個(gè)物理服務(wù)器。所述集成^l良務(wù)器包括一流 程引擎,所述流程引擎依照用戶自定義的流程模型實(shí)現(xiàn)流程的位置透明分布式 執(zhí)行。所述流程模型定義至少一個(gè)與所述流程相關(guān)的活動(dòng)和至少一個(gè)與所述活 動(dòng)相關(guān)的步驟。每一個(gè)所述物理服務(wù)器包括一個(gè)所述集成服務(wù)器。每一所述集 成服務(wù)器包括流程引擎、在設(shè)計(jì)時(shí)基于設(shè)計(jì)時(shí)的流程模型生成的運(yùn)行期產(chǎn)物、 至少一個(gè)觸發(fā)器和流程片段文件。所述運(yùn)行期產(chǎn)物包括至少一個(gè)程序包和用于 所述消息傳輸層的兩個(gè)隊(duì)列。每一個(gè)所述程序包與一個(gè)或多個(gè)所述活動(dòng)的邏輯 組合相對(duì)應(yīng)。所述兩個(gè)隊(duì)列包括用于處理觸發(fā)新流程的流程消息的第一隊(duì)列和 用于調(diào)節(jié)流程模型的流程步驟之間的轉(zhuǎn)換的第二隊(duì)列。每一個(gè)所述觸發(fā)器負(fù)責(zé) 訂閱將要被傳遞到安裝在對(duì)應(yīng)集成服務(wù)器上的流程引擎的流禾呈轉(zhuǎn)換文件消息, 并過濾發(fā)布在消息傳輸層上的流程轉(zhuǎn)換文件消息。所述流程片萃殳文件只定義與 對(duì)應(yīng)的邏輯服務(wù)器相關(guān)的流程步驟。所述流程轉(zhuǎn)換文件消息由流程引擎發(fā)布, 所述流程轉(zhuǎn)換文件消息包括用來傳遞所述消息的作為所述消息自身一部分的 傳遞數(shù)據(jù)。
本發(fā)明還提供了 一種應(yīng)用于在多個(gè)面向服務(wù)的集成服務(wù)器的流程引擎,所 述集成服務(wù)器用于具有消息傳輸層的網(wǎng)絡(luò)。所述流程引擎用于執(zhí)行一個(gè)與在設(shè) 計(jì)時(shí)定義的流程^t型一致的流程,所述流程模型包括至少一個(gè)與所述流程相關(guān) 的活動(dòng)和至少一個(gè)與所述活動(dòng)相關(guān)的步驟。每一流程引擎包括從流程模型生 成的運(yùn)行期產(chǎn)物、發(fā)布服務(wù)、訂閱服務(wù)和過濾服務(wù)。所述流程模型與在所述流 程引擎上執(zhí)行的一個(gè)可部署的可執(zhí)行邏輯單元相對(duì)應(yīng)。所述發(fā)布服務(wù)用來發(fā)布 流程轉(zhuǎn)換文件消息,所述流程轉(zhuǎn)換文件消息通過流程?I擎填入用來傳遞所述消 息的作為其自身一部分的傳遞數(shù)據(jù)。所述訂閱服務(wù)用來訂閱將要被傳遞到安裝在相應(yīng)集成服務(wù)器上的對(duì)應(yīng)的流程引擎的所述流程轉(zhuǎn)換文件消息。所述過濾服 務(wù)用來過濾發(fā)布在消息傳輸層的其他流程轉(zhuǎn)換文件消息。所述消息傳輸層包括 在設(shè)計(jì)時(shí)的流程模型中生成的兩個(gè)隊(duì)列,所述隊(duì)列包括處理觸發(fā)新流程的流程 轉(zhuǎn)換文件消息的第 一 隊(duì)列和調(diào)節(jié)所述流程模型的流程步驟之間的轉(zhuǎn)換的第二 隊(duì)列。在所述流程模型的一個(gè)步驟執(zhí)行后,所述發(fā)布服務(wù)發(fā)布一個(gè)新的流程轉(zhuǎn) 換文件消息,以執(zhí)行所述流程模型的下一步驟。所述流程以位置透明的方式傳 遞和4丸行。
容易知道,"服務(wù)" 一詞對(duì)應(yīng)于硬件、軟件、固件和/或可編程邏輯電路的 任意適當(dāng)?shù)慕M合。
為使本發(fā)明更加容易理解,下面將結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳 纟田的4苗述。
圖1為向企業(yè)提供BPM服務(wù)的傳統(tǒng)網(wǎng)絡(luò)的示意圖。
圖2為一流程圖,顯示了發(fā)生在圖1中的全球POS零售企業(yè)運(yùn)作中的一 個(gè)流程。
圖3-5展示了與圖2中流程相關(guān)的一些網(wǎng)絡(luò)交易,并以之為示范說明了與
典型集中編制引擎相關(guān)的一些問題。
圖6為本發(fā)明的改進(jìn)的網(wǎng)絡(luò)配置的示意圖,所述改進(jìn)的網(wǎng)絡(luò)配置使用分布
式編制引擎處理JMS通信。
圖7-9展示了本發(fā)明與圖2中流程相關(guān)的一些網(wǎng)絡(luò)交易。 圖10為本發(fā)明使位置透明分布式執(zhí)行的客戶端/服務(wù)器開發(fā)結(jié)構(gòu)圖。 圖11為建立完全分布式執(zhí)行,隔離流程執(zhí)行位置的運(yùn)4亍期產(chǎn)物的簡(jiǎn)圖。 圖12為本發(fā)明交互模型的示意圖,其中利用JMS消息實(shí)現(xiàn)流程編制步驟轉(zhuǎn)換。
圖13為本發(fā)明一實(shí)施例的基本消息結(jié)構(gòu)圖。
圖14為本發(fā)明實(shí)施例的集成服務(wù)器的示意圖,說明了所述集成服務(wù)器中觸發(fā)器、過濾及條件的使用。
圖15為本發(fā)明利用圖12中的交互模型執(zhí)行圖2中流程的過程圖。 圖16為本發(fā)明配置網(wǎng)絡(luò)的方法的實(shí)施例的流程圖。 圖17為本發(fā)明操作網(wǎng)絡(luò)的方法的實(shí)施例的流程圖。
具體實(shí)施例方式
提供BPM服務(wù)的一種常規(guī)方法包括(如圖1所示,下文將進(jìn)一步詳細(xì)說 明)一個(gè)集中流程引擎架構(gòu)和一個(gè)流程實(shí)例與網(wǎng)絡(luò)中的可用引擎之一的綁定。 市場(chǎng)上有售的最通用的BPM產(chǎn)品使用這樣一種集中引擎。該集中引擎將所有 步驟的狀態(tài)維持在一個(gè)業(yè)務(wù)流程中,所述業(yè)務(wù)流程與地理位置廣泛分布的系統(tǒng) 相互作用。 一個(gè)典型例子包括BPM運(yùn)行時(shí)間,它依賴于業(yè)務(wù)流程執(zhí)行語言
(BPEL , Business Process Execution Language )標(biāo)準(zhǔn)作為定義不同流程步驟如 何排序的運(yùn)行時(shí)間模型的方法。雖然這些產(chǎn)品通常允許配置多個(gè)引擎,但是這 些步驟就不能盡可能好,盡可能可靠地執(zhí)行,例如,因?yàn)樗鼈兪軓V域網(wǎng)質(zhì)量和 可靠性的限制且通常與步驟間的轉(zhuǎn)換同步運(yùn)行。
同樣,即使可配置多個(gè)流程引擎,每個(gè)流程實(shí)例通常在其整個(gè)生命周期 內(nèi)都與特定的引擎綁定。此外,就某些方面而言,許多這類產(chǎn)品缺乏抽象過程, 例如,確定該模型可以執(zhí)行這些步驟的位置,使得有必要熟悉企業(yè)的^出設(shè)施 來部署一個(gè)功能性的業(yè)務(wù)流程。
圖1為一個(gè)向一家企業(yè)提供BPM服務(wù)的傳統(tǒng)網(wǎng)絡(luò),其會(huì)幫助解釋這個(gè)問 題。圖l顯示了一家需要執(zhí)行業(yè)務(wù)流程的多部門企業(yè),其中三臺(tái)設(shè)備均包括與 一個(gè)銷售點(diǎn)(POS)流程交互的應(yīng)用程序。圖1中有一個(gè)位于中心位置的廣域 網(wǎng)102。該企業(yè)分布在三個(gè)示例性地點(diǎn)并包括三種活動(dòng)/業(yè)務(wù)。其中,如圖所示, 財(cái)務(wù)點(diǎn)104在美國(guó)馬薩諸塞州的波士頓。財(cái)務(wù)點(diǎn)104包括第一財(cái)務(wù)應(yīng)用程序
(Fal)106和第二財(cái)務(wù)應(yīng)用程序(Fa2)108。第一流程引擎服務(wù)于財(cái)務(wù)點(diǎn)104 。 圖中顯示生產(chǎn)點(diǎn)112在中國(guó)北京。類似的,它包括第一生產(chǎn)應(yīng)用程序(Mal) 114和第二生產(chǎn)應(yīng)用程序(Ma2) 116。第二流程引擎服務(wù)于生產(chǎn)點(diǎn)112。最后,零售點(diǎn)120設(shè)在日本的東京。零售點(diǎn)120包括第一零售應(yīng)用程序(Sal) 122 和第二零售應(yīng)用程序(Sa2) 124。
圖2為圖1中的全球POS零售企業(yè)的運(yùn)作流程的示例性流程圖。從圖2 中可以看出,幾個(gè)流程步驟與位于不同地理區(qū)域的系統(tǒng)交互(零售點(diǎn)120 ,財(cái) 務(wù)點(diǎn)104以及生產(chǎn)點(diǎn)112 )。對(duì)這一流程的"l丸行過程而言,它必須與可通過廣 域網(wǎng)102訪問的的資源通信。本例中的每個(gè)通道(swim-lane) 202/204/206用 來表明 一 個(gè)流程步驟到另 一 個(gè)流程步驟的轉(zhuǎn)換何時(shí)需要與 一 個(gè)不同的設(shè)備遠(yuǎn) 程連接。
簡(jiǎn)單來說,購(gòu)買208開始,在零售點(diǎn)120調(diào)用第一零售應(yīng)用程序122,財(cái) 務(wù)點(diǎn)104通過第一財(cái)務(wù)應(yīng)用程序106檢查折扣情況210,然后經(jīng)由第二級(jí)財(cái)務(wù) 應(yīng)用程序108^r查出售的貨物212。使用第二零售應(yīng)用程序124來記錄此次購(gòu) 買214并使庫(kù)存量與之一致216。如果存貨充足,第二零售應(yīng)用程序124就命 令補(bǔ)進(jìn)存貨218。如果庫(kù)存偏低,則通過第一生產(chǎn)應(yīng)用程序114使生產(chǎn)點(diǎn)112 收到一個(gè)補(bǔ)貨請(qǐng)求220,且使用第二生產(chǎn)應(yīng)用程序116發(fā)出一個(gè)重新進(jìn)貨命令 222 。
使用現(xiàn)有的這種方法時(shí),該流程以非最佳形式執(zhí)行。然而,這種執(zhí)行的非 最佳流程可以用來解釋本發(fā)明實(shí)施例中的分布式執(zhí)行技術(shù)的優(yōu)點(diǎn)。因此,圖3-5 展示了一些網(wǎng)絡(luò)通信,這些網(wǎng)絡(luò)通信與圖2中作為典型集中編排引擎相關(guān)問題 的示例的流程相關(guān)。如圖3所示,零售點(diǎn)120啟動(dòng)一個(gè)新的流程302并與第一 財(cái)務(wù)應(yīng)用程序106交互來^r查折扣情況,然后返回到其中一個(gè)流程引擎找出下 一步做什么304。這是一個(gè)關(guān)于該流程實(shí)例將與哪個(gè)流程引擎連接的主觀判斷。 在這種情況下,選擇設(shè)在波士頓的設(shè)備中的引擎IIO僅為舉例并不以此為限制。 易知,將一個(gè)流程與圖中任一引擎綁定的效果大致相同,通過下文的描述將更 加清楚。
如圖4所示,所述流程接著與第二財(cái)務(wù)應(yīng)用程序交互檢查出售的貨物,然 后返回到流程引擎IIO找出下一步做什么402。所述流程接著就必須與第二零 售應(yīng)用程序124交互確定存貨并返回到流程引擎IIO找出下一步做什么502 。雖然圖2中的流程還沒有完成,但集中式流程執(zhí)行的效果很容易看出來。 特別是有大量的必須橫跨廣域網(wǎng)的遠(yuǎn)程連接的情況。易知,這種方法會(huì)導(dǎo)致低 效、網(wǎng)絡(luò)擁塞、潛在的無效(例如,由于網(wǎng)絡(luò)問題所造成的)和/或在網(wǎng)絡(luò)設(shè) 計(jì)和BPM供給上的技術(shù)的復(fù)雜。
通過與這種不便方法對(duì)比,本發(fā)明實(shí)施例具體提供了 一種按照綜合設(shè)計(jì)時(shí) 間和綜合分布運(yùn)^f亍時(shí)間來組織的BPM產(chǎn)品架構(gòu)。
流程模型的創(chuàng)建可以是一個(gè)由商業(yè)用戶和/或訓(xùn)練有素的IT開發(fā)者來完 成的基于用戶的活動(dòng)。易知,在許多情況下,流程模型的創(chuàng)建是兩種類型角色 的協(xié)作。在本發(fā)明的實(shí)施例中,該BMP產(chǎn)品架構(gòu)允許流程模型圖被實(shí)施和儲(chǔ) 存在一儲(chǔ)存庫(kù)中,該儲(chǔ)存庫(kù)由各種市場(chǎng)上有售的代碼管理系統(tǒng)進(jìn)行本地管理和 選擇性支持。
設(shè)計(jì)時(shí)間資產(chǎn),例如,流程模型定義,所述時(shí)間資產(chǎn)遵循業(yè)務(wù)流程建模表 示法(BPMN, Business Process Modeling Notation) i兌明,侈'B口,其可以凈皮專爭(zhēng) 化成運(yùn)行期產(chǎn)物,所述運(yùn)行期產(chǎn)物遍布整個(gè)企業(yè)但不必配置任何特定位置信 息。通過產(chǎn)生這些運(yùn)行期產(chǎn)物的開發(fā)技術(shù)實(shí)現(xiàn)該方法中用于將執(zhí)行流程步驟的 位置與BPM流程引擎隔離開的部分。
產(chǎn)生的所述運(yùn)行期產(chǎn)物使業(yè)務(wù)流程能以分布式的方式來才丸行。 一個(gè)合適的 消息傳輸協(xié)議(例如,Java消息服務(wù)(JMS)消息傳輸)為共同執(zhí)行一個(gè)流 程模型的多個(gè)流程引擎提供通信。
此外,實(shí)現(xiàn)一個(gè)例如JMS的消息傳輸協(xié)議及流程引擎所使用的實(shí)現(xiàn)方式, 可以通過利用消息的發(fā)布和訂閱作為核心架構(gòu)的一部分,以幫助實(shí)現(xiàn)流量控 制、資源分配、可靠投遞等,從而可以增加系統(tǒng)的可靠性和可管理性。
如圖l所示的布置相比,分布式執(zhí)行減少了廣域網(wǎng)內(nèi)的跳數(shù)。使用合適的 消息傳輸協(xié)議,如JMS,考慮了附加的性能和可靠性,因?yàn)樵摿鞒棠茉诿恳粋€(gè) 本地地域內(nèi) 一 直執(zhí)行最少的流程片段且將不同地域間的轉(zhuǎn)換排序。
圖6是本發(fā)明的改進(jìn)的網(wǎng)絡(luò)配置的示意圖,所述改進(jìn)的網(wǎng)絡(luò)配置使用分布 式編排引擎處理JMS通信。從圖6可知,根據(jù)本發(fā)明的實(shí)施例,每個(gè)設(shè)備現(xiàn)在都包括一個(gè)流程引擎610/618/626。這樣,所述廣域網(wǎng)就可以滿足JMS通信 的流量需求了。
下文詳細(xì)討論了 JMS以及其他適用協(xié)議是如何結(jié)合本發(fā)明的實(shí)施例使用 的。簡(jiǎn)單來說,所述BPM流程引擎通過發(fā)布信息來提供分布式處理能力的功 能,該信息被所需位置上的的流程引擎實(shí)例訂閱。JMS或者任意其他合適的協(xié) 議可提供消息傳輸層。
圖7-9說明了本發(fā)明實(shí)施例中與圖2所示流程相關(guān)的一些網(wǎng)絡(luò)通信。在圖 7中,所述流程被本地觸發(fā)702,然后流程引擎626發(fā)布一個(gè)消息704從而與 第一財(cái)務(wù)應(yīng)用程序606交互以4企查折扣,并返回到本地流程引擎610以確定下 一步的活動(dòng)706。利用一種提供位置透明的技術(shù)使所述消息706被財(cái)務(wù)點(diǎn)604 的流程引擎610訂閱而不是被生產(chǎn)點(diǎn)612的流程引擎618訂閱。這項(xiàng)技術(shù)下面 ^l夸更為詳細(xì)i也討i侖。
如圖8所示,所述流程與第二財(cái)務(wù)應(yīng)用程序608交互以;險(xiǎn)查在廣域網(wǎng)上出 售的貨物(例如,在財(cái)政點(diǎn)604而不在整個(gè)廣域網(wǎng)602上)并返回到本地流 程引擎610找出下一步做什么802,其中涉及到發(fā)布一將被流程引擎626接收 的消息804,流程引擎626將調(diào)用第二銷售應(yīng)用程序624來記錄銷售情況。如 圖9 ,流程返回902到本地流程引擎626以利用局域網(wǎng)與第二銷售應(yīng)用程序624 交互來核對(duì)存貨量。
雖然圖2所示的流程尚未結(jié)束,但分布式流程處理的有益效果已經(jīng)很明顯。 例如,由于所述流程沒有與任何一個(gè)給定的流程引擎綁定,因此廣域網(wǎng)602上 的跳數(shù)減少了很多。這意味著,單獨(dú)的流程步驟可以在與之交互的應(yīng)用程序附 近執(zhí)行,從而減少了 (有時(shí)甚至消除)過度依賴廣域網(wǎng)602的需求。此外,當(dāng) 多個(gè)應(yīng)用程序與 一個(gè)流程可1擎配合使用時(shí),與這些應(yīng)用程序交互的步驟間的轉(zhuǎn) 換通常不需要訪問局域網(wǎng)。因此,容易知道,相比集中式網(wǎng)絡(luò)架構(gòu)中一個(gè)流程 與網(wǎng)絡(luò)中某處的一引擎綁定,全部(或基本上全部)分布式執(zhí)行更好地利用了 企業(yè)的基礎(chǔ)設(shè)施。
現(xiàn)在描述實(shí)現(xiàn)位置透明分布式執(zhí)行的技術(shù)。圖IO是本發(fā)明實(shí)現(xiàn)位置透明分布式執(zhí)行的一個(gè)客戶端/服務(wù)器開發(fā)架構(gòu)的示意圖。在客戶端,提供了一個(gè)
設(shè)計(jì)工具1002 (例如,webMethods designer或任何其他具有支持以下類似功 能能力的工具)。 一個(gè)開發(fā)工具是一個(gè)集成開發(fā)環(huán)境(IDE, Integrated Development Environment )框架1004,流程可以在其中建才莫和實(shí)施。在本實(shí) 施例里,所述IDE框架1004可以是一個(gè)市場(chǎng)上有售的基于Eclipse的IDE框 架。在設(shè)計(jì)時(shí),模型儲(chǔ)存在本地文件系統(tǒng)1020中,并可以隨意在一個(gè)代碼控 制系統(tǒng)檢查。例如,市場(chǎng)上有售的Synopsys⑧的VCS⑧軟件就可以用于代碼控 制,調(diào)試和/或其他目的。
開發(fā)架構(gòu)的客戶端的設(shè)計(jì)工具1002還提供了許多其他能力。例如,實(shí)現(xiàn) 一個(gè)類似Windows explorer-like工具的庫(kù)瀏覽器1006以關(guān)注(例如,簡(jiǎn)單列表, 分類等)已發(fā)布的、共享的資產(chǎn)。類似地, 一個(gè)方案視窗1012 (例如,類似 Windows系統(tǒng)中explore的界面)提交當(dāng)前項(xiàng)目中的至少一些資產(chǎn)。嵌入式元 數(shù)據(jù)庫(kù)1008存儲(chǔ)了所述工具操作的所有元數(shù)據(jù)的本地副本。顧名思義,集成 服務(wù)器瀏覽器(IS Browser)是一個(gè)特別配置來與集成服務(wù)器1026交互的服務(wù) 瀏覽器。生成/調(diào)試模塊1016是為了實(shí)現(xiàn)模擬、測(cè)試目的和/或?qū)嶋H部署目的, 將設(shè)計(jì)時(shí)對(duì)象轉(zhuǎn)換為運(yùn)行時(shí)對(duì)象的模塊。最后,流程模擬器1018是這樣一種 工具,其被用來應(yīng)用屬性去定義流程以使得所述流程最終可以比任何將要生成 的運(yùn)行期產(chǎn)物先模擬出來。在本發(fā)明的實(shí)施例中, 一個(gè)分層集成流程模擬軟件 程序包,例如SIMPROCESS (CACI產(chǎn)品公司有售)可以作為流程模擬器 1018的一部分或與其配合實(shí)施。當(dāng)然,本發(fā)明的實(shí)施例也可以使用其他流程模 擬產(chǎn)品。
作為這種架構(gòu)的 一部分,設(shè)計(jì)時(shí)存在的資產(chǎn)被用來生成流程引擎可以執(zhí)行 的運(yùn)行期產(chǎn)物。所述集成服務(wù)器1026是流程引擎的承載體,其具有一個(gè)部署 模型,運(yùn)行期資產(chǎn)通過所述部署模型包含在程序包里。程序包是一個(gè)部署單元, 所述部署單元將例如所有的服務(wù)、數(shù)據(jù)模型、文件、屬性和/或成為該流程模 型的可執(zhí)行映像的配置參數(shù)等封包。簡(jiǎn)單來說,集成服務(wù)器是一個(gè)面向服務(wù)的 服務(wù)器,能夠跨多個(gè)集成服務(wù)器實(shí)例實(shí)現(xiàn),所述每個(gè)集成服務(wù)器實(shí)例可能位于不同的物理服務(wù)器上。因此,集成服務(wù)器1026也可以執(zhí)行流程引擎的多個(gè)實(shí) 例。
開發(fā)架構(gòu)的服務(wù)器端可以隨意設(shè)有許多其他類型的服務(wù)器。例如,任務(wù)引 擎1028是一個(gè)人類活動(dòng)管理系統(tǒng),類似于一個(gè)郵件服務(wù)器,用來發(fā)送通知、 曰程提醒和/或?yàn)橛脩籼峁﹫?zhí)行的任務(wù)。我的服務(wù)器1032是一個(gè)用來為管理該 系統(tǒng)提供用戶界面和應(yīng)用程序的入口。在本實(shí)施例中,我的服務(wù)器1032可以 是AG軟件公司有售的"My webMethods Server"類型的服務(wù)器。本發(fā)明的實(shí) 施例中,庫(kù)服務(wù)器1024和分析引擎1030同樣可以是AG軟件公司出售的。
定義流程模型的商業(yè)用戶沒有必要關(guān)注該模型將在哪里以及將如何被執(zhí) 行。在本發(fā)明的實(shí)施例中,需要做的只是結(jié)合邏輯服務(wù)器將流程中的活動(dòng)簡(jiǎn)單 定義為多個(gè)步驟。
通常, 一個(gè)BPM流程部署是IT開發(fā)者與商業(yè)用戶合作的成果。 但是,本實(shí)施例中包括一個(gè)抽象層用以支持全分布式執(zhí)行,該抽象層具有將流 程執(zhí)行的地點(diǎn)與模型以及流程引擎隔開的能力。圖11是對(duì)該流程的簡(jiǎn)要說明。
圖11包括了設(shè)計(jì)時(shí)步驟1102和運(yùn)行時(shí)步驟1104 。該功能在設(shè)計(jì)時(shí)以模 型的定義1106開始。流程創(chuàng)始人為被稱為邏輯服務(wù)器的模型定義屬性,邏輯 服務(wù)器是流程步驟如何被集合在一起以使得流程引擎所需的必要可執(zhí)行產(chǎn)物 可以在部署時(shí)產(chǎn)生的常用名稱。在上述實(shí)施例在中,該創(chuàng)始人將其邏輯服務(wù)器 分為三組,分別名為"財(cái)務(wù)系統(tǒng)"、"生產(chǎn)系統(tǒng),,和"銷售系統(tǒng)"。接著該創(chuàng)始 人指定其中一個(gè)邏輯服務(wù)器名給每一步驟從而將活動(dòng)集合起來。在這個(gè)實(shí)施例 中,我們將圖2中給定通道中描述的每一步驟指定給同一個(gè)邏輯服務(wù)器。
然后運(yùn)行期產(chǎn)物1108a-d從設(shè)計(jì)時(shí)的模型中生成。在生成階段,設(shè)計(jì)時(shí)的 模型轉(zhuǎn)化為一組服務(wù)、觸發(fā)器1114a-c以及一個(gè)流程片段文件1112a-c (例如, 一個(gè)包括已指定到特定邏輯服務(wù)器的那些流程模型架構(gòu)的定義的XML文件, 下文將對(duì)其進(jìn)行更詳細(xì)的描述),所述流程片段文件1112a-c定義了流程創(chuàng)始人 集合到一個(gè)邏輯服務(wù)器中的所有流程步驟。在本發(fā)明流程模型的實(shí)施例中,定 義了三個(gè)邏輯服務(wù)器,創(chuàng)建了三個(gè)程序包1110a-c。然后所述程序包1110a-c(或可執(zhí)行邏輯單元)就直接保存在流程引擎中。另外,在生成階段還將在JMS 消息供應(yīng)者上創(chuàng)建兩個(gè)JMS隊(duì)列,其中一個(gè)1116a用來處理觸發(fā)一個(gè)新流程實(shí) 例的信息,另外一個(gè)隊(duì)列1116b用來處理模型的步驟之間的轉(zhuǎn)換。
JMS消息或任何其他適用的消息協(xié)議都可用于流程編制步驟的轉(zhuǎn)換。圖 12是本發(fā)明交互模型的示意圖,其中利用JMS消息傳輸實(shí)現(xiàn)流程編制步驟轉(zhuǎn) 換。每一個(gè)程序包生成時(shí),描述那些步驟的必要內(nèi)容被指定到同一邏輯服務(wù)器, 然后被部署到一個(gè)或多個(gè)物理服務(wù)器上并作為運(yùn)行時(shí)資產(chǎn)存儲(chǔ)在集成服務(wù)器 1026的運(yùn)行時(shí)間存放區(qū)。需要時(shí)流程引擎會(huì)將這些資產(chǎn)載入內(nèi)存。
所述流程片段文件1112a-c是通過設(shè)計(jì)時(shí)建^f莫工具定義的整個(gè)流程定義的 一部份。 一個(gè)流程片段文件1112a-c可能只包括對(duì)那些已指定到一個(gè)特定的邏 輯服務(wù)器的流程模型結(jié)構(gòu)的定義。觸發(fā)器1114a-c負(fù)責(zé)訂閱指定的JMS消息, 所述JMS消息被傳送到安裝在當(dāng)前集成服務(wù)器1026上的流程引擎 610/626/618。觸發(fā)器1114a-c可以對(duì)發(fā)布到集成服務(wù)器1206的JMS消息傳輸 層的JMS消息執(zhí)行必要的過濾。
現(xiàn)在我們進(jìn)一步詳細(xì)說明消息流程。流程引擎在流程步驟間發(fā)布稱作流程 轉(zhuǎn)換文件(PTDs, Process Transition Documents )的消息,所述流程步驟由 模型生成的觸發(fā)器1114預(yù)訂。每當(dāng)模型中的一個(gè)步驟被執(zhí)行和完成, 一個(gè)新 的流程轉(zhuǎn)換文件就會(huì)被發(fā)布以觸發(fā)該模型中將要執(zhí)行的下 一 步驟。例如暫時(shí)回 到圖2,當(dāng)"購(gòu)買"步驟208發(fā)布一個(gè)流程轉(zhuǎn)換文件作為一個(gè)JMS消息時(shí),"檢 查折扣,,步驟210就開始了。 一旦"檢查折扣"步驟210完成,接著它就會(huì)發(fā) 布一個(gè)流程轉(zhuǎn)換文件來開始下一步驟,也就是4企查出售的貨物"步驟212。 這種消息流程將一直進(jìn)行直到該流程全部執(zhí)行結(jié)束。
圖13展示了本發(fā)明實(shí)施例中的基本消息結(jié)構(gòu)。如圖13所示, 一個(gè)流程轉(zhuǎn) 換文件包括消息首部1302,消息屬性1304/1306/1308/1310以及消息主體1312。 該消息屬性可能包括,例如,目標(biāo)步驟標(biāo)識(shí)符1304、模型標(biāo)識(shí)符1306、流程 標(biāo)識(shí)符1308和流程版本1310。所述流程引擎利用這些消息屬性來提供位置透 明傳遞和步驟執(zhí)行能力。在運(yùn)行時(shí),這些流程轉(zhuǎn)換文件消息屬性可由流程引擎填入,從而在分布式執(zhí)行環(huán)境中,用于傳遞消息的傳遞數(shù)據(jù)成為該消息本身的 一部分。此外, 一個(gè)流程模型需要傳遞給該流程模型中下一個(gè)步驟的任何業(yè)務(wù)
數(shù)據(jù)均可在消息主體1312中攜帶。
圖14為本發(fā)明實(shí)施例的集成服務(wù)器的示意圖,說明了所述集成服務(wù)器內(nèi) 觸發(fā)器,過濾以及條件的使用。 一般來說,觸發(fā)器1114是作為核心集成服務(wù) 器1026的部分的設(shè)備,其被流程引擎使用。觸發(fā)器1114用來定義對(duì)消息的訂 閱,并定義如果一個(gè)與該訂閱匹配的消息發(fā)布到JMS消息層1206時(shí)該執(zhí)行什 么服務(wù)。觸發(fā)器1114被BPM運(yùn)行時(shí)間用來定義一個(gè)對(duì)流程轉(zhuǎn)換文件的訂閱。
定義觸發(fā)器1114的條件,該條件使用被填入的消息屬性作為JMS消息屬 性。接著這些條件被用作一個(gè)特定消息的過濾器,所述消息由流程引擎發(fā)布到 一個(gè)隊(duì)列(例如, 一個(gè)JMS隊(duì)列)。所述過濾器1114可由以下屬性值構(gòu)造 目標(biāo)步驟標(biāo)識(shí)符、模型標(biāo)識(shí)符、流程標(biāo)識(shí)符和模型版本。對(duì)消息進(jìn)行過濾使流 程引擎610/618/626只接收一定會(huì)調(diào)用流程步驟的消息,所述流程步驟包含在 部署于特定流程引擎610/618/626上的流程片段文件1112a-c中。
圖15顯示了圖2中的流程利用圖12中的本發(fā)明的交互模型來執(zhí)行的過程。 這樣,JMS消息傳輸可用于流程編制步驟轉(zhuǎn)換。現(xiàn)在參考圖2中的流程, 一個(gè) 流程在零售點(diǎn)620被觸發(fā),"購(gòu)買"流程步驟208執(zhí)行并與第一零售應(yīng)用程序 622交互。這個(gè)步驟將在當(dāng)用戶或外部應(yīng)用程序發(fā)布一個(gè)消息到為這個(gè)流程模 型創(chuàng)建的正確的步驟接收隊(duì)列1116a時(shí)發(fā)生。生成的所述觸發(fā)器定閱已放在隊(duì) 列中的特定的消息類型并使用該消息的通用名稱作為一個(gè)過濾器,從而使與收 到的消息相關(guān)的步驟放入流程片段文件1112b中然后被執(zhí)行。在這種情況下, 因?yàn)樗?購(gòu)買,,步驟208是該模型的第一步驟所以被執(zhí)行。因此,與該步驟 相關(guān)的消息在圖15中都用"1 "標(biāo)明。
然后,當(dāng)"購(gòu)買,,步驟208已執(zhí)行完后,流程引擎626將發(fā)布一個(gè)流程轉(zhuǎn) 換文件到正確的隊(duì)列1116b來處理步驟的轉(zhuǎn)換。當(dāng)一個(gè)步驟發(fā)布PTD消息時(shí), 會(huì)在消息中加入一定的消息屬性,這些消息屬性可用于將該消息傳遞至定義了 該流程中要執(zhí)行的下一步驟的流程引擎610/618/626。這些屬性包括例如,模型標(biāo)識(shí)符、目標(biāo)步驟標(biāo)識(shí)符、流程標(biāo)識(shí)符以及流程版本(如圖13所示)。
所述部署在財(cái)務(wù)點(diǎn)604的集成服務(wù)器1026中的觸發(fā)器1114a訂閱流程轉(zhuǎn) 換文件。然而,為方便訂閱正確的PTD消息,觸發(fā)器1114a對(duì)消息屬性進(jìn)行 過濾,并使用模型標(biāo)識(shí)符,目標(biāo)步驟標(biāo)識(shí)符,流程標(biāo)識(shí)符以及流程版本來傳遞 該消息并使其與現(xiàn)有流程實(shí)例相對(duì)應(yīng)。然后,所述流程引擎610將從流程片段 文件1112a中步驟定義的地點(diǎn),以確定執(zhí)行哪一步驟。在這種情況下,與收到 的消息中的目標(biāo)步驟標(biāo)識(shí)符相匹配的步驟"檢查折扣"流程步驟210,該步驟 210與第一財(cái)務(wù)應(yīng)用程序606交互。
雖然圖2中所示的流程尚未執(zhí)行完成,從前述說明中可以理解本發(fā)明的排 序和發(fā)布訂閱4支術(shù)。
從以上網(wǎng)絡(luò)配置和才喿作技術(shù)的具體例子中可以推斷,圖16是本發(fā)明網(wǎng)絡(luò) 配置方法的流程圖。圖16中實(shí)施例的提供了這樣一種網(wǎng)絡(luò)配置方法。提供一 面向服務(wù)的集成服務(wù)器,所述集成服務(wù)器包括一流程引擎(步驟S1602)。將 至少一個(gè)物理服務(wù)器連接到網(wǎng)絡(luò)(步驟S1604)。每個(gè)所述物理服務(wù)器包括一 個(gè)所述集成服務(wù)器,每一集成服務(wù)器包括一個(gè)所述流程引擎。提供一個(gè)網(wǎng)絡(luò)用 消息傳輸層(步驟S1606)。在設(shè)計(jì)時(shí), 一個(gè)流程被模擬從而生成一個(gè)流程模 型(步驟S1608),所述流程模型定義至少一個(gè)與流程相關(guān)的活動(dòng)和至少一個(gè) 與所述活動(dòng)相關(guān)的步驟,每個(gè)所述活動(dòng)被指定到一邏輯服務(wù)器,從而使得,部 署時(shí)所述流程引擎所需的任何可執(zhí)行產(chǎn)物都可以生成(步驟S1610)。運(yùn)行期 產(chǎn)物是從設(shè)計(jì)時(shí)的流程模型中生成的(步驟S1612)。這個(gè)流程包括從設(shè)計(jì)時(shí) 流程模型中生成至少一個(gè)程序包的步驟,每個(gè)所述程序包都與一個(gè)所述邏輯服 務(wù)器相對(duì)應(yīng),并包括至少一個(gè)觸發(fā)器和一個(gè)流程片段文件,每個(gè)所述觸發(fā)器負(fù) 責(zé)訂閱流程轉(zhuǎn)換文件消息,所述流程消息轉(zhuǎn)換文件被傳遞到安裝在相應(yīng)集成服 務(wù)器中的流程引擎,并且所述觸發(fā)器還負(fù)責(zé)過濾發(fā)布到消息傳輸層的流程轉(zhuǎn)換 文件消息,所述流程片段文件只定義那些與相應(yīng)的邏輯服務(wù)器相關(guān)的流程步 驟;以及在消息傳輸層創(chuàng)建兩個(gè)隊(duì)列,其中一個(gè)隊(duì)列用來處理觸發(fā)新流程的消 息,另一個(gè)隊(duì)列用來調(diào)節(jié)流程模型的流程步驟間的轉(zhuǎn)換。每個(gè)所述程序包都部署到一個(gè)物理服務(wù)器。所述程序包被部署為相應(yīng)的流程引擎的一個(gè)運(yùn)行期資產(chǎn)
(步驟S1614X流程轉(zhuǎn)換文件消息由流程引擎發(fā)布,每個(gè)所述流程轉(zhuǎn)換文件 消息都包括用于傳遞該消息并作為其自身的一部分的傳遞數(shù)據(jù)。因此,所述流 程引擎用于通過流程位置轉(zhuǎn)換文件的訂閱和過濾來提供位置透明傳遞和流程 執(zhí)行。
圖17是本發(fā)明網(wǎng)絡(luò)運(yùn)行方法的實(shí)施例的流程圖。參考圖17,本實(shí)施例提 供了一種網(wǎng)絡(luò)運(yùn)行方法,包括至少一個(gè)物理服務(wù)器和一個(gè)消息傳輸層,每一所 述物理服務(wù)器包括一個(gè)提供給網(wǎng)絡(luò)的面向服務(wù)的集成服務(wù)器,每個(gè)所述集成服 務(wù)器包括一個(gè)流程引擎。在設(shè)計(jì)時(shí),生成一個(gè)與待執(zhí)行的流程相應(yīng)的流程模型 (步驟S1702)。所述流程模型包括與所述流程相關(guān)的至少一種活動(dòng)和與每一 所述活動(dòng)相關(guān)的至少一個(gè)步驟。運(yùn)行期產(chǎn)物在所述流程模型中生成(步驟 S1704 )。所述運(yùn)行期產(chǎn)物包括在一個(gè)相應(yīng)流程引擎上執(zhí)行的至少一個(gè)可執(zhí)行邏 輯部署單元, 一個(gè)用來處理觸發(fā)新流程的流程轉(zhuǎn)換文件的第一隊(duì)列,和一個(gè)用 來調(diào)節(jié)所述流程的步驟間的轉(zhuǎn)換的第二隊(duì)列。每一個(gè)可執(zhí)行邏輯的單元都被部 署到一個(gè)物理服務(wù)器,作為相應(yīng)流程引擎的一個(gè)運(yùn)行期資產(chǎn)(步驟S1706)。 一個(gè)流程按照所述流程模型啟動(dòng)(步驟S1708 )。 一個(gè)流程轉(zhuǎn)移文件被發(fā)布(步 驟S1710)。所述流程引擎將傳遞數(shù)據(jù)填入所述流程轉(zhuǎn)移文件,所述傳遞數(shù)據(jù) 用于傳遞所述流程轉(zhuǎn)換文件消息并作為所述消息自身的一部分。每個(gè)所述流程 引擎訂閱將被傳遞到安裝在相應(yīng)集成服務(wù)器上的相應(yīng)流程引擎的流程轉(zhuǎn)移文 件,并過濾發(fā)布到消息傳輸層的其他流程轉(zhuǎn)移文件(步驟S1712)。在流程模 型中的 一個(gè)步驟執(zhí)行完后, 一個(gè)新的流程轉(zhuǎn)換文件被發(fā)布以使流程模型中的下 一個(gè)步驟得以執(zhí)行。這樣,所述流程以一種位置透明的方式傳遞和執(zhí)行。
由上述4支術(shù)可以知道本發(fā)明4支術(shù)具有一些相應(yīng)的優(yōu)勢(shì)。例如,所述BPM 流程引擎支持業(yè)務(wù)流程以分布方式執(zhí)行,而通過JMS消息架構(gòu)可以實(shí)現(xiàn)將執(zhí) 行所述流程步驟的位置與流程引擎隔離的。同樣,基于該架構(gòu)的性質(zhì),無論是 在設(shè)計(jì)建模工具中創(chuàng)建一個(gè)業(yè)務(wù)流程的人,還是流程引擎本身都不必要清楚知 道業(yè)務(wù)流程的步驟執(zhí)行的位置。類似地,該業(yè)務(wù)流程的創(chuàng)始人也不必了解企業(yè)使用的資源的物質(zhì)基礎(chǔ)設(shè)施。
由于流程沒有與特定的流程編制引擎綁定,步驟的執(zhí)行可以分布在整個(gè)企 業(yè)。與在一個(gè)單一位置管理業(yè)務(wù)流程的狀態(tài)相比,在分布式執(zhí)行環(huán)境中,業(yè)務(wù) 流程可以更有效地執(zhí)行。尤其當(dāng)企業(yè)是全球化的,并且具有一個(gè)因依賴廣域網(wǎng) 而降低了潛質(zhì)的非集中式計(jì)算環(huán)境時(shí),這種情況更為明顯。此外,這種結(jié)構(gòu)可 以大幅度橫向擴(kuò)展且便于管理。 一般而言,提高處理能力所唯一需要的就是將 生成的流程產(chǎn)物復(fù)制到另外的中央處理器中,這個(gè)過程可以在系統(tǒng)運(yùn)行的同時(shí) 完成的,并且在設(shè)計(jì)時(shí)不需要對(duì)流程模型做任何改變。
使用JMS消息同樣可以通過提供分布式排序支持增加結(jié)構(gòu)的可靠性,該 分布式排序支持可以幫助緩沖被處理的數(shù)據(jù)量的突變。此外,在連接或者非計(jì) 劃的資源中斷發(fā)生的情況下,流程步驟轉(zhuǎn)換的排序可以通過允許系統(tǒng)繼續(xù)本地 處理數(shù)據(jù)來提高可靠性。因此,當(dāng)解決了這些情況后,業(yè)務(wù)程序就可以不丟失 數(shù)據(jù)自動(dòng)恢復(fù)執(zhí)行。
在本發(fā)明的實(shí)施例中,所述集成服務(wù)器可以是AG軟件公司有售的 webMethods集成服務(wù)器。但是,本發(fā)明并不局限于這種服務(wù)器或者集成服務(wù) 器的任何特定的實(shí)施方式。特別地,本發(fā)明可以使用任何其他配置適當(dāng)?shù)募?服務(wù)器。這種情況下可以認(rèn)識(shí)到,有必要相應(yīng)地調(diào)整產(chǎn)物生成技術(shù)。
結(jié)合目前被認(rèn)為是最實(shí)際和最佳的實(shí)施方式對(duì)本發(fā)明進(jìn)行了描述,但必 須認(rèn)識(shí)到本發(fā)明并不是僅限于公開的實(shí)施例,相反的,凡在本發(fā)明的精神和原 則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍 之內(nèi)。
權(quán)利要求
1. 一種網(wǎng)絡(luò)配置方法,包括提供一個(gè)面向服務(wù)的集成服務(wù)器,所述集成服務(wù)器包括一流程引擎;將至少一個(gè)物理服務(wù)器連接至網(wǎng)絡(luò),每個(gè)所述物理服務(wù)器包括一個(gè)所述集成服務(wù)器,所述集成服務(wù)器包括一個(gè)所述流程引擎;提供一用于網(wǎng)絡(luò)的消息傳輸層;在設(shè)計(jì)時(shí)模擬一個(gè)流程以生成一個(gè)流程模型,所述流程模型定義至少一個(gè)與所述流程相關(guān)的活動(dòng)和至少一個(gè)與所述活動(dòng)相關(guān)的步驟;及將每一個(gè)所述活動(dòng)指定到一個(gè)邏輯服務(wù)器上,使得在部署時(shí),所述流程引擎需要的任一可執(zhí)行產(chǎn)物均可生成;在設(shè)計(jì)時(shí)的所述流程模型中生成運(yùn)行期產(chǎn)物,所述運(yùn)行期產(chǎn)物的生成包括在設(shè)計(jì)時(shí)的所述流程模型中生成至少一個(gè)程序包,每個(gè)所述程序包對(duì)應(yīng)于一個(gè)所述邏輯服務(wù)器,所述程序包括至少一個(gè)觸發(fā)器和流程片段文件,每一個(gè)所述觸發(fā)器負(fù)責(zé)訂閱將要被傳遞到安裝在對(duì)應(yīng)集成服務(wù)器上的流程引擎的流程轉(zhuǎn)換文件消息,并過濾發(fā)布在所述消息傳輸層的流程轉(zhuǎn)換文件消息,所述流程片段文件僅定義與對(duì)應(yīng)邏輯服務(wù)器相關(guān)的流程步驟;及在所述消息傳輸層創(chuàng)建兩個(gè)隊(duì)列,所述隊(duì)列包括用于處理觸發(fā)新流程的流程消息的第一隊(duì)列和用于調(diào)節(jié)所述流程模型的流程步驟之間的轉(zhuǎn)換的第二隊(duì)列;及部署每一個(gè)所述程序包到一個(gè)物理服務(wù)器,所述程序包部署為對(duì)應(yīng)流程引擎的一個(gè)運(yùn)行期資產(chǎn);其中,所述流程轉(zhuǎn)換文件消息由所述流程引擎發(fā)布,每個(gè)所述流程轉(zhuǎn)換文件消息包括用來傳遞所述消息的作為所述消息自身一部分的傳遞數(shù)據(jù);其中,所述流程引擎用于通過訂閱和過濾所述流程轉(zhuǎn)換文件消息實(shí)現(xiàn)位置透明傳遞和流程執(zhí)行。
2. 如權(quán)利要求l所述的方法,其特征在于所述流程為業(yè)務(wù)流程。
3. 如權(quán)利要求1所述的方法,其特征在于每一個(gè)所述流程轉(zhuǎn)換文件消息 包括消息首部、消息屬性和消息主體。
4. 如權(quán)利要求3所述的方法,其特征在于所述消息屬性包括目標(biāo)步驟標(biāo) 識(shí)符、才莫型標(biāo)識(shí)符、流程標(biāo)識(shí)符和流程版本。
5. 如權(quán)利要求3所述的方法,其特征在于所述消息主體還包括將^皮傳遞 到所述流程模型中的后續(xù)步驟的業(yè)務(wù)數(shù)據(jù)。
6. 如權(quán)利要求l所述的方法,其特征在于,還包括配置所述消息傳輸層 以支持Java消息服務(wù)消息傳輸,每個(gè)所述流程轉(zhuǎn)換文件消息為Java消息服務(wù) 消息。
7. 如權(quán)利要求l所述的方法,其特征在于,還包括所述流程模型的一個(gè) 步驟執(zhí)行之后,發(fā)布新的流程轉(zhuǎn)換文件消息以執(zhí)行所述流程模型中的下一步 驟。
8. 如權(quán)利要求l所述的方法,其特征在于,還包括在運(yùn)行時(shí),利用所述 流程^I擎將傳遞數(shù)據(jù)填入所述流程轉(zhuǎn)換文件消息。
9. 如權(quán)利要求1所述的方法,其特征在于,還包括避免所述流程在生存 周期內(nèi)與特定流程引擎的綁定。
10. —種網(wǎng)絡(luò)操作方法,所述網(wǎng)絡(luò)包括至少一個(gè)物理服務(wù)器和一個(gè)消息傳 輸層,每個(gè)所述物理服務(wù)器包括一用于所述網(wǎng)絡(luò)的面向服務(wù)的集成服務(wù)器,每 個(gè)所述集成服務(wù)器包括一流程引擎,所述方法包括在設(shè)計(jì)時(shí),生成一個(gè)與將被執(zhí)行的流程相應(yīng)的流程才莫型,所述流程模型包 括至少一個(gè)與所述流程相關(guān)的活動(dòng)和至少一個(gè)與所述活動(dòng)相關(guān)的步驟;從所述流程模型生成運(yùn)行期產(chǎn)物,所述運(yùn)行期產(chǎn)物包括至少 一個(gè)在相應(yīng)流 程引擎上執(zhí)行的可部署的可執(zhí)行邏輯單元,用于處理觸發(fā)新流程的流程轉(zhuǎn)換文件的第 一隊(duì)列和用于調(diào)節(jié)所述流程模型的流程步驟之間的轉(zhuǎn)換的第二隊(duì)列; 將每一個(gè)所述可執(zhí)行邏輯單元作為相應(yīng)的流程引擎的運(yùn)行期資產(chǎn)部署到一物理服務(wù)器,;按照所述流程模型啟動(dòng)所述流程;發(fā)布一個(gè)流程轉(zhuǎn)換文件消息,所述流程轉(zhuǎn)換文件消息由所述流程引擎填入 用來傳遞所述消息的作為所述消息自身的一部分的傳遞數(shù)據(jù);為每一個(gè)所述流程引擎訂閱將要被傳遞到安裝在相應(yīng)集成服務(wù)器上的相應(yīng)流程引擎的所述流程轉(zhuǎn)換文件消息,并過濾發(fā)布在所述消息傳輸層的其它流 程轉(zhuǎn)換文件消息;及在所述流程^t型的一個(gè)步驟執(zhí)行后,發(fā)布一個(gè)新的流程轉(zhuǎn)換文件消息,以 執(zhí)行所述流程模型的下一步驟,其中,所述流程以位置透明方式進(jìn)行傳遞和執(zhí)行。
11. 如權(quán)利要求IO所述的方法,其特征在于所述流程為業(yè)務(wù)流程。
12. 如權(quán)利要求IO所述的方法,其特征在于每一個(gè)所述流程轉(zhuǎn)換文件消 息還包括消息首部、消息屬性和消息主體。
13. 如權(quán)利要求12所述的方法,其特征在于所述消息屬性還包括目標(biāo)步 驟標(biāo)識(shí)符、模型標(biāo)識(shí)符、流程標(biāo)識(shí)符和流程版本。
14. 如權(quán)利要求12所述的方法,其特征在于所述消息主體還包括將被傳 遞到所述流程^t型的后續(xù)步驟的業(yè)務(wù)數(shù)據(jù)。
15. 如權(quán)利要求10所述的方法,其特征在于所述消息傳輸層為Java消 息服務(wù)消息傳輸層,所述流程轉(zhuǎn)換文件消息為Java消息服務(wù)消息。
16. 如權(quán)利要求IO所述的方法,其特征在于,還包括避免所述流程在生存周期內(nèi)與特定流程引擎的綁定。
17. —種以計(jì)算機(jī)為媒介的網(wǎng)絡(luò),包括面向服務(wù)的集成服務(wù)器,所述集成服務(wù)器包括一流程引擎,所述流程引擎 用于依照用戶自定義的流程模型實(shí)現(xiàn)流程的位置透明分布式執(zhí)行,所述流程模 型定義至少一個(gè)與所述流程相關(guān)的活動(dòng)和至少一個(gè)與所述活動(dòng)相關(guān)的步驟;一個(gè)用于網(wǎng)絡(luò)的消息傳輸層;及至少一個(gè)物理服務(wù)器,每個(gè)所述物理服務(wù)器包括一個(gè)所述集成服務(wù)器,每 一個(gè)所述集成服務(wù)器包括 一個(gè)所述流程引擎,運(yùn)行期產(chǎn)物,所述運(yùn)行期產(chǎn)物在設(shè)計(jì)時(shí)基于設(shè)計(jì)時(shí)的所述流程模型生 成,所述運(yùn)行期產(chǎn)物包括至少一個(gè)程序包,每一個(gè)所述程序包與一個(gè)或多個(gè)所述活動(dòng)的邏輯組 合相對(duì)應(yīng),及用于所述消息傳輸層的兩個(gè)隊(duì)列,所述隊(duì)列包括用于處理觸發(fā)新流程 的流程消息的第 一隊(duì)列和用于調(diào)節(jié)所述流程模型的流程步驟之間的轉(zhuǎn)換的第 二隊(duì)列;至少一個(gè)觸發(fā)器,每一個(gè)所述觸發(fā)器負(fù)責(zé)訂閱將傳遞到安裝在相應(yīng)集成 服務(wù)器上的所述流程引擎的流程轉(zhuǎn)換文件消息,并過濾發(fā)布在所述消息傳輸層 的流程轉(zhuǎn)換文件消息;及流程片段文件,所述流程片段文件只定義與相應(yīng)邏輯服務(wù)器相關(guān)的流程步驟;其中,所述流程轉(zhuǎn)換文件消息由所述流程SI擎發(fā)布,每一個(gè)所述流程轉(zhuǎn)換 文件消息包括用來傳遞所述消息的作為所述消息自身一部分的傳遞數(shù)據(jù)。
18. 如權(quán)利要求17所述的網(wǎng)絡(luò),其特征在于所述流程為業(yè)務(wù)流程。
19. 如權(quán)利要求17所述的網(wǎng)絡(luò),其特征在于每一個(gè)所述流程轉(zhuǎn)換文件消息包括消息首部、消息屬性和消息主體。
20. 如權(quán)利要求19所述的網(wǎng)絡(luò),其特征在于所述消息屬性包括目標(biāo)步驟 標(biāo)識(shí)符、模型標(biāo)識(shí)符、流程標(biāo)識(shí)符和流程版本。
21. 如權(quán)利要求19所述的網(wǎng)絡(luò),其特征在于所述消息主體包括將被傳遞 到所述流程模型的后續(xù)步驟的業(yè)務(wù)數(shù)據(jù)。
22. 如權(quán)利要求17所述的網(wǎng)絡(luò),其特征在于所述消息傳輸層為Java消 息服務(wù)消息傳輸層,所述流程轉(zhuǎn)換文件消息為Java消息服務(wù)消息。
23. 如權(quán)利要求17所述的網(wǎng)絡(luò),其特征在于在所述流程模型的一個(gè)步驟 執(zhí)行后,所述流程引擎發(fā)布一個(gè)新的流程轉(zhuǎn)換文件消息,以執(zhí)行所述流程模型 中的下一步驟。
24. 如權(quán)利要求17所述的網(wǎng)絡(luò),其特征在于所述流程模型符合業(yè)務(wù)流程 建模表示法。
25. —種用于多個(gè)面向服務(wù)的集成服務(wù)器的流程引擎,所述集成服務(wù)器用 于具有消息傳輸層的網(wǎng)絡(luò),所述流程引擎用于執(zhí)行一個(gè)與設(shè)計(jì)時(shí)定義的流程模 型一致的流程,所述流程模型包括至少一個(gè)與所述流程相關(guān)的活動(dòng)和至少一個(gè) 與所述活動(dòng)相關(guān)的步驟,每一個(gè)所述流程引擎包括運(yùn)行期產(chǎn)物,所述運(yùn)行期產(chǎn)物從所述流程模型中生成,所述流程模型與 在所述流程引擎上執(zhí)行的一個(gè)可部署的可執(zhí)行邏輯單元相對(duì)應(yīng);發(fā)布服務(wù),用于發(fā)布流程轉(zhuǎn)換文件消息,所述流程轉(zhuǎn)換文件消息由所述流 程引擎填入用來傳遞所述消息的作為所述流程轉(zhuǎn)換文件消息的一部分的傳遞 數(shù)據(jù);訂閱服務(wù),用于訂閱將被傳遞到安裝在對(duì)應(yīng)集成服務(wù)器上的對(duì)應(yīng)流程引擎 的所述流程轉(zhuǎn)換文件消息;過濾服務(wù),用于過濾發(fā)布在所述消息傳輸層的其它流程轉(zhuǎn)換文件消息;其中,所述消息傳輸層包括兩個(gè)從設(shè)計(jì)時(shí)的所述流程;漠型生成的隊(duì)列,所 述隊(duì)列包括用于處理觸發(fā)新流程的流程轉(zhuǎn)換文件的第一隊(duì)列和用于調(diào)節(jié)所述 流程模型的步驟之間的轉(zhuǎn)換的第二隊(duì)列,其中,在所述流程模型的一個(gè)步驟執(zhí)行后,所述發(fā)布服務(wù)發(fā)布一個(gè)新的流程轉(zhuǎn)換文件消息,以執(zhí)行所述流程模型中的下一步驟; 其中,所述流程以位置透明方式被傳遞和執(zhí)行。
26. 如權(quán)利要求25所述的流程引擎,其特征在于所述流程為業(yè)務(wù)流程。
27. 如權(quán)利要求25所述的流程引擎,其特征在于每個(gè)所述流程轉(zhuǎn)換文件 消息包括消息首部、消息屬性和消息主體。
28. 如權(quán)利要求27所述的流程引擎,其特征在于所述消息屬性包括目標(biāo) 步驟標(biāo)識(shí)符、^f莫型標(biāo)識(shí)符、流程標(biāo)識(shí)符和流程版本。
29. 如權(quán)利要求27所述的流程引擎,其特征在于所述消息主體包括將被 傳遞到所述流程模型的后續(xù)步驟的業(yè)務(wù)數(shù)據(jù)。
30. 如權(quán)利要求25所述的流程引擎,其特征在于所述消息傳輸層為Java 消息服務(wù)消息傳輸層,所述流程轉(zhuǎn)換文件消息為Java消息服務(wù)消息。
31. 如權(quán)利要求25所述的流程引擎,其特征在于所述流程引擎操作不受 所述流程在生存周期內(nèi)和特定流程引擎綁定的限制。
32. 如權(quán)利要求25所述的流程引擎,其特征在于所述流程模型符合業(yè)務(wù) 流程建模表示法。
全文摘要
本發(fā)明公開了實(shí)現(xiàn)流程以分布式、位置透明的方式傳遞和執(zhí)行的方法和系統(tǒng)。一個(gè)用于面向服務(wù)的集成服務(wù)的流程引擎被提供給具有消息傳輸層的網(wǎng)絡(luò)。該流程引擎按照設(shè)計(jì)時(shí)的流程模型執(zhí)行流程。每個(gè)流程引擎包括如可部署的可執(zhí)行邏輯單元等運(yùn)行期產(chǎn)物、用于發(fā)布把傳遞數(shù)據(jù)作為其自身的一部分的流程轉(zhuǎn)換文件的發(fā)布服務(wù)、用于訂閱將要被傳遞到相應(yīng)流程引擎上的流程轉(zhuǎn)換文件消息的訂閱服務(wù)和用于過濾發(fā)布到消息傳輸層的其他流程轉(zhuǎn)換文件消息的過濾服務(wù)。消息傳輸層包括處理觸發(fā)新流程的流程轉(zhuǎn)換文件消息的第一隊(duì)列和調(diào)節(jié)流程模型步驟間的轉(zhuǎn)換的第二隊(duì)列。在流程模型中的一個(gè)步驟執(zhí)行后,發(fā)布服務(wù)發(fā)布一個(gè)新的流程轉(zhuǎn)化文件消息以執(zhí)行下一步驟。
文檔編號(hào)G06Q10/00GK101420323SQ20081021499
公開日2009年4月29日 申請(qǐng)日期2008年9月1日 優(yōu)先權(quán)日2007年8月30日
發(fā)明者Jr., 羅伯特·L.·特博瑞奧 申請(qǐng)人:軟件Ag公司