本申請涉及業(yè)務(wù)流程管理技術(shù)領(lǐng)域,特別是涉及一種業(yè)務(wù)流程運行方法及裝置。
背景技術(shù):
BPM(Business Process Management,業(yè)務(wù)流程管理)系統(tǒng)一般包括業(yè)務(wù)流程的建模和業(yè)務(wù)流程的驅(qū)動兩方面,其中,業(yè)務(wù)流程的建模一般由BPM集成開發(fā)環(huán)境(BPM Integrated Development Environment)負責(zé),業(yè)務(wù)流程的驅(qū)動一般由BPM流程引擎(BPM Engine)負責(zé)。通過BPM系統(tǒng),能夠為企業(yè)打造符合其業(yè)務(wù)發(fā)展的各種BPM流程圖,極大地方便了企業(yè)管理,為企業(yè)發(fā)展做出了極大的貢獻。
BPM流程圖上的一個個圖元一般稱之為“環(huán)節(jié)”,基于現(xiàn)有的BPM系統(tǒng),通常需要將一個獨立流程中一個環(huán)節(jié)(假設(shè)為發(fā)起協(xié)同的環(huán)節(jié),命名為環(huán)節(jié)1)和另一個獨立流程中的一個環(huán)節(jié)(假設(shè)為被協(xié)同的環(huán)節(jié),命名為環(huán)節(jié)2)進行強關(guān)聯(lián),以建立跨流程的協(xié)同。在流程運行期間,相互關(guān)聯(lián)的兩個環(huán)節(jié)中,如果環(huán)節(jié)2不執(zhí)行,則環(huán)節(jié)1也不會執(zhí)行,環(huán)節(jié)1對應(yīng)的獨立流程則將停滯于環(huán)節(jié)1,無法繼續(xù)執(zhí)行。即,只要建立了跨流程的協(xié)同,則在流程運行期間,發(fā)起協(xié)同的流程必須依附被協(xié)同的環(huán)節(jié)的執(zhí)行狀態(tài)而執(zhí)行,無法再單獨執(zhí)行。
但是,在某些場景下,比如電信領(lǐng)域,用戶想購買手機,會有訂單流程、物流流程、開卡流程、業(yè)務(wù)辦理流程等等,如果建立物流流程和開卡流程間的協(xié)同,則在流程運行期間,必須在物流流程中的某一環(huán)節(jié)執(zhí)行完畢之后,才能執(zhí)行開卡流程,但是,實際上用戶可以單獨執(zhí)行開卡流程,而因為之前建立的跨流程協(xié)同將導(dǎo)致開卡流程強制關(guān)聯(lián)到物流流程,最終導(dǎo)致開卡流程的獨立執(zhí)行受到限制。
也就是說,現(xiàn)有技術(shù)中的BPM系統(tǒng)中流程間的協(xié)同關(guān)系是固定的,且在流程運行期間,具有協(xié)同關(guān)系的流程無法單獨執(zhí)行,對各種應(yīng)用場景的適用性較差,極大地影響了用戶的使用感受。
技術(shù)實現(xiàn)要素:
本申請的目的是提供一種業(yè)務(wù)流程運行方法及裝置,以解決現(xiàn)有技術(shù)中的BPM系統(tǒng)中流程間的協(xié)同關(guān)系是固定的,且在流程運行期間,具有協(xié)同關(guān)系的流程無法單獨執(zhí)行,對各種應(yīng)用場景的適用性較差,極大地影響了用戶的使用感受的問題。
為實現(xiàn)上述目的,本申請?zhí)峁┝巳缦路桨福?/p>
根據(jù)本申請的第一方面的第一種可能的實現(xiàn)方式,本申請?zhí)峁┮环N業(yè)務(wù)流程運行方法,所述方法包括:
獲取第一業(yè)務(wù)流程實例中的待執(zhí)行環(huán)節(jié)信息;
根據(jù)所述待執(zhí)行環(huán)節(jié)信息判斷待執(zhí)行環(huán)節(jié)是否預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié);
如果所述待執(zhí)行環(huán)節(jié)未預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié),則執(zhí)行所述待執(zhí)行環(huán)節(jié);
如果所述待執(zhí)行環(huán)節(jié)預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié),則獲取所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識;
根據(jù)所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識判斷是否存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同;
如果存在,則查找所述第二業(yè)務(wù)流程實例,并執(zhí)行第二業(yè)務(wù)流程實例,直至所述第二業(yè)務(wù)流程實例中的所述靜態(tài)協(xié)同環(huán)節(jié)執(zhí)行完畢之后,再執(zhí)行所述待執(zhí)行環(huán)節(jié);
如果不存在,則執(zhí)行所述待執(zhí)行環(huán)節(jié)。
結(jié)合第一方面的第二種可能的實現(xiàn)方式,所述方法還包括:
預(yù)先通過消息流Message Flow指定業(yè)務(wù)流程定義中指定環(huán)節(jié)的靜態(tài)協(xié)同關(guān)系。
結(jié)合第一方面的第三種可能的實現(xiàn)方式,所述根據(jù)所述待執(zhí)行環(huán)節(jié)信息判斷待執(zhí)行環(huán)節(jié)是否預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié),具體包括:
判斷所述待執(zhí)行環(huán)節(jié)信息中是否存在Message Flow;
如果存在,則待執(zhí)行環(huán)節(jié)預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié);
如果不存在,則待執(zhí)行環(huán)節(jié)未預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié)。
結(jié)合第一方面的第四種可能的實現(xiàn)方式,所述根據(jù)所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識判斷是否存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同,具體包括:
如果所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識為空,則不存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同;
如果所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識不為空,則存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同。
結(jié)合第一方面的第五種可能的實現(xiàn)方式,在所述獲取第一業(yè)務(wù)流程實例中的待執(zhí)行環(huán)節(jié)信息之前,所述方法還包括:
解析所述業(yè)務(wù)流程定義,按照所述業(yè)務(wù)流程定義創(chuàng)建業(yè)務(wù)流程實例列表;
選擇所述業(yè)務(wù)流程實例列表中的任一業(yè)務(wù)流程實例為第一業(yè)務(wù)流程實例。
結(jié)合第一方面的第六種可能的實現(xiàn)方式,所述查找所述第二業(yè)務(wù)流程實例,具體包括:
從所述業(yè)務(wù)流程實例列表中查找具有與所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識相同的協(xié)同標(biāo)識的業(yè)務(wù)流程實例作為第二業(yè)務(wù)流程實例。
根據(jù)本申請的第二方面的第一種可能的實現(xiàn)方式,本申請?zhí)峁┮环N業(yè)務(wù)流程運行裝置,所述裝置包括:
第一獲取單元,用于獲取第一業(yè)務(wù)流程實例中的待執(zhí)行環(huán)節(jié)信息;
第一判斷單元,用于根據(jù)所述待執(zhí)行環(huán)節(jié)信息判斷待執(zhí)行環(huán)節(jié)是否預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié);如果所述待執(zhí)行環(huán)節(jié)未預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié),則觸發(fā)第二執(zhí)行單元;如果所述待執(zhí)行環(huán)節(jié)預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié),則觸發(fā)第二獲取單元;
第二獲取單元,用于獲取所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識;
第二判斷單元,用于根據(jù)所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識判斷是否存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同;如果存在,觸發(fā)第一執(zhí)行單元;
第一執(zhí)行單元,用于查找所述第二業(yè)務(wù)流程實例,并執(zhí)行第二業(yè)務(wù)流程實例,直至所述第二業(yè)務(wù)流程實例中的所述靜態(tài)協(xié)同環(huán)節(jié)執(zhí)行完畢之后,再執(zhí)行所述待執(zhí)行環(huán)節(jié);
第二執(zhí)行單元,用于執(zhí)行所述待執(zhí)行環(huán)節(jié)。
結(jié)合第二方面的第二種可能的實現(xiàn)方式,所述裝置還包括:
預(yù)先設(shè)置單元,用于預(yù)先通過消息流Message Flow指定業(yè)務(wù)流程定義中指定環(huán)節(jié)的靜態(tài)協(xié)同關(guān)系。
結(jié)合第二方面的第三種可能的實現(xiàn)方式,所述第一判斷單元具體用于:
判斷所述待執(zhí)行環(huán)節(jié)信息中是否存在Message Flow;
如果存在,則待執(zhí)行環(huán)節(jié)預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié);
如果不存在,則待執(zhí)行環(huán)節(jié)未預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié)。
結(jié)合第二方面的第四種可能的實現(xiàn)方式,所述第二判斷單元具體用于:
如果所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識為空,則不存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同;
如果所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識不為空,則存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同。
結(jié)合第二方面的第五種可能的實現(xiàn)方式,所述裝置還包括:
第一業(yè)務(wù)流程實例確定單元,用于在所述獲取第一業(yè)務(wù)流程實例中的待執(zhí)行環(huán)節(jié)信息之前,解析所述業(yè)務(wù)流程定義,按照所述業(yè)務(wù)流程定義創(chuàng)建業(yè)務(wù)流程實例列表;選擇所述業(yè)務(wù)流程實例列表中的任一業(yè)務(wù)流程實例為第一業(yè)務(wù)流程實例。
結(jié)合第二方面的第六種可能的實現(xiàn)方式,所述第一執(zhí)行單元具體用于:
從所述業(yè)務(wù)流程實例列表中查找具有與所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識相同的協(xié)同標(biāo)識的業(yè)務(wù)流程實例作為第二業(yè)務(wù)流程實例。
根據(jù)本申請?zhí)峁┑木唧w實施例,本申請公開了以下技術(shù)效果:
本申請公開的業(yè)務(wù)流程運行方法及裝置,通過根據(jù)第一業(yè)務(wù)流程實例中的待執(zhí)行環(huán)節(jié)信息確定待執(zhí)行環(huán)節(jié)預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié)時,根據(jù)第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識判斷是否存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同,如果存在,則查找所述第二業(yè)務(wù)流程實例,并執(zhí)行第二業(yè)務(wù)流程實例,直至所述第二流程實例中的所述靜態(tài)協(xié)同環(huán)節(jié)執(zhí)行完畢之后,再執(zhí)行所述待執(zhí)行環(huán)節(jié),如果不存在,則執(zhí)行所述待執(zhí)行環(huán)節(jié)?;谏鲜龇椒把b置,具備靜 態(tài)協(xié)同關(guān)系的兩個流程實例的兩個環(huán)節(jié),在業(yè)務(wù)流程運行期間如果要協(xié)同,則兩個流程實例依附執(zhí)行,如果不要協(xié)同,則兩個流程實例依然可以單獨執(zhí)行,能適應(yīng)各種應(yīng)用場景,大大提升了用戶的使用感受。
附圖說明
為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請的業(yè)務(wù)流程運行方法實施例1的流程圖;
圖2為本申請的業(yè)務(wù)流程運行方法實施例2的流程圖;
圖3為本申請的業(yè)務(wù)流程運行方法示例示意圖;
圖4為本申請的業(yè)務(wù)流程運行裝置實施例1的結(jié)構(gòu)圖;
圖5為本申請的業(yè)務(wù)流程運行裝置實施例2的結(jié)構(gòu)圖;
圖6為本申請的計算節(jié)點的結(jié)構(gòu)圖。
具體實施方式
下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式對本申請作進一步詳細的說明。
參閱圖1,圖1為本發(fā)明提供的業(yè)務(wù)流程運行方法實施例1的流程圖,所述業(yè)務(wù)流程運行方法包括:
S101、獲取第一業(yè)務(wù)流程實例中的待執(zhí)行環(huán)節(jié)信息。
當(dāng)待執(zhí)行環(huán)節(jié)預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié)時,待執(zhí)行環(huán)節(jié)信息可以包括有靜態(tài)協(xié)同標(biāo)識,所述靜態(tài)協(xié)同標(biāo)識具體可以為消息流Message Flow。
S102、根據(jù)所述待執(zhí)行環(huán)節(jié)信息判斷待執(zhí)行環(huán)節(jié)是否預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié);如果所述待執(zhí)行環(huán)節(jié)未預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié),則執(zhí)行S106;如果所述待執(zhí)行環(huán)節(jié)預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié),則執(zhí)行S103。
S103、獲取所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識。
S104、根據(jù)所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識判斷是否存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同;如果存在,則執(zhí)行S105;如果不存在,則執(zhí)行S106。
S105、查找所述第二業(yè)務(wù)流程實例,并執(zhí)行第二業(yè)務(wù)流程實例,直至所述第二業(yè)務(wù)流程實例中的所述靜態(tài)協(xié)同環(huán)節(jié)執(zhí)行完畢之后,再執(zhí)行所述待執(zhí)行環(huán)節(jié);
S106、執(zhí)行所述待執(zhí)行環(huán)節(jié)。
本實施例公開的業(yè)務(wù)流程運行方法,通過根據(jù)第一業(yè)務(wù)流程實例中的待執(zhí)行環(huán)節(jié)信息確定待執(zhí)行環(huán)節(jié)預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié)時,根據(jù)第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識判斷是否存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同,如果存在,則查找所述第二業(yè)務(wù)流程實例,并執(zhí)行第二業(yè)務(wù)流程實例,直至所述第二流程實例中的所述靜態(tài)協(xié)同環(huán)節(jié)執(zhí)行完畢之后,再執(zhí)行所述待執(zhí)行環(huán)節(jié),如果不存在,則執(zhí)行所述待執(zhí)行環(huán)節(jié)?;谏鲜龇椒ǎ邆潇o態(tài)協(xié)同關(guān)系的兩個流程實例的兩個環(huán)節(jié),在業(yè)務(wù)流程運行期間如果要協(xié)同,則兩個流程實例依附執(zhí)行,如果不要協(xié)同,則兩個流程實例依然可以單獨執(zhí)行,能適應(yīng)各種應(yīng)用場景,大大提升了用戶的使用感受。
參閱圖2,圖2為本發(fā)明提供的業(yè)務(wù)流程運行方法實施例2的流程圖,所述業(yè)務(wù)流程運行方法包括:
S201、預(yù)先通過消息流Message Flow指定業(yè)務(wù)流程定義中指定環(huán)節(jié)的靜態(tài)協(xié)同關(guān)系。
BPM IDE(BPM集成開發(fā)環(huán)境,BPM integrated development environment)通過泳道引入獨立業(yè)務(wù)流程,通過消息流Message Flow指定任意兩個獨立業(yè)務(wù)流程的指定環(huán)節(jié)之間的靜態(tài)協(xié)同關(guān)系。靜態(tài)協(xié)同是指兩個環(huán)節(jié)可能存在協(xié)同關(guān)系,但是不確定哪兩個流程實例的上述兩個環(huán)節(jié)之間存在協(xié)同。
S202、獲取第一業(yè)務(wù)流程實例中的待執(zhí)行環(huán)節(jié)信息。
在所述獲取第一業(yè)務(wù)流程實例中的待執(zhí)行環(huán)節(jié)信息之前,BPM流程引擎解析所述業(yè)務(wù)流程定義,按照所述業(yè)務(wù)流程定義創(chuàng)建業(yè)務(wù)流程實例列表;
選擇所述業(yè)務(wù)流程實例列表中的任一業(yè)務(wù)流程實例為第一業(yè)務(wù)流程實例。
S203、判斷所述待執(zhí)行環(huán)節(jié)信息中是否存在Message Flow;如果存在,則說明待執(zhí)行環(huán)節(jié)預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié),執(zhí)行S204;如果不存在,則說明待執(zhí)行環(huán)節(jié)未預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié),執(zhí)行S207。
S204、獲取所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識。
BPM流程引擎在創(chuàng)建業(yè)務(wù)流程實例的同時,提供API綁定指定的業(yè)務(wù)流程實例,如下述代碼所示,public void collaborate Process Instances(Set<String>collaborating PIs,String collaboration Key);其中,第一個參數(shù)是需要協(xié)同的業(yè)務(wù)流程實例列表,可用數(shù)組或集合類形式,第二個參數(shù)是這些業(yè)務(wù)流程實例的協(xié)同標(biāo)識,可用字符串形式,協(xié)同標(biāo)識一般具有業(yè)務(wù)語義,如訂單號。
S205、根據(jù)所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識判斷是否存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同;如果存在,則執(zhí)行S206;如果不存在,則執(zhí)行S207。
具體的,如果所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識為空,比如字符串為NULL,則不存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同;
如果所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識不為空,比如,字符串部分有具體值,則存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同。
S206、查找所述第二業(yè)務(wù)流程實例,并執(zhí)行第二業(yè)務(wù)流程實例,直至所述第二業(yè)務(wù)流程實例中的所述靜態(tài)協(xié)同環(huán)節(jié)執(zhí)行完畢之后,再執(zhí)行所述待執(zhí)行環(huán)節(jié)。
所述查找所述第二業(yè)務(wù)流程實例,具體包括:
從所述業(yè)務(wù)流程實例列表中查找具有與所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識相同的協(xié)同標(biāo)識的業(yè)務(wù)流程實例作為第二業(yè)務(wù)流程實例。
S207、執(zhí)行所述待執(zhí)行環(huán)節(jié)。
需要說明的時,在本實施例中,所述待執(zhí)行環(huán)節(jié)為被協(xié)同環(huán)節(jié),所述靜態(tài)協(xié)同環(huán)節(jié)為發(fā)起協(xié)同環(huán)節(jié)。
基于上述實施例,本申請公開了一種業(yè)務(wù)流程運行示例,具體如下:
如圖3所示,泳道圖來引用指定的業(yè)務(wù)流程定義,三個泳道pool1、pool2、pool3中分別配置了三個獨立的業(yè)務(wù)流程定義——訂單申請,訂單開通,物流。
使用Message Flow來指定業(yè)務(wù)流程定義的指定環(huán)節(jié)的靜態(tài)協(xié)同關(guān)系,比如,pool2中的訂單開通流程的“出庫”環(huán)節(jié)要等待pool3中物流流程的“物流結(jié)果通知”,所以建立“物流結(jié)果通知”環(huán)節(jié)到“出庫”環(huán)節(jié)的Message Flow?!拔锪鹘Y(jié)果通知”環(huán)節(jié)為發(fā)起協(xié)同的環(huán)節(jié),“出庫”環(huán)節(jié)為被協(xié)同的環(huán)節(jié)。
BPM引擎提供API:public void collaborate Process Instances(Set<String>collaborating PIs,String collaboration Key);來幫助用戶運行態(tài)實現(xiàn)運行期的訂單申請,訂單開通,物流三個流程創(chuàng)建出來的具體的流程實例,比如“張三申請iphone5套餐”會有一個編號為××××的訂單申請流程實例創(chuàng)建,id為0001,然后會有個投遞iphone5的物流流程實例,id為0002,也會有一個開通手機號及資費套餐的訂單開通流程實例,id為0003,程序只需要對BPM引擎?zhèn)魅?001、0002、0003到第一個參數(shù)中,傳入訂單編號××××到第二個參數(shù)中,即可表明,0001、0002、0003對應(yīng)的業(yè)務(wù)流程實例是需要協(xié)同的,協(xié)同標(biāo)識為訂單編號××××(第二個參數(shù))。BPPM引擎會生成若干條對應(yīng)業(yè)務(wù)流程實例的協(xié)同關(guān)系記錄存到數(shù)據(jù)庫中。
訂單開通流程實例(0003)執(zhí)行到“出庫”環(huán)節(jié)的時候,發(fā)現(xiàn)關(guān)聯(lián)了Message Flow,就會去查找有相同協(xié)同標(biāo)識的物流業(yè)務(wù)流程實例(0002),等物流業(yè)務(wù)流程實例的“物流結(jié)果通知”環(huán)節(jié)執(zhí)行完之后,訂單開通流程實例的“出庫”環(huán)節(jié)即可執(zhí)行。
如果BPM引擎未設(shè)置0001、0002、0003對應(yīng)的業(yè)務(wù)流程實例是需要協(xié)同的,則訂單開通流程實例(0003)執(zhí)行到“出庫”環(huán)節(jié)的時候,并不知道要等待哪個具體的物流業(yè)務(wù)流程實例的通知,該訂單開通流程實例會自行流轉(zhuǎn)下去。
本實施例使用Message Flow實現(xiàn)了業(yè)務(wù)流程定義指定環(huán)節(jié)之間的靜態(tài)協(xié)同關(guān)系,配合為所有待協(xié)同的業(yè)務(wù)流程實例綁定相同的協(xié)同標(biāo)識,最終實現(xiàn)了 運行期間,獨立業(yè)務(wù)流程實例之間的動態(tài)協(xié)同。
參閱圖4,圖4為本發(fā)明提供的業(yè)務(wù)流程運行裝置實施例1的結(jié)構(gòu)圖,所述業(yè)務(wù)流程運行裝置包括:
第一獲取單元11,用于獲取第一業(yè)務(wù)流程實例中的待執(zhí)行環(huán)節(jié)信息;
第一判斷單元12,用于根據(jù)所述待執(zhí)行環(huán)節(jié)信息判斷待執(zhí)行環(huán)節(jié)是否預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié);如果所述待執(zhí)行環(huán)節(jié)未預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié),則觸發(fā)第二執(zhí)行單元16;如果所述待執(zhí)行環(huán)節(jié)預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié),則觸發(fā)第二獲取單元13;
第二獲取單元13,用于獲取所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識;
第二判斷單元14,用于根據(jù)所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識判斷是否存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同;如果存在,觸發(fā)第一執(zhí)行單元;
第一執(zhí)行單元15,用于查找所述第二業(yè)務(wù)流程實例,并執(zhí)行第二業(yè)務(wù)流程實例,直至所述第二業(yè)務(wù)流程實例中的所述靜態(tài)協(xié)同環(huán)節(jié)執(zhí)行完畢之后,再執(zhí)行所述待執(zhí)行環(huán)節(jié);
第二執(zhí)行單元16,用于執(zhí)行所述待執(zhí)行環(huán)節(jié)。
需要說明的是,上述各個單元的功能實現(xiàn)已在方法實施例中進行詳細描述,本實施例不再贅述。
參閱圖5,圖5為本發(fā)明提供的業(yè)務(wù)流程運行裝置實施例1的結(jié)構(gòu)圖,所述業(yè)務(wù)流程運行裝置包括:
預(yù)先設(shè)置單元21,用于預(yù)先通過消息流Message Flow指定業(yè)務(wù)流程定義中指定環(huán)節(jié)的靜態(tài)協(xié)同關(guān)系。
第一業(yè)務(wù)流程實例確定單元22,用于在所述獲取第一業(yè)務(wù)流程實例中的待執(zhí)行環(huán)節(jié)信息之前,解析所述業(yè)務(wù)流程定義,按照所述業(yè)務(wù)流程定義創(chuàng)建業(yè)務(wù)流程實例列表;選擇所述業(yè)務(wù)流程實例列表中的任一業(yè)務(wù)流程實例為第一業(yè)務(wù)流程實例。
第一獲取單元23,用于獲取第一業(yè)務(wù)流程實例中的待執(zhí)行環(huán)節(jié)信息;
第一判斷單元24,具體用于:判斷所述待執(zhí)行環(huán)節(jié)信息中是否存在所述Message Flow;如果存在,則表示待執(zhí)行環(huán)節(jié)預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié),觸發(fā)第二獲取單元25;如果不存在,則表示待執(zhí)行環(huán)節(jié)未預(yù)先設(shè)置有靜態(tài)協(xié)同環(huán)節(jié),觸發(fā)第二執(zhí)行單元28。
第二獲取單元25,用于獲取所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識;
第二判斷單元26,用于根據(jù)所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識判斷是否存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同;如果存在,觸發(fā)第一執(zhí)行單元27;如果不存在,則觸發(fā)第二執(zhí)行單元28。
所述第二判斷單元具體用于:
如果所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識為空,則不存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同;
如果所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識不為空,則存在第二業(yè)務(wù)流程實例與所述第一業(yè)務(wù)流程實例協(xié)同。
第一執(zhí)行單元27,用于查找所述第二業(yè)務(wù)流程實例,并執(zhí)行第二業(yè)務(wù)流程實例,直至所述第二業(yè)務(wù)流程實例中的所述靜態(tài)協(xié)同環(huán)節(jié)執(zhí)行完畢之后,再執(zhí)行所述待執(zhí)行環(huán)節(jié)。
所述第一執(zhí)行單元具體用于:
從所述業(yè)務(wù)流程實例列表中查找具有與所述第一業(yè)務(wù)流程實例的協(xié)同標(biāo)識相同的協(xié)同標(biāo)識的業(yè)務(wù)流程實例作為第二業(yè)務(wù)流程實例。
第二執(zhí)行單元28,用于執(zhí)行所述待執(zhí)行環(huán)節(jié)。
需要說明的是,上述各個單元的功能實現(xiàn)已在方法實施例中進行詳細描述,本實施例不再贅述。
另外,本申請實施例還提供了一種計算節(jié)點,計算節(jié)點可能是包含計算能力的主機服務(wù)器,或者是個人計算機PC,或者是可攜帶的便攜式計算機或終端等等,本申請具體實施例并不對計算節(jié)點的具體實現(xiàn)做限定。
圖6為本申請的計算節(jié)點的結(jié)構(gòu)圖。如圖6所示,計算節(jié)點700包括:
處理器(processor)710,通信接口(Communications Interface)720,存儲器 (memory)730,總線740。
處理器710,通信接口720,存儲器730通過總線740完成相互間的通信。
處理器710,用于執(zhí)行程序732。
具體地,程序732可以包括程序代碼,所述程序代碼包括計算機操作指令。
處理器710可能是一個中央處理器CPU,或者是特定集成電路ASIC(Application Specific Integrated Circuit),或者是被配置成實施本申請實施例的一個或多個集成電路。
存儲器730,用于存放程序732。存儲器730可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。程序732具體可以包括:
圖1、2、3所示實施例中的方法步驟,在此不贅述。
程序732中各單元的具體實現(xiàn)參見圖4-圖5所示實施例中的相應(yīng)單元,在此不贅述。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請可借助軟件加必需的硬件平臺的方式來實現(xiàn),當(dāng)然也可以全部通過硬件來實施,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本申請的技術(shù)方案對背景技術(shù)做出貢獻的全部或者部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如ROM/RAM、磁 碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個實施例或者實施例的某些部分所述的方法。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的系統(tǒng)而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
本文中應(yīng)用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處。綜上所述,本說明書內(nèi)容不應(yīng)理解為對本申請的限制。