專利名稱:業(yè)務(wù)流程執(zhí)行方法、業(yè)務(wù)流程引擎及其部署方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理技術(shù),特別涉及解決業(yè)務(wù)流程之間的兼容性問題 的技術(shù)。
背景技術(shù):
在當(dāng)前的服務(wù)環(huán)境中,通過業(yè)務(wù)流程執(zhí)行語言(Business Process Execution Language, BPEL )引擎,可以獲得許多服務(wù)。目前,BPEL引 擎的產(chǎn)品有很多,例如包括IBM (國際商業(yè)機(jī)器)公司的WebSphereTM 業(yè)務(wù)流程服務(wù)器、Active Endpoints公司的ActiveBPEL 引擎、IBM公 司的BPWS4J產(chǎn)品、Oracle公司的BPEL流程管理器、Bexee、 Cape Clear 公司的OrchestratorTM、以及Parasoft公司的BPEL Maestro 等等。通 過這些BPEL引擎,可以獲得各種各樣服務(wù)。
但是,在實(shí)際的應(yīng)用環(huán)境中,通常無法找到完全匹配的服務(wù)。通常的 情況是用戶可以找到一些所需的服務(wù),但是這些服務(wù)包括一些不兼容的功 能。
不管是在月良務(wù)組合創(chuàng)建階段(service composition build-time)還是在 服務(wù)組合運(yùn)行階段(service composition run畫time),服務(wù)不兼容都是一個 極具挑戰(zhàn)的問題。下面給出兩個服務(wù)不兼容的例子。
(1) 在服務(wù)組合創(chuàng)建階段,由于存在不兼容的功能, 一些服務(wù)不能直 接與其它服務(wù)組合。然而,修2tl艮務(wù)的成本又很高。
(2) 在動態(tài)服務(wù)環(huán)境中,各個服務(wù)供應(yīng)商通常會修改或升級他們的服 務(wù),從而會影響服務(wù)的用戶。此外,在服務(wù)運(yùn)行階段,服務(wù)可能出現(xiàn)一些 錯誤或異常問題,因此如何避免服務(wù)用戶的損失就成為一個亟待解決的問題。然而,由于修改、升級或異常而停止服務(wù)對于服務(wù)用戶的損失巨大。
目前,除了由軟件開發(fā)人員對應(yīng)用程序進(jìn)行修改以外,還沒有在服務(wù) 組合創(chuàng)建階段不對服務(wù)進(jìn)行修改而解決服務(wù)不兼容問題的方法。在服務(wù)組 合運(yùn)行階段,大多數(shù)解決服務(wù)《務(wù)改、升級或異常的方法是停止沖突服務(wù)。 然而,修^J艮務(wù)或停止服務(wù)成本太高并影響太多服務(wù)用戶。
發(fā)明內(nèi)容
為了解決上述現(xiàn)有技術(shù)中存在的問題,本發(fā)明提供了業(yè)務(wù)流程的執(zhí)行 方法,業(yè)務(wù)流程引擎,部署業(yè)務(wù)流程引擎的方法,以及計算機(jī)程序產(chǎn)品。
根據(jù)本發(fā)明的一個方面,提供了一種業(yè)務(wù)流程的執(zhí)行方法,其中,該
業(yè)務(wù)流程利用業(yè)務(wù)流程描述語言預(yù)先定義,所迷方法包括執(zhí)行上述業(yè)務(wù) 流程并監(jiān)視在上述業(yè)務(wù)流程的執(zhí)行過程中(during the execution of the service workflow )產(chǎn)生的事件;以及根據(jù)預(yù)先設(shè)置的跳轉(zhuǎn)規(guī)則,從上述業(yè) 務(wù)流程的一個步^i^轉(zhuǎn)到另一個步驟,從而改變上述業(yè)務(wù)流程的預(yù)先定義 的處理過程(process)。
根據(jù)本發(fā)明的另一個方面,提供了一種業(yè)務(wù)流程引擎,用于執(zhí)行利用 業(yè)務(wù)流程描迷語言預(yù)先定義的業(yè)務(wù)流程,包括事件監(jiān)視單元,用于監(jiān)視 在上述業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件;以&兆轉(zhuǎn)單元,用于根據(jù)預(yù)先 設(shè)置的跳轉(zhuǎn)規(guī)則,將上述業(yè)務(wù)流程從上述業(yè)務(wù)流程的一個步驟跳轉(zhuǎn)到另一 個步驟,從而改變上述業(yè)務(wù)流程的預(yù)先定義的處理過程。
根據(jù)本發(fā)明的另一個方面,提供了一種部署業(yè)務(wù)流程引擎的方法,該 業(yè)務(wù)流程引擎用于執(zhí)行利用業(yè)務(wù)流程描述語言預(yù)先定義的業(yè)務(wù)流程,并包 括事件監(jiān)視單元,用于監(jiān)視在上述業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件; 以及跳轉(zhuǎn)單元,用于根據(jù)預(yù)先設(shè)置的跳轉(zhuǎn)規(guī)則,將上述業(yè)務(wù)流程從上述業(yè) 務(wù)流程的一個步驟跳轉(zhuǎn)到另一個步驟,從而改變上述業(yè)務(wù)流程的預(yù)先定義 的處理過程。
根據(jù)本發(fā)明的另一個方面,提供了一種計算機(jī)程序產(chǎn)品,存儲在計算 機(jī)可用介質(zhì)上,包括計算機(jī)可讀程序代碼,用于4吏計算裝置執(zhí)行上述業(yè)務(wù)流程的執(zhí)行方法,其中,該業(yè)務(wù)流程是利用業(yè)務(wù)流程描述語言預(yù)先定義
的,所述方法包括執(zhí)行上述業(yè)務(wù)流程并監(jiān)視在上述業(yè)務(wù)流程的執(zhí)行過程 中產(chǎn)生的事件;以及根據(jù)預(yù)先設(shè)置的跳轉(zhuǎn)規(guī)則,從上述業(yè)務(wù)流程的一個步 驟跳轉(zhuǎn)到另一個步驟,從而改變上述業(yè)務(wù)流程的預(yù)先定義的處理過程。
相信通過以下結(jié)合附圖對本發(fā)明具體實(shí)施方式
的說明,能夠使人們更 好地了解本發(fā)明上述的特點(diǎn)、優(yōu)點(diǎn)和目的。
圖1A是根據(jù)本發(fā)明的一個實(shí)施例的業(yè)務(wù)流程的執(zhí)行方法的流程圖1B是根據(jù)本發(fā)明的實(shí)施例的業(yè)務(wù)流程的執(zhí)行方法的詳細(xì)流程圖2是根據(jù)本發(fā)明的實(shí)施例的跳轉(zhuǎn)過程的一個實(shí)例;
圖3是根據(jù)本發(fā)明的實(shí)施例的跳轉(zhuǎn)過程的另一個實(shí)例;
圖4是根據(jù)本發(fā)明的實(shí)施例的跳轉(zhuǎn)過程的另一個實(shí)例;
圖5是根據(jù)本發(fā)明的另一個實(shí)施例的業(yè)務(wù)流程引擎的方框圖。
具體實(shí)施例方式
下面就結(jié)合附圖對本發(fā)明的各個優(yōu)選實(shí)施例進(jìn)行詳細(xì)的說明。 業(yè)務(wù)流程的執(zhí)行方法
圖1A是根據(jù)本發(fā)明的一個實(shí)施例的業(yè)務(wù)流程的執(zhí)行方法的流程圖。 如圖1A所示,首先,在步驟101,執(zhí)行業(yè)務(wù)流程并監(jiān)視在業(yè)務(wù)流程的執(zhí)行 過程中產(chǎn)生的事件。其中,在該步驟執(zhí)行的業(yè)務(wù)流程是利用例如業(yè)務(wù)流程 描述語言(Business Process Specification Language, BPSL),又或稱為 業(yè)務(wù)流程建才莫i吾言(Business Process Modeling Language, BPML )預(yù)先 定義的,然而,本實(shí)施例的業(yè)務(wù)流程也可以利用本領(lǐng)域的技術(shù)人員公知的 其它語言或未來開發(fā)的語言定義,本發(fā)明對此沒有任何限制。
在本實(shí)施例中,在業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件是指該業(yè)務(wù)的執(zhí) 行過程中發(fā)生的可以由業(yè)務(wù)流程引擎監(jiān)視到的各種事件,例如訂票服務(wù)發(fā) 送中"接收用戶信息"的事件,下面將對其進(jìn)行詳細(xì)描述。例如,在采用IBM公司的WebSphere 業(yè)務(wù)流程服務(wù)器的情況下, 可以利用通用事件基礎(chǔ)構(gòu)架(Common Event Infrastructure, CEI)來監(jiān) 視在業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件。當(dāng)然,本發(fā)明并不限于此,例如 可以采用Active Endpoints公司的ActiveBPELTM引擎、IBM公司的 BPWS4J產(chǎn)品、Oracle公司的BPEL流程管理器、Bexee、 Cape Clear公 司的OrchestratorTM、以及Parasoft公司的BPEL Maestro 等等,已經(jīng) 它們相應(yīng)的監(jiān)視工具,只要是可以執(zhí)行業(yè)務(wù)流程并監(jiān)視在業(yè)務(wù)流程的執(zhí)行 過程中產(chǎn)生的事件即可。
最后,在步驟105,根據(jù)預(yù)先設(shè)置的跳轉(zhuǎn)規(guī)則,從上述業(yè)務(wù)流程的一 個步驟跳轉(zhuǎn)到另一個步驟。其中,預(yù)先設(shè)置的跳轉(zhuǎn)規(guī)則利用上述業(yè)務(wù)流程 描述語言根據(jù)事件-^Hf-動作(Event-Condition-Action, ECA)規(guī)則設(shè)置, 然而,應(yīng)該理解,可以利用本領(lǐng)域的技術(shù)人員公知的任何語言和規(guī)則設(shè)置 跳轉(zhuǎn)規(guī)則,只要能夠清楚地描述跳轉(zhuǎn)條件和跳轉(zhuǎn)目的即可,本發(fā)明對此沒 有任何限制。
通常,業(yè)務(wù)流程服務(wù)器或引擎都具有服務(wù)調(diào)用功能,例如,在采用IBM 公司的WebSphereTM業(yè)務(wù)流程服務(wù)器的情況下,可以利用適配動作管理器 (Adaptive Action Manager)來實(shí)現(xiàn)上述跳轉(zhuǎn)。本發(fā)明并不限于此,例如 可以采用Active Endpoints公司的ActiveBPELTM引擎、IBM公司的 BPWS4J產(chǎn)品、Oracle公司的BPEL流程管理器、Bexee、 Cape Clear公 司的OrchestratorTM、以及Parasoft公司的BPEL Maestro 等等各自已 有的服務(wù)調(diào)用功能;當(dāng)然,也可以采用另外的程序來實(shí)現(xiàn),總之,只要在 需要的時候能夠?qū)崿F(xiàn)上iii兆轉(zhuǎn)功能即可,本發(fā)明對此沒有任何限制。 本實(shí)施例的跳轉(zhuǎn)規(guī)則主要包括以下三個方面
事件(Event)用于定義該跳轉(zhuǎn)規(guī)則的觸發(fā)事件,也就是說,如果在上 述步驟101中監(jiān)視到在業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件與該觸發(fā)事件一 致時,則進(jìn)一步判斷是否滿足該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)條件;
條件(Condition)用于定義該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)條件,如果滿足該M, 則執(zhí)行該跳轉(zhuǎn)規(guī)則的動作,如果不滿足條件,則執(zhí)行該業(yè)務(wù)流程的當(dāng)前步廒.
動作(Action)用于定義該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)目的,即應(yīng)該跳轉(zhuǎn)到的流 程中的活動,也就是說,如果滿足該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)條件,則將上述業(yè)務(wù) 流程從當(dāng)前執(zhí)行的步驟跳轉(zhuǎn)到該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)目的的步驟。
并表示為如下形式
On—EVENT EventID IF ConditionExp DO ActionExp
其中EventID表示觸發(fā)事件,ConditionExp表示跳轉(zhuǎn)條件,ActionExp 表示跳轉(zhuǎn)目的。應(yīng)該理解,這里給出跳轉(zhuǎn)規(guī)則的只是一種示例性表示形式, 可以利用本領(lǐng)域的技術(shù)人員公知的任何方式表示跳轉(zhuǎn)規(guī)則,只要能夠利用 其實(shí)現(xiàn)跳轉(zhuǎn)功能即可。
具體地,圖IB示出了根據(jù)上述實(shí)施例的一個優(yōu)選方式執(zhí)行業(yè)務(wù)流程 方法的詳細(xì)流程圖。在步驟101通過業(yè)務(wù)流程引擎(例如IBM公司的 Websphere Process Server)執(zhí)行業(yè)務(wù)流程并通過事件監(jiān)視器(例如IBM 公司的Wehsphere Business Monitor)監(jiān)視在業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生 的事件之后,在步驟1051,判斷監(jiān)視到的事件是否是上述跳轉(zhuǎn)規(guī)則中定義 的觸發(fā)事件。如果在步驟1051監(jiān)視到上述跳轉(zhuǎn)規(guī)則中定義的觸發(fā)事件,則 進(jìn)行到步驟1052。否則,返回到步驟101。
接著,在步驟1052,判斷是否滿足該跳轉(zhuǎn)規(guī)則中定義的跳轉(zhuǎn)條件。如 果在步驟1052判斷滿足該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)條件,則進(jìn)行到步驟1053。否 則,返回到步驟101。
接著,在步驟1053,確定上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的步驟。
接著,在步驟1054,根據(jù)上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的步驟和該跳轉(zhuǎn)規(guī) 則的偏移量,計算跳轉(zhuǎn)目的,其中設(shè)置偏移量的具體細(xì)節(jié)將在下面參考實(shí) 例2和3進(jìn)行詳細(xì)描述。此外,應(yīng)該理解,設(shè)置偏移量只是確定跳轉(zhuǎn)目的 的一種可選方式,本發(fā)明也可以不通過偏移量,而直接將跳轉(zhuǎn)目的i殳置為 上述業(yè)務(wù)流程的某個步驟,具體細(xì)節(jié)將在下面參考實(shí)例l-3進(jìn)行描述。
最后,在步驟1055,從上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的步驟跳轉(zhuǎn)到該跳轉(zhuǎn) 規(guī)則的跳轉(zhuǎn)目的,從而實(shí)現(xiàn)本實(shí)施例的跳轉(zhuǎn)功能。下面通過實(shí)例1-3詳細(xì)描述在步驟105中進(jìn)行的跳轉(zhuǎn)過程。 實(shí)例l
圖2是根據(jù)本發(fā)明的實(shí)施例的業(yè)務(wù)i;j^呈的執(zhí)行方法中跳轉(zhuǎn)過程的一個
實(shí)例。在圖2中,標(biāo)號201表示旅行社的訂票業(yè)務(wù)流程,標(biāo)號205表示航 空公司的業(yè)務(wù)流程。在航空公司的業(yè)務(wù)流程205中,為了給VIP用戶和非 VIP用戶提供不同的服務(wù),在步驟2051 (接收用戶信息)和步驟2053 (接 M行路線)之間引入一個判斷步驟2052,即在步驟2052中判斷用戶是 否為VIP用戶,如果不是,則執(zhí)行步驟2053,如果是VIP用戶,則在另 一分支為VIP用戶提供一站式服務(wù)。順便提及,在引入該判斷步驟之后, 在訂票業(yè)務(wù)流程201和航空公司的業(yè)務(wù)流程205之間出現(xiàn)了不兼容。 為了解決二者之間的不兼容,在實(shí)例1中設(shè)置了如下跳轉(zhuǎn)規(guī)則 On一EVENT Accept_customer information IF MsgFrom (Booking service) DO Jump (Accept一customerinformation, Accept itinerary) 其中
觸發(fā)事件(EventID) = Accq)t_customer_information (接收用戶信息) 跳轉(zhuǎn)條件(ConditionExp) = MsgFrom (Booking service)(消息是否 來自于訂票服務(wù))
沒匕轉(zhuǎn)目的(ActionExp ) = Jump (Accept—customer information, Accept」tinerary)(從接收用戶信息跳轉(zhuǎn)到接^行路線)
也就是說,本實(shí)施例的業(yè)務(wù)流程的執(zhí)行方法在執(zhí)行業(yè)務(wù)流程的過程中 監(jiān)視在業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件,如果監(jiān)視到上述觸發(fā)事件,即 在業(yè)務(wù)流程205執(zhí)行到步驟2051時,監(jiān)視到"接收用戶信息"事件的發(fā) 生,則判斷跳轉(zhuǎn)條件"消息是否來自于訂票服務(wù)"。如果消息不是來自于 訂票業(yè)務(wù)流程201,則業(yè)務(wù)流程205進(jìn)行到步驟2052。如果消息來自于訂 票業(yè)務(wù)流程201,則執(zhí)行該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)步驟,即從業(yè)務(wù)流程加5的當(dāng) 前步驟2052跳轉(zhuǎn)到步驟2053 (接^行路線)。從而,通過本實(shí)施例的 業(yè)務(wù)流程的執(zhí)行方法避免了訂票業(yè)務(wù)流程201和航空公司的業(yè)務(wù)流程205 之間的不兼容。實(shí)例2
圖3是根據(jù)本發(fā)明的實(shí)施例的業(yè)務(wù)流程的執(zhí)行方法中跳轉(zhuǎn)過程的另一 個實(shí)例。在圖3中,標(biāo)號301表示沒有設(shè)置跳轉(zhuǎn)規(guī)則之前的訂票業(yè)務(wù)流程, 標(biāo)號305表示設(shè)置跳轉(zhuǎn)規(guī)則之后的訂票業(yè)務(wù)流程。在訂票業(yè)務(wù)流程301中, 只有攜帶信用卡的用戶可以使用該業(yè)務(wù)流程,為了讓沒有攜帶信用卡的用 戶使用訂票業(yè)務(wù)流程301,在實(shí)例2中設(shè)置了如下跳轉(zhuǎn)規(guī)則
On EVENT Accept_customer_information DO Jump (Acceptcustomer information, Ticket—service)
其中
觸發(fā)事件(EventID) = Accept_customer_information (接收用戶信息) 跳轉(zhuǎn)條件(ConditionExp )=缺省(即只要監(jiān)視到觸發(fā)事件即執(zhí)行跳 轉(zhuǎn)步驟)
浪^轉(zhuǎn)目的 (ActionExp ) = Jump (Acceptcustomer—information, Ticket_service)(從接收用戶信息跳轉(zhuǎn)到機(jī)票服務(wù))
也就是說,本實(shí)施例的業(yè)務(wù)流程的執(zhí)行方法在執(zhí)行業(yè)務(wù)流程301的過 程中監(jiān)視在業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件,如果監(jiān)視到上述觸發(fā)事件, 即在業(yè)務(wù)流程301執(zhí)行到步驟3011時,監(jiān)視到"接收用戶信息"事件的 發(fā)生,則執(zhí)行該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)步驟,即從業(yè)務(wù)流程301的當(dāng)前步驟3011 跳轉(zhuǎn)到步驟3013 (機(jī)票服務(wù))。從而,通過本實(shí)施例的業(yè)務(wù)流程的執(zhí)行方 法可以在沒有攜帶信用卡時通過用戶輸入來使用業(yè)務(wù)流程301 。
實(shí)例3
圖4是根據(jù)本發(fā)明的實(shí)施例的業(yè)務(wù)流程的執(zhí)行方法中跳轉(zhuǎn)過程的另一 個實(shí)例。在圖4中,標(biāo)號401表示沒有設(shè)置跳轉(zhuǎn)規(guī)則之前的訂票業(yè)務(wù)流程, 標(biāo)號405表示設(shè)置跳轉(zhuǎn)規(guī)則之后的訂票業(yè)務(wù)流程。在訂票業(yè)務(wù)流程401中, 在機(jī)票服務(wù)之后檢查付款情況,為了在機(jī)票服務(wù)之前檢查付款,在實(shí)例3 中設(shè)置了如下兩個跳轉(zhuǎn)規(guī)則:
跳轉(zhuǎn)規(guī)則1
On EVENTAccept一customerinformation DO Jump(Accept_customer_information, Check_payment) 其中
觸發(fā)事件(EventID) = Accept—customer—information (接收用戶信息) 跳轉(zhuǎn)條件(ConditionExp)=缺省(即只要監(jiān)視到觸發(fā)事件即執(zhí)行跳 轉(zhuǎn)步驟)
跳轉(zhuǎn)目的 (ActionExp ) = Jump (Accept customer information, Check_payment)(從接收用戶信息跳轉(zhuǎn)到檢查付款) 跳轉(zhuǎn)規(guī)則2
On EVENTCheck_paymentDOJump (Check_payment, Ticket service) 其中
觸發(fā)事件(EventID) = Check_payment (檢查付款) 跳轉(zhuǎn)條件(ConditionExp)=缺省(即只要監(jiān)視到觸發(fā)事件即執(zhí)行跳 轉(zhuǎn)步驟)
浪匕轉(zhuǎn)目的(ActionExp) = Jump (Check_payment, Ticket service)(從 檢查付款跳轉(zhuǎn)到機(jī)票服務(wù))
也就是說,本實(shí)施例的業(yè)務(wù)流程的執(zhí)行方法在執(zhí)行業(yè)務(wù)流程401的過 程中監(jiān)視在業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件,如果監(jiān)視到上述跳轉(zhuǎn)規(guī)則 1的觸發(fā)事件,即在業(yè)務(wù)流程401執(zhí)行到步驟4011時,監(jiān)視到"接收用 戶信息"事件的發(fā)生,則執(zhí)行該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)步驟,即從業(yè)務(wù)流程401 的當(dāng)前步驟4011跳轉(zhuǎn)到步驟4013 (檢查付款)。此外,如果監(jiān)視到上述 跳轉(zhuǎn)規(guī)則2的觸發(fā)事件,即在業(yè)務(wù)流程401執(zhí)行到步驟4013時,監(jiān)視到"檢 查付款"事件的發(fā)生,則執(zhí)行該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)步驟,即從業(yè)務(wù)流程401 的當(dāng)前步驟4013跳轉(zhuǎn)到步驟4012 (機(jī)票服務(wù))。從而,通過本實(shí)施例的 業(yè)務(wù)流程的執(zhí)行方法可以改變業(yè)務(wù)流程401中步驟4012和步驟4013的順 序。
在本實(shí)施例中,在從上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的步驟跳轉(zhuǎn)到該跳轉(zhuǎn)規(guī) 則的跳轉(zhuǎn)目的的步驟之前,M上述業(yè)務(wù)流程的當(dāng)前的執(zhí)行環(huán)境,例如在上述實(shí)例1中,在從步驟2051跳轉(zhuǎn)到步驟2053之前,保存包括在步驟2051 處接收到的用戶信息在內(nèi)的與服務(wù)執(zhí)行有關(guān)的全部環(huán)境變量,以在后續(xù)步 驟中使用。
此外,在本實(shí)施例中,可以在服務(wù)組合創(chuàng)建階段設(shè)置一個或多個上迷 跳轉(zhuǎn)規(guī)則以避免兩個或兩個以上的服務(wù)之間的不兼容問題,也可以在服務(wù) 運(yùn)行階段設(shè)置一個或多個上述跳轉(zhuǎn)規(guī)則以解決服務(wù)可能出現(xiàn)的錯誤或異常 問題。此外,可以針對一個服務(wù)或一個服務(wù)組合設(shè)置一個或一組跳轉(zhuǎn)規(guī)則。 然而,應(yīng)該理解,只要需要,可以為任何服務(wù)、在服務(wù)的任何階段設(shè)置任 何跳轉(zhuǎn)規(guī)則,可以在不修改可執(zhí)行的服務(wù)本身的情況下,解決服務(wù)不兼容 和沖突而不修改或停止服務(wù),本發(fā)明對此沒有任何限制。
可選地,在本實(shí)施例中,上^J^轉(zhuǎn)規(guī)則的跳轉(zhuǎn)目的可以利用偏移量設(shè) 置,也就是說,根據(jù)上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的步驟和所述跳轉(zhuǎn)規(guī)則的跳 轉(zhuǎn)目的的偏移量,計算跳轉(zhuǎn)目的的步驟。例如,在上述實(shí)例2中,將跳轉(zhuǎn) 規(guī)則的偏移量設(shè)置為向下2個步驟,在執(zhí)行跳轉(zhuǎn)步驟時,從業(yè)務(wù)流程301 的當(dāng)前步驟3011向下跳轉(zhuǎn)2個步驟,即跳轉(zhuǎn)到步驟3013。又例如,在上 述實(shí)例3中,將跳轉(zhuǎn)規(guī)則2的偏移量可以設(shè)置為向上1個步驟,在執(zhí)行跳 轉(zhuǎn)規(guī)則2的跳轉(zhuǎn)步驟時,從業(yè)務(wù)流程401的當(dāng)前步驟幼13向上跳轉(zhuǎn)1個步 驟,即跳轉(zhuǎn)到步驟4011。
通過使用本實(shí)施例的業(yè)務(wù)流程的執(zhí)行方法,在部分不兼容的服務(wù)進(jìn)行 組合時通過設(shè)置跳轉(zhuǎn)規(guī)則,不需要對可執(zhí)行的服務(wù)本身進(jìn)行修改,從而極 大地降低了服務(wù)開發(fā)和再利用的成本。
此外,通過使用本實(shí)施例的業(yè)務(wù)流程的執(zhí)行方法,服務(wù)供應(yīng)商可以在 相對穩(wěn)定的服務(wù)中設(shè)置跳轉(zhuǎn)規(guī)則,從而不需要對可執(zhí)行的服務(wù)本身進(jìn)行修 改即可為不同的用戶提供不同的服務(wù)。
此外,通過使用本實(shí)施例的業(yè)務(wù)流程的執(zhí)行方法,可以通過修改跳轉(zhuǎn) 規(guī)則方便地對服務(wù)進(jìn)行升級和修改,而不需要升級和修改服務(wù)本身。
此外,通過使用本實(shí)施例的業(yè)務(wù)流程的執(zhí)行方法,可以通過設(shè)置跳轉(zhuǎn) 規(guī)則解決服M誤和異常情況,從而極大地降低了停止服務(wù)帶來的損失。業(yè)務(wù)流程引擎
在同一發(fā)明構(gòu)思下,圖5是根據(jù)本發(fā)明的另一個實(shí)施例的業(yè)務(wù)流程引 擎的方框圖。下面就結(jié)合該圖,對本實(shí)施例進(jìn)行描述。對于那些與前面實(shí) 施例相同的部分,適當(dāng)省略其說明。
如圖5所示,本實(shí)施例的業(yè)務(wù)流程引擎500用于執(zhí)行利用業(yè)務(wù)流程描 述語言預(yù)先定義的業(yè)務(wù)流程,包括事件監(jiān)視單元501,用于監(jiān)視在上述 業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件;條件判斷單元505,當(dāng)上述事件監(jiān)視 單元501監(jiān)視到跳轉(zhuǎn)規(guī)則的觸發(fā)事件發(fā)生時,判斷是否滿足該跳轉(zhuǎn)規(guī)則的 跳轉(zhuǎn)條件;以;SJ^轉(zhuǎn)單元510,用于根據(jù)預(yù)先設(shè)置的跳轉(zhuǎn)規(guī)則,將上述業(yè) 務(wù)流程從上述業(yè)務(wù)流程的一個步驟跳轉(zhuǎn)到另 一個步驟,從而改變上述業(yè)務(wù) 流程的處理過程。
可選地,本實(shí)施例的業(yè)務(wù)流程引擎500還可以包括現(xiàn)有的業(yè)務(wù)流程引 擎,例如BPEL引擎525。也就是說,本實(shí)施例的業(yè)務(wù)流程引擎500可以 基于BPEL引擎525進(jìn)行擴(kuò)展或改進(jìn)而獲得。BPEL引擎525,例如,包 括IBM公司的WebSphere 業(yè)務(wù)流程服務(wù)器、Active Endpoints公司的 ActiveBPELTM引擎、IBM公司的BPWS4J產(chǎn)品、Oracle公司的BPEL流 程管理器、Bexee、 Cape Clear 乂>司的OrchestratorTM、以及Parasoft公 司的BPEL Maestro 等等。除了 BPEL引擎525,也可以基于本領(lǐng)域的 技術(shù)人員//^的其它業(yè)務(wù)流程引擎進(jìn)行擴(kuò)展或改進(jìn),本發(fā)明對此沒有任何 限制。
可選地,本實(shí)施例的業(yè)務(wù)流程引擎500還可以包括現(xiàn)有的其它7>知部 件,例如通用事件基礎(chǔ)構(gòu)架(Common Event Infrastructure, CEI)515, 它用于捕獲在BPEL引擎525執(zhí)行業(yè)務(wù)流程的過程中產(chǎn)生的事件。除了 CEI 515,也可以使用本領(lǐng)域的技術(shù)人員>5^的其它產(chǎn)品實(shí)現(xiàn)此功能,例如BEA Weblogic公司的Tuxedo 事件代理/監(jiān)視器(Broker/Monitor),以及 Oracle公司的業(yè)務(wù)活動監(jiān)視器等等,本發(fā)明對此沒有任何限制。
可選地,本實(shí)施例的業(yè)務(wù)流程引擎500還可以包括現(xiàn)有的其它^〉知部 件,例如通用執(zhí)行邏輯控制業(yè)務(wù)單元520,它用于在跳轉(zhuǎn)單元510和BPEL引擎525之間進(jìn)行交互,從而實(shí)現(xiàn)跳轉(zhuǎn)功能。
業(yè)務(wù)流程引擎500的其它公知部件的具體細(xì)節(jié)參見Dongsoo Han和 Jaeyong Shim的文獻(xiàn)"A Framework Supporting Dynamic Workflow Interoperation and Enterprise Application Integration" , Proceedings of the 35th Hawaii International Conference on System Sciences, 2002,在此通過 參考引入其整個內(nèi)容(下文中稱為文獻(xiàn)l)。
在本實(shí)施例中,業(yè)務(wù)流程引擎500執(zhí)行的業(yè)務(wù)流程是利用例如業(yè)務(wù)流 程描述語言(Business Process Specification Language, BPSL), 又或稱 為業(yè)務(wù)流程建模語言(Business Process Modeling Language, BPML)預(yù) 先定義的,然而,本實(shí)施例的業(yè)務(wù)流程也可以利用本領(lǐng)域的技術(shù)人員公知 的其它語言或未來開發(fā)的語言定義,本發(fā)明對此沒有任何限制。
在本實(shí)施例中,事件監(jiān)視單元501監(jiān)視的在業(yè)務(wù)流程的執(zhí)行過程中產(chǎn) 生的事件是指該業(yè)務(wù)的執(zhí)行過程中發(fā)生的可以由業(yè)務(wù)流程引擎監(jiān)視到的各 種事件,例如訂票服務(wù)發(fā)送中"接收用戶信息"的事件,下面將對其進(jìn)行 詳細(xì)描述。
在本實(shí)施例中,預(yù)先設(shè)置的跳轉(zhuǎn)規(guī)則利用上述業(yè)務(wù)流程描述語言根據(jù) 事件-^H中-動作(Event-Condition-Action, ECA)規(guī)則設(shè)置,然而,應(yīng)該 理解,可以利用本領(lǐng)域的技術(shù)人員公知的任何語言和規(guī)則設(shè)置跳轉(zhuǎn)規(guī)則, 只要在需要的時候能夠?qū)崿F(xiàn)跳轉(zhuǎn)功能即可,本發(fā)明對此沒有任何限制。
本實(shí)施例的跳轉(zhuǎn)規(guī)則主要包括以下三個方面
事件(Event)用于定義該跳轉(zhuǎn)規(guī)則的觸發(fā)事件,也就是說,如果在上 述步驟101中監(jiān)視到在業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件與該觸發(fā)事件一 致時,并進(jìn)一步判斷是否滿足該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)條件;
條件(Condition)用于定義該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)條件,如果滿足該M, 則執(zhí)行該跳轉(zhuǎn)規(guī)則的動作,如果不滿足條件,則執(zhí)行該業(yè)務(wù)流程的當(dāng)前步
動作(Action)用于定義該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)目的,即應(yīng)該跳轉(zhuǎn)到的流 程中的活動,也就是說,如果滿足該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)條件,則將上述業(yè)務(wù)流程從當(dāng)前執(zhí)行的步則〖轉(zhuǎn)到該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)目的的步驟。
并表示為如下形式
On—EVENT EventID IF ConditionExp DO ActionExp
其中EventID表示觸發(fā)事件,ConditionExp表示跳轉(zhuǎn)*, ActionExp 表示跳轉(zhuǎn)目的。應(yīng)該理解,這里給出跳轉(zhuǎn)規(guī)則的只是一種示例性表示形式, 可以利用本領(lǐng)域的技術(shù)人員公知的任何方式表示跳轉(zhuǎn)規(guī)則,只要能夠利用 其實(shí)現(xiàn)跳轉(zhuǎn)功能即可。
下面通過實(shí)例1-3詳細(xì)描^J^轉(zhuǎn)單元510進(jìn)行的跳轉(zhuǎn)過程。
實(shí)例1
圖2是根據(jù)本發(fā)明的實(shí)施例的業(yè)務(wù)流程引擎500的跳轉(zhuǎn)過程的一個實(shí) 例。在圖2中,標(biāo)號201表示旅行社的訂票業(yè)務(wù)流程,標(biāo)號205表示航空 公司的業(yè)務(wù)流程。在航空公司的業(yè)務(wù)流程205中,為了給VIP用戶和非 VIP用戶提供不同的服務(wù),在步驟2051 (接收用戶信息)和步驟2053 (接 ^行路線)之間引入一個判斷步驟2052,即在步驟2052中判斷用戶是 否為VIP用戶,如果不是,則執(zhí)行步驟2053,如果是VIP用戶,則在另 一分支為VIP用戶提供一站式服務(wù)。順便提及,在引入該判斷步驟之后, 在訂票業(yè)務(wù)流程201和航空公司的業(yè)務(wù)流程205之間出現(xiàn)了不兼容。
為了解決二者之間的不兼容,在實(shí)例1中設(shè)置了如下跳轉(zhuǎn)規(guī)則
OnEVENT Accept—customer information IF MsgFrom (Booking service) DO Jump (Accept—customer—information, Accept—itinerary) 其中
觸發(fā)事件(EventID) = Acc^pt_customer_information (接收用戶信息) 逸b轉(zhuǎn)條件(ConditionExp ) = MsgFrom (Booking service)(消息是否 來自于訂票服務(wù))
浪L轉(zhuǎn)目的 (ActionExp ) = Jump (Accept—customer information, Accept—itinerary)(從接收用戶信息跳轉(zhuǎn)到接M行路線)
也就是說,本實(shí)施例的業(yè)務(wù)流程引擎500在執(zhí)行業(yè)務(wù)流程的過程中利 用事件監(jiān)視單元501監(jiān)視在業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件,并利用條件判斷單元505判斷當(dāng)上述事件監(jiān)視單元501監(jiān)視到上述觸發(fā)事件,即在 業(yè)務(wù)流程205執(zhí)行到步驟2051時,監(jiān)視到"接收用戶信息"事件的發(fā)生 時,是否滿足跳轉(zhuǎn)條件"消息是否來自于訂票服務(wù)"。如果消息不是來自 于訂票業(yè)務(wù)流程201 ,則業(yè)務(wù)流程205進(jìn)行到步驟2052。如果消息來自于 訂票業(yè)務(wù)流程201,則利用跳轉(zhuǎn)單元510執(zhí)行該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)步驟,即 從業(yè)務(wù)流程205的當(dāng)前步驟2052跳轉(zhuǎn)到步驟2053 (接B行路線)。從 而,通過本實(shí)施例的業(yè)務(wù)流程引擎500避免了訂票業(yè)務(wù)流程201和航空公 司的業(yè)務(wù)流程205之間的不兼容。 實(shí)例2
圖3是根據(jù)本發(fā)明的實(shí)施例的業(yè)務(wù)流程引擎500的跳轉(zhuǎn)過程的另一個 實(shí)例。在圖3中,標(biāo)號301表示沒有設(shè)置跳轉(zhuǎn)規(guī)則之前的訂票業(yè)務(wù)流程, 標(biāo)號305表示設(shè)置跳轉(zhuǎn)規(guī)則之后的訂票業(yè)務(wù)流程。在訂票業(yè)務(wù)流程301中, 只有攜帶信用卡的用戶可以使用該業(yè)務(wù)流程,為了讓沒有攜帶信用卡的用 戶使用訂票業(yè)務(wù)流程301,在實(shí)例2中設(shè)置了如下跳轉(zhuǎn)規(guī)則
On EVENT Acceptcustomerinformation DO Jump (Accept—customerinformation, Ticket—service)
其中
觸發(fā)事件(EventID) = Accq)t_customer_information (接收用戶信息) 跳轉(zhuǎn)條件(ConditionExp)=缺省(即只要監(jiān)視到觸發(fā)事件即執(zhí)行跳 轉(zhuǎn)步驟)
為匕轉(zhuǎn)目的 (ActionExp ) = Jump (Accept_customer_information, Ticket_service)(從接收用戶信息跳轉(zhuǎn)到機(jī)票服務(wù))
也就是說,本實(shí)施例的業(yè)務(wù)流程引擎500在執(zhí)行業(yè)務(wù)流程301的過程 中利用事件監(jiān)視單元501監(jiān)視在業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件,并利 用條件判斷單元505判斷當(dāng)上述事件監(jiān)視單元501監(jiān)視到上述觸發(fā)事件, 即在業(yè)務(wù)流程301執(zhí)行到步驟3011時,監(jiān)視到"接收用戶信息"事件的 發(fā)生時,利用跳轉(zhuǎn)單元510執(zhí)行該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)步驟,即從業(yè)務(wù)流程301 的當(dāng)前步驟3011跳轉(zhuǎn)到步驟3013 (機(jī)票服務(wù))。從而,通過本實(shí)施例的業(yè)務(wù)流程引擎500可以在沒有攜帶信用卡時通過用戶輸入來使用業(yè)務(wù)流程 301。
實(shí)例3
圖4是根據(jù)本發(fā)明的實(shí)施例的業(yè)務(wù)流程引擎500的跳轉(zhuǎn)過程的另一個 實(shí)例。在圖4中,標(biāo)號401表示沒有設(shè)置跳轉(zhuǎn)規(guī)則之前的訂票業(yè)務(wù)流程, 標(biāo)號405表示設(shè)置跳轉(zhuǎn)規(guī)則之后的訂票業(yè)務(wù)流程。在訂票業(yè)務(wù)流程401中, 在機(jī)票服務(wù)之后檢查付款情況,為了在機(jī)票服務(wù)之前檢查付款,在實(shí)例3 中設(shè)置了如下兩個跳轉(zhuǎn)規(guī)則
跳轉(zhuǎn)規(guī)則1
On EVENT Acceptcustomerinformation DO Jump (Accept customer information, Check_payment) 其中
觸發(fā)事件(EventID) = Accept_customer_information (接收用戶信息) 跳轉(zhuǎn)條件(ConditionExp)=缺省(即只要監(jiān)視到觸發(fā)事件即執(zhí)行跳 轉(zhuǎn)步驟)
勁匕轉(zhuǎn)目的 (ActionExp ) = Jump (Accept customer information, Check_payment)(從接收用戶信息跳轉(zhuǎn)到檢查付款) 跳轉(zhuǎn)規(guī)則2
On_EVENTCheck_paymentDOJump (Check_payment, Ticket service) 其中
觸發(fā)事件(EventID) = Check_payment (檢查付款) 跳轉(zhuǎn)條件(ConditionExp )=缺省(即只要監(jiān)視到觸發(fā)事件即執(zhí)行跳 轉(zhuǎn)步驟)
跳轉(zhuǎn)目的(ActionExp) = Jump (Check_payment, Ticketservice)(從 檢查付款跳轉(zhuǎn)到機(jī)票服務(wù))
也就是說,本實(shí)施例的業(yè)務(wù)流程引擎500在執(zhí)行業(yè)務(wù)流程401的過程 中利用事件監(jiān)視單元501監(jiān)視在業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件,并利用條件判斷單元505判斷當(dāng)上述事件監(jiān)視單元501監(jiān)視到上iii^轉(zhuǎn)規(guī)則1 的觸發(fā)事件,即在業(yè)務(wù)流程401執(zhí)行到步驟4011時,監(jiān)視到"接收用戶 信息"事件的發(fā)生時,利用跳轉(zhuǎn)單元510執(zhí)行該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)步驟,即 從業(yè)務(wù)流程401的當(dāng)前步驟4011跳轉(zhuǎn)到步驟4013 (檢查付款)。此外, 利用條件判斷單元505判斷當(dāng)上述事件監(jiān)視單元501監(jiān)視到上i^i^轉(zhuǎn)規(guī)則 2的觸發(fā)事件,即在業(yè)務(wù)流程401執(zhí)行到步驟4013時,監(jiān)視到"檢查付 款"事件的發(fā)生時,利用跳轉(zhuǎn)單元510執(zhí)行該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)步驟,即從 業(yè)務(wù)流程401的當(dāng)前步驟4013跳轉(zhuǎn)到步驟4012 (機(jī)票服務(wù))。從而,通 過本實(shí)施例的業(yè)務(wù)流程引擎SOO可以改變業(yè)務(wù)流程401中步驟4012和步驟 4013的順序。
在本實(shí)施例中,業(yè)務(wù)流程引擎500還包括環(huán)境保存單元,用于在上述 跳轉(zhuǎn)單元510進(jìn)行從上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的步驟跳轉(zhuǎn)到該跳轉(zhuǎn)規(guī)則的 跳轉(zhuǎn)目的流程中的步驟之前,保存上述業(yè)務(wù)流程的當(dāng)前的執(zhí)行環(huán)境,例如 在上述實(shí)例l中,在從步驟2051跳轉(zhuǎn)到步驟2053之前,保存包括在步驟 2051處接收到的用戶信息在內(nèi)的與服務(wù)執(zhí)行有關(guān)的全部環(huán)境變量,以在后 續(xù)步驟中使用。
此外,在本實(shí)施例中,業(yè)務(wù)流程引擎500可以在服務(wù)組合創(chuàng)建階段設(shè) 置一個或多個上鈔〖轉(zhuǎn)規(guī)則以避免兩個或兩個以上的服務(wù)之間的不兼容問 題,也可以在服務(wù)運(yùn)行階段設(shè)置一個或多個上述跳轉(zhuǎn)規(guī)則以解決服務(wù)可能 出現(xiàn)的g或異常問題。此外,業(yè)務(wù)流程引擎500可以針對一個服務(wù)或一 個服務(wù)組合設(shè)置一個或一組跳轉(zhuǎn)規(guī)則。然而,應(yīng)該理解,只要需要,業(yè)務(wù) 流程引擎500可以為任何服務(wù)、在服務(wù)的任何階段設(shè)置任何跳轉(zhuǎn)規(guī)則,可 以在不修改可執(zhí)行的服務(wù)本身的情況下,解決服務(wù)不兼容和沖突而不修改 或停止服務(wù),本發(fā)明對此沒有任何限制。
可選地,在本實(shí)施例中,上^t轉(zhuǎn)規(guī)則的跳轉(zhuǎn)目的可以利用偏移量設(shè) 置,也就是說,根據(jù)上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的步驟和所^i^轉(zhuǎn)規(guī)則的跳 轉(zhuǎn)目的的偏移量,計算上述跳轉(zhuǎn)單元510的跳轉(zhuǎn)目的。例如,在上述實(shí)例 2中,將跳轉(zhuǎn)規(guī)則的偏移量設(shè)置為向下2個步驟,在執(zhí)行跳轉(zhuǎn)步驟時,從業(yè)務(wù)流程!301的當(dāng)前步驟3011向下跳轉(zhuǎn)2個步驟,即跳轉(zhuǎn)到步驟3013。 又例如,在上述實(shí)例3中,將跳轉(zhuǎn)規(guī)則2的偏移量可以_沒置為向上1個步 驟,在執(zhí)行跳轉(zhuǎn)規(guī)則2的跳轉(zhuǎn)步驟時,從業(yè)務(wù)流程401的當(dāng)前步驟4013 向上跳轉(zhuǎn)1個步驟,即跳轉(zhuǎn)到步驟4011。
通過使用本實(shí)施例的業(yè)務(wù)流程引擎500,在部分不兼容的服務(wù)進(jìn)行組 合時通過設(shè)置跳轉(zhuǎn)規(guī)則,不需要對可執(zhí)行的服務(wù)本身進(jìn)行修改,從而極大 地降低了服務(wù)開發(fā)和再利用的成本。
此外,通過使用本實(shí)施例的業(yè)務(wù)流程引擎500,服務(wù)供應(yīng)商可以在相 對穩(wěn)定的服務(wù)中設(shè)置跳轉(zhuǎn)規(guī)則,從而不需要對可執(zhí)行的服務(wù)本身進(jìn)行修改 即可為不同的用戶提供不同的服務(wù)。
此外,通過使用本實(shí)施例的業(yè)務(wù)流程引擎500,可以通過修改跳轉(zhuǎn)規(guī) 則方便地對服務(wù)進(jìn)行升級和修改,而不需要升級和修^J艮務(wù)本身。
此外,通過使用本實(shí)施例的業(yè)務(wù)流程引擎500,可以通過設(shè)置跳轉(zhuǎn)規(guī) 則解決服^4t誤和異常情況,從而極大地降低了停止服務(wù)帶來的損失。
部署業(yè)務(wù)流程引擎的方法
在同 一發(fā)明構(gòu)思下,根據(jù)本發(fā)明的另 一個實(shí)施例提供了 一種部署業(yè)務(wù) 流程引擎的方法。下面就對本實(shí)施例進(jìn)行描述,對于那些與前面實(shí)施例相 同的部分,適當(dāng)省略其說明。
在本實(shí)施例的部署業(yè)務(wù)流程引擎的方法中,業(yè)務(wù)流程引擎用于執(zhí)行利 用業(yè)務(wù)流程描述語言預(yù)先定義的業(yè)務(wù)流程,并包括事件監(jiān)視單元,用于 監(jiān)視在上述業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件;以及跳轉(zhuǎn)單元,用于根據(jù) 預(yù)先設(shè)置的跳轉(zhuǎn)規(guī)則,將上述業(yè)務(wù)流程從上述業(yè)務(wù)流程的一個步驟跳轉(zhuǎn)到 另一個步驟,從而改變上述業(yè)務(wù)流程的處理過程。此外,本實(shí)施例的方法 部署的業(yè)務(wù)流程引擎還可以是上述參考圖5的實(shí)施例中描述的業(yè)務(wù)流程引 擎500。
本實(shí)施例的部署業(yè)務(wù)流程引擎的方法的具體細(xì)節(jié)參見上述Dongsoo Han和Jaeyong Shim的文獻(xiàn)1,在此不再贅述。
通過使用本實(shí)施例的部署業(yè)務(wù)流程引擎的方法,在部分不兼容的服務(wù)進(jìn)行組合時通過設(shè)置跳轉(zhuǎn)規(guī)則,不需要對可執(zhí)行的服務(wù)本身進(jìn)行修改,從 而極大地降低了服務(wù)開發(fā)和再利用的成本。
此外,通過使用本實(shí)施例的部署業(yè)務(wù)流程引擎的方法,服M應(yīng)商可 以在相對穩(wěn)定的服務(wù)中設(shè)置跳轉(zhuǎn)規(guī)則,從而不需要對可執(zhí)行的服務(wù)本身進(jìn) 行修改即可為不同的用戶提供不同的服務(wù)。
此外,通過使用本實(shí)施例的部署業(yè)務(wù)流程引擎的方法,可以通過^"改 跳轉(zhuǎn)規(guī)則方便地對服務(wù)進(jìn)行升級和修改,而不需要升級和修改服務(wù)本身。
此外,通過使用本實(shí)施例的部署業(yè)務(wù)流程引擎的方法,可以通過設(shè)置 跳轉(zhuǎn)規(guī)則解決服M誤和異常情況,從而極大地降低了停止服務(wù)帶來的損 失。
計算機(jī)程序產(chǎn) 品
在同 一發(fā)明構(gòu)思下,根據(jù)本發(fā)明的另 一個實(shí)施例提供了 一種計算M 序產(chǎn)品。下面就對本實(shí)施例進(jìn)行描述,對于那些與前面實(shí)施例相同的部分, 適當(dāng)省略其說明。
本實(shí)施例的計算機(jī)程序產(chǎn)品,存儲在計算機(jī)可用介質(zhì)上,包括計算 機(jī)可讀程序代碼,用于使計算裝置執(zhí)行業(yè)務(wù)流程的執(zhí)行方法,其中,該業(yè) 務(wù)流程是利用業(yè)務(wù)流程描述語言預(yù)先定義的,所述方法包括執(zhí)行上述業(yè) 務(wù)流程并監(jiān)視在上述業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件;以及根據(jù)預(yù)先設(shè) 置的跳轉(zhuǎn)規(guī)則,從上述業(yè)務(wù)流程的一個步驟跳轉(zhuǎn)到另一個步驟,從而改變 上述業(yè)務(wù)流程的處理過程。此外,本實(shí)施例的計算M序產(chǎn)品的計算M 序代碼也可以用于使計算裝置執(zhí)行上述參考圖1A的實(shí)施例中描述的業(yè)務(wù) 流程的執(zhí)行方法。
通過使用本實(shí)施例的計算機(jī)程序產(chǎn)品,在部分不兼容的服務(wù)進(jìn)行組合 時通過設(shè)置跳轉(zhuǎn)規(guī)則,不需要對可執(zhí)行的服務(wù)本身進(jìn)行修改,從而極大地 降低了服務(wù)開發(fā)和再利用的成本。
此外,通過使用本實(shí)施例的計算機(jī)程序產(chǎn)品,服務(wù)供應(yīng)商可以在相對 穩(wěn)定的服務(wù)中設(shè)置跳轉(zhuǎn)規(guī)則,從而不需要對可執(zhí)行的服務(wù)本身進(jìn)行修改即 可為不同的用戶提供不同的服務(wù)。此外,通過使用本實(shí)施例的計算機(jī)程序產(chǎn)品,可以通過修改跳轉(zhuǎn)規(guī)則
方便地對服務(wù)進(jìn)行升級和修改,而不需要升級和修^J良務(wù)本身。
此外,通過使用本實(shí)施例的計算機(jī)程序產(chǎn)品,可以通過設(shè)置跳轉(zhuǎn)規(guī)則 解決服M誤和異常情況,從而極大地降低了停止服務(wù)帶來的損失。
以上雖然通過一些示例性的實(shí)施例對本發(fā)明的業(yè)務(wù)流程的執(zhí)行方法, 業(yè)務(wù)流程引擎,部署業(yè)務(wù)流程引擎的方法,以及計算機(jī)程序產(chǎn)品進(jìn)行了詳 細(xì)的描述,但是以上這些實(shí)施例并不是窮舉的,本領(lǐng)域技術(shù)人員可以在本 發(fā)明的精神和范圍內(nèi)實(shí)現(xiàn)各種變化和修改。因此,本發(fā)明并不限于這些實(shí) 施例,本發(fā)明的范圍僅由所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1. 一種業(yè)務(wù)流程的執(zhí)行方法,其中,該業(yè)務(wù)流程利用業(yè)務(wù)流程描述語言預(yù)先定義,所述方法包括執(zhí)行上述業(yè)務(wù)流程并監(jiān)視在上述業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件;以及根據(jù)預(yù)先設(shè)置的跳轉(zhuǎn)規(guī)則,從上述業(yè)務(wù)流程的一個步驟跳轉(zhuǎn)到另一個步驟,從而改變上述業(yè)務(wù)流程的預(yù)先定義的處理過程。
2. 根據(jù)權(quán)利要求l所述的業(yè)務(wù)流程的執(zhí)行方法,其特征在于,所述 跳轉(zhuǎn)規(guī)則至少包括觸發(fā)事件、跳轉(zhuǎn)射ls跳轉(zhuǎn)目的。
3. 根據(jù)權(quán)利要求2所述的業(yè)務(wù)流程的執(zhí)行方法,其特征在于,所述 從上述業(yè)務(wù)流程的一個步驟跳轉(zhuǎn)到另一個步驟的步驟,包括判斷監(jiān)視到的上述跳轉(zhuǎn)規(guī)則的觸發(fā)事件是否滿足該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)條 件;以及如果滿足該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)條件,則從上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的步 驟跳轉(zhuǎn)到該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)目的的步驟。
4. 根據(jù)權(quán)利要求3所述的業(yè)務(wù)流程的執(zhí)行方法,其特征在于,還包括在所述從上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的步驟跳轉(zhuǎn)到該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)目 的的步驟之前,保存上述業(yè)務(wù)流程的當(dāng)前的執(zhí)行環(huán)境。
5. 根據(jù)權(quán)利要求4所述的業(yè)務(wù)流程的執(zhí)行方法,其特征在于,所述 跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)目的是利用偏移量設(shè)置的,從上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的 步驟跳轉(zhuǎn)到該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)目的的步驟包括確定上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的步驟;根據(jù)上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的步驟和所&兆轉(zhuǎn)規(guī)則的跳轉(zhuǎn)目的的偏 移量,計算跳轉(zhuǎn)目的的步驟。
6. 根據(jù)權(quán)利要求1-5任意一項(xiàng)所述的業(yè)務(wù)流程的執(zhí)行方法,其特 征在于,所述預(yù)先設(shè)置的跳轉(zhuǎn)規(guī)則包括多條跳轉(zhuǎn)規(guī)則。
7. 根據(jù)權(quán)利要求1-6任意一項(xiàng)所述的業(yè)務(wù)流程的執(zhí)行方法,其特 征在于,針對一個服務(wù)組合設(shè)置一組跳轉(zhuǎn)規(guī)則。
8. 根據(jù)權(quán)利要求1-7的任意一項(xiàng)所述的業(yè)務(wù)流程的執(zhí)行方法,其 特征在于,所述跳轉(zhuǎn)規(guī)則是利用上述業(yè)務(wù)流程描述語言設(shè)置的。
9. 根據(jù)權(quán)利要求7或8所述的業(yè)務(wù)流程的執(zhí)行方法,其特征在于, 所述跳轉(zhuǎn)規(guī)則是在服務(wù)組合創(chuàng)建過程中設(shè)置的。
10. —種業(yè)務(wù)流程引擎,用于執(zhí)行利用業(yè)務(wù)流程描述語言預(yù)先定義的 業(yè)務(wù)流程,包括事件監(jiān)視單元,用于監(jiān)視在上述業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件;以及跳轉(zhuǎn)單元,用于根據(jù)預(yù)先設(shè)置的跳轉(zhuǎn)規(guī)則,將上述業(yè)務(wù)流程從上述業(yè) 務(wù)流程的一個步驟跳轉(zhuǎn)到另一個步驟,從而改變上述業(yè)務(wù)流程的預(yù)先定義 的處理過程。
11. 根據(jù)權(quán)利要求10所述的業(yè)務(wù)流程引擎,其特征在于,所述跳轉(zhuǎn) 規(guī)則至少包括觸發(fā)事件、跳轉(zhuǎn)條件、跳轉(zhuǎn)目的。
12. 根據(jù)權(quán)利要求ll所述的業(yè)務(wù)流程引擎,其特征在于,還包括 條件判斷單元,判斷監(jiān)視到的上鈔夂轉(zhuǎn)規(guī)則的觸發(fā)事件是否滿足該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)條件;其中,如果滿足該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)條件,上述跳轉(zhuǎn)單元將上述業(yè)務(wù)流 程從上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的步驟跳轉(zhuǎn)到該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)目的的步
13. 根據(jù)權(quán)利要求12所述的業(yè)務(wù)流程引擎,其特征在于,還包括 環(huán)境保存單元,用于在所述從上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的步驟跳轉(zhuǎn)到該跳轉(zhuǎn)規(guī)則的跳轉(zhuǎn)目的的步驟之前,保存上述業(yè)務(wù)流程的當(dāng)前的執(zhí)行環(huán)境。
14. 根據(jù)權(quán)利要求13所述的業(yè)務(wù)流程引擎,其特征在于,所鈔fe轉(zhuǎn) 規(guī)則的跳轉(zhuǎn)目的是利用偏移量設(shè)置的;上^L轉(zhuǎn)單元被設(shè)定為確定上述業(yè) 務(wù)流程的當(dāng)前執(zhí)行的步驟,并且根據(jù)上述業(yè)務(wù)流程的當(dāng)前執(zhí)行的步驟和所 iii^轉(zhuǎn)規(guī)則的跳轉(zhuǎn)目的的偏移量,計算跳轉(zhuǎn)目的的步驟。
15. 根據(jù)權(quán)利要求10-14任意一項(xiàng)所述的業(yè)務(wù)流程引擎,其特征在 于,所述預(yù)先設(shè)置的跳轉(zhuǎn)規(guī)則包括多條跳轉(zhuǎn)規(guī)則。
16. 根據(jù)權(quán)利要求10-15任意一項(xiàng)所述的業(yè)務(wù)流程引擎,其特征在 于,針對一個服務(wù)組合設(shè)置一組跳轉(zhuǎn)規(guī)則。
17. 根據(jù)權(quán)利要求10-16的任意一項(xiàng)所述的業(yè)務(wù)流程引擎,其特征 在于,所述跳轉(zhuǎn)規(guī)則是利用上述業(yè)務(wù)流程描述語言i殳置的。
18. 根據(jù)權(quán)利要求16或17所述的業(yè)務(wù)流程引擎,其特征在于,所述 跳轉(zhuǎn)規(guī)則是在服務(wù)組合創(chuàng)建過程中設(shè)置的。
19. 一種部署業(yè)務(wù)流程引擎的方法,該業(yè)務(wù)$£^引擎用于執(zhí)行利用業(yè) 務(wù)流程描述語言預(yù)先定義的業(yè)務(wù)流程,并包括事件監(jiān)視單元,用于監(jiān)視在上述業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件;以及跳轉(zhuǎn)單元,用于根據(jù)預(yù)先設(shè)置的跳轉(zhuǎn)規(guī)則,將上述業(yè)務(wù)流程從上述業(yè) 務(wù)流程的一個步驟跳轉(zhuǎn)到另 一個步驟,從而改變上述業(yè)務(wù)流程的預(yù)先定義 的處理過程。
全文摘要
本發(fā)明提供了業(yè)務(wù)流程的執(zhí)行方法,業(yè)務(wù)流程引擎,部署業(yè)務(wù)流程引擎的方法,以及計算機(jī)程序產(chǎn)品。根據(jù)本發(fā)明的一個方面,提供了一種業(yè)務(wù)流程的執(zhí)行方法,其中,該業(yè)務(wù)流程是利用業(yè)務(wù)流程描述語言預(yù)先定義的,所述方法包括執(zhí)行上述業(yè)務(wù)流程并監(jiān)視在上述業(yè)務(wù)流程的執(zhí)行過程中產(chǎn)生的事件;以及根據(jù)預(yù)先設(shè)置的跳轉(zhuǎn)規(guī)則,從上述業(yè)務(wù)流程的一個步驟跳轉(zhuǎn)到另一個步驟,從而改變上述業(yè)務(wù)流程的預(yù)先定義的處理過程。
文檔編號G06Q10/00GK101286212SQ200710090499
公開日2008年10月15日 申請日期2007年4月12日 優(yōu)先權(quán)日2007年4月12日
發(fā)明者英 劉, 俊 朱, 偉 譚 申請人:國際商業(yè)機(jī)器公司