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