BPMN的流程模型
我們使用業(yè)務(wù)流程建模來交流信息,正如在上一節(jié)里所述,根據(jù)不同模型的用戶(客戶、業(yè)務(wù)人員、分析人員、開發(fā)人員),建模有著不同的風(fēng)格。BPMN被設(shè)計(jì)用來涵蓋各種風(fēng)格的流程模型(以滿足不同角色人員交流的需要)和創(chuàng)建端到端的業(yè)務(wù)流程,它支持三種基本類型的流程模型:
Ø 流程編制(Process Orchestration),包含:
- 私有的不可執(zhí)行的(內(nèi)部的)業(yè)務(wù)流程;
- 私有的可執(zhí)行(內(nèi)部的)業(yè)務(wù)流程;
- 公開流程。
Ø 編排(Choreography)
Ø 協(xié)作(Collaborations),包含流程與/或編排。
- 具有會(huì)話視圖(Conversation)。
私有的(內(nèi)部的)業(yè)務(wù)流程
私有的業(yè)務(wù)流程是指某一組織的內(nèi)部工作流程,我們通常稱之為稱為工作流,在WEB服務(wù)領(lǐng)域,我們也稱之為服務(wù)的編制(Orchestration)。存在兩種類型的私有業(yè)務(wù)流程:可執(zhí)行的和不可執(zhí)行的。可執(zhí)行的私有業(yè)務(wù)流程以被計(jì)算機(jī)執(zhí)行為建模目的,由相應(yīng)的BPMS系統(tǒng)來自動(dòng)化流程的執(zhí)行,它包含了足夠的執(zhí)行細(xì)節(jié),這些細(xì)節(jié)包括執(zhí)行規(guī)則、條件表達(dá)式等計(jì)算機(jī)解釋執(zhí)行所需要的技術(shù)信息,該模型最直接的用戶是開發(fā)人員。不可執(zhí)行的私有業(yè)務(wù)流程則以文檔化為建模的目的,它缺少執(zhí)行細(xì)節(jié),但是包括足夠的交流信息,該模型的用戶包括了業(yè)務(wù)人員與分析人員。
作為一個(gè)例子,我們一起來看看我在公安局戶籍科為兒子辦理戶口的流程,如下圖所示:
圖1公安局戶籍科上戶口的流程
當(dāng)我來到戶籍科,遞上足夠的資料,然后就開始等待。我能看到共有四個(gè)工作人員,第一個(gè)工作人員負(fù)責(zé)接收資料,查看資料是否完備,接下來,她將所有的資料傳遞到下一個(gè)工作人員,第二個(gè)工作人員對(duì)資料進(jìn)行審核,在計(jì)算機(jī)上查看我們的戶口信息是否正確,接下來,如果資料無誤,他將資料傳遞到第三個(gè)工作人員,第三個(gè)工作人員負(fù)責(zé)在計(jì)算機(jī)上為我的兒子錄入新的戶口,最后打印出一張戶口頁,第四個(gè)工作人員是職位最大的警員,她負(fù)責(zé)蓋章,然后將兒子的戶口頁傳遞給在窗口外等待的我。
根據(jù)上面對(duì)私有業(yè)務(wù)流程的定義,我們很容易的判斷出這個(gè)流程是個(gè)不可執(zhí)行的私有業(yè)務(wù)流程,因?yàn)樵摿鞒淌菓艏频膬?nèi)部工作流程,作為該流程服務(wù)對(duì)象的我,我根本不用關(guān)心戶籍科內(nèi)部是如何對(duì)我的申請(qǐng)進(jìn)行處理的,所以它是私有業(yè)務(wù)流程。該流程是由規(guī)章或制度所規(guī)定的,由工作人員來驅(qū)動(dòng),并非通過計(jì)算機(jī)協(xié)調(diào),所以這是個(gè)不可執(zhí)行的私有業(yè)務(wù)流程。
因?yàn)樗接袠I(yè)務(wù)流程是內(nèi)部流程,所以它只能存在于一個(gè)池(pool,池代表一個(gè)參與者)里,如下圖所示,我們可以將私有業(yè)務(wù)流程建模在一個(gè)池里,但通常這樣做沒有太大的意義,更經(jīng)常的情況是,我們選擇將池忽略。
圖2公安局戶籍科私有業(yè)務(wù)流程的另一種建模形式
公開流程
公開流程表現(xiàn)一個(gè)私有業(yè)務(wù)流程與其他流程或參與者之間的交互。
還是以戶口辦理作為例子,作為戶口申請(qǐng)人,我來到公安局戶籍科,我心揣揣,我不知道我該做些什么,于是我看到大廳里如下圖所示的流程,于是我立刻就明白了,我只需要將資料交給辦事人員,然后等待取新的戶口頁即可。
注意下圖所示的公開流程與圖1所示的私有流程有哪些不同。第一是圖中出現(xiàn)了多個(gè)參與者,參與者間通過消息流連接(圖中虛線箭頭連線);第二是戶籍科的辦理流程被縮減到只剩兩個(gè)與外部參與者交互的活動(dòng),兩個(gè)原有的內(nèi)部活動(dòng)被忽略了。這兩點(diǎn)不同即是公開流程的特點(diǎn):表現(xiàn)與外部參與者、流程間的交互,忽略內(nèi)部活動(dòng)。聯(lián)想到我們實(shí)際的編程,總結(jié)成一句話,就是隱藏內(nèi)部實(shí)現(xiàn)細(xì)節(jié),僅僅展現(xiàn)對(duì)外接口,表現(xiàn)流程的外部行為。
圖3公安局戶籍科辦理戶口的公開流程
協(xié)作
協(xié)作描繪兩個(gè)或多個(gè)業(yè)務(wù)實(shí)體間的交互。一個(gè)協(xié)作通常包含兩個(gè)或多個(gè)池,每個(gè)池代表一個(gè)參與者(業(yè)務(wù)實(shí)體)。參與者之間的消息交換通過連接兩個(gè)池(或池中的對(duì)象)的消息流表現(xiàn)。協(xié)作可以表現(xiàn)為兩個(gè)或多個(gè)公開流程之間的交互,在上一節(jié)里,我們提到,與對(duì)應(yīng)的私有流程相比,公開流程隱藏了內(nèi)部細(xì)節(jié)活動(dòng)。池也可以是黑盒,即里面什么對(duì)象都沒有。
那么,這里有一個(gè)問題,公開流程與協(xié)作有什么區(qū)別?區(qū)別在于表現(xiàn)的范圍,公開流程只是表現(xiàn)一個(gè)私有流程與外部的交互,而協(xié)作則能表現(xiàn)多個(gè)流程/參與者之間的交互。
還是看戶口辦理的例子,在前面的例子中,我們看到了公安局戶籍科辦理戶口的私有流程和公開流程,似乎辦理戶口是一件很簡(jiǎn)單的事情,但這僅僅只是辦理戶口中的一步而已。在此之前,我先要去醫(yī)院辦理小孩出生證明,接下來,我要去居委會(huì)登記小孩信息,再接下來,我要去計(jì)生辦辦理符合計(jì)劃生育政策的證明,最后,我才來到戶籍科。下圖是整個(gè)戶口辦理的協(xié)作圖,作為簡(jiǎn)化,這里將除申請(qǐng)人和戶籍科之外的池都黑盒了:
圖4戶口辦理協(xié)作圖
編排
同樣是表現(xiàn)多個(gè)參與者之間的交互,編排做的更為純粹,它取消掉了池的概念,改由編排活動(dòng)直接表現(xiàn)多個(gè)參與者之間的消息交互,為協(xié)作模型提供了一種基于流程圖的視圖。戶口辦理的編排圖如下圖所示,其中每個(gè)活動(dòng)都能看到上下的方形區(qū)域有參與者信息,這表明這個(gè)活動(dòng)的參與者,淺色部分為活動(dòng)的發(fā)起者,深色部分為活動(dòng)的響應(yīng)者,我們會(huì)在接下來的BPMN元素小節(jié)里詳細(xì)描述這一活動(dòng)類型:
圖5戶口辦理編排圖
與協(xié)作圖相比,編排圖省略掉了更多的細(xì)節(jié),例如與各個(gè)參與者具體的交互過程,它關(guān)心誰和誰產(chǎn)生了交互,至于如何交互,分幾步交互,它并不關(guān)心。例如辦理戶口這個(gè)活動(dòng),實(shí)際上我是分別和兩個(gè)警官進(jìn)行了交互,一個(gè)是負(fù)責(zé)接受資料的年輕女警官,一個(gè)是負(fù)責(zé)蓋章復(fù)核的領(lǐng)導(dǎo)警官,在協(xié)作圖中,我可以通過公開流程展現(xiàn)出這一點(diǎn),但是在編排圖中,這并不是要表現(xiàn)的重點(diǎn)。
協(xié)作圖表現(xiàn)出參與者之間的交互,并包含交互的細(xì)節(jié)信息(交互的接口、如何交互);編排圖則以流程圖的形式表現(xiàn)出參與者之間的交互,它關(guān)心的是某個(gè)任務(wù)需要哪些參與者發(fā)生交互,交互的細(xì)節(jié)不是其表現(xiàn)的重點(diǎn)。
編制與編排的區(qū)別 |
在上文中,我們提到了服務(wù)的編制(Orchestration),這里,我們又提到了編排(Choreography),這兩者是有很大區(qū)別的。 WS-BPEL將SOA中的服務(wù)按照一定的順序靈活組裝在一起的流程就是編制(Orchestration)。編制后的WS-BPEL流,通常代表了某個(gè)特定的業(yè)務(wù)中的服務(wù)的執(zhí)行流。而編排(Choreography)則是描述參與者之間交互關(guān)系的流程。與編制不同的是,編排并不需要一個(gè)執(zhí)行引擎,它只是描述關(guān)系。編制代表的是一個(gè)可執(zhí)行流程,它必須通過執(zhí)行引擎來執(zhí)行。而編排實(shí)質(zhì)上是代表一種描述,即參與者之間如何互相協(xié)調(diào)來完成一個(gè)目標(biāo)。 John Reynolds在其博客中是這樣描述編制和編排的區(qū)別[1]: 編制 == 可執(zhí)行過程 Web服務(wù)編制與執(zhí)行特定的業(yè)務(wù)流程相關(guān)。WS-BPEL是一種用來定義可以在一個(gè)編制引擎中執(zhí)行的流程語言。 編排 == 多方合作 因此編制必須對(duì)應(yīng)一個(gè)執(zhí)行引擎,而編排由于涉及到多方合作,所以它是不能被直接部署的。 |
協(xié)作的會(huì)話視圖
會(huì)話視圖為協(xié)作圖提供了另外一種非正式的表現(xiàn)形式,與編排圖一樣,它的目標(biāo)同樣在于表現(xiàn)參與者之間的關(guān)系,它將一系列相關(guān)的信息交互定義為一次會(huì)話。戶口辦理的會(huì)話圖如下圖所示,圖中只存在池與會(huì)話(Communication)元素,會(huì)話元素由圖中的六邊形代表,它代表兩個(gè)或多個(gè)參與者之間一系列相關(guān)的信息交互,我們可以看到,辦理戶口需要申請(qǐng)人與四個(gè)組織發(fā)生四次會(huì)話:
圖6戶口辦理會(huì)話圖
會(huì)話視圖的作用之一是能夠有效減少模型中消息流的數(shù)量,便于我們理解。
圖7會(huì)話視圖簡(jiǎn)化交互模型
http://www.aygfsteel.com/ronghao 榮浩原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處:)