種工作流模式介紹_第1頁(yè)
種工作流模式介紹_第2頁(yè)
種工作流模式介紹_第3頁(yè)
種工作流模式介紹_第4頁(yè)
種工作流模式介紹_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

工作流模式和JBPM

WorkflowPatterns&JBPM趙慧2010/08/03目錄jBPM4介紹來(lái)自國(guó)外的20種工作流模式5種基本控制流模式(BaseControlFlowPatterns)4種高級(jí)分支同步模式

(AdvancedBranchingandSynchronizationPatterns)2種結(jié)構(gòu)化模式(SturcturalPatterns)4種包含多實(shí)例的模式(PatternsinvolvingMultipleInstances)3種基于狀態(tài)的模式(State-basedPatterns)2種取消模式(CancellationPatterns)具有中國(guó)特色的工作流模式2jBPM4介紹jBPM簡(jiǎn)介jBPM,全稱是JavaBusinessProcessManagement(業(yè)務(wù)流程管理),它是覆蓋了業(yè)務(wù)流程管理、工作流、服務(wù)協(xié)作等領(lǐng)域的一個(gè)開(kāi)源的、靈活的、易擴(kuò)展的可執(zhí)行流程語(yǔ)言框架。目前最新版本是jBPM4.4BusinessanalystjBPM架構(gòu)jBPM的使用35種基本控制流模式Pattern1順序流(Sequence)定義描述:在流程中,活動(dòng)按照預(yù)先設(shè)定的順序一個(gè)接著一個(gè)的往下執(zhí)行例子:比如申請(qǐng)后進(jìn)行審批,接著往下一個(gè)一個(gè)的進(jìn)行任務(wù)流程圖:Pattern2并行分叉(ParallelSplit)定義描述:流程在某個(gè)活動(dòng)之后產(chǎn)生多個(gè)分支例子:比如用戶付款后,認(rèn)為分叉為“通知用戶款已收到真正送貨”和“送貨”2個(gè)動(dòng)作流程圖:Task1Task2Task2Task1Task2Task3Task21Task3145種基本控制流模式Pattern3同步(Synchronization)定義描述:在流程中的某個(gè)點(diǎn),多個(gè)并行的子流程或者活動(dòng),合并成一個(gè)流程。

流程必須等待所有的分支都執(zhí)行完成后,才能激活后續(xù)活動(dòng),這就是“同步”的意思。例子:比如“數(shù)據(jù)歸檔”在“發(fā)票”和“付款”都完成后才被激活流程圖:

Task1Task2Task3Task3155種基本控制流模式Pattern4獨(dú)占式選擇(ExclusiveChoice)定義描述:一個(gè)活動(dòng)完成后,只能在后面的多個(gè)分支中激活一個(gè),即獨(dú)占式分支例子:比如用戶下單后,可以有N中付款方式,但是只能選擇其中一種流程圖:Task1Task2Task3Task21Task31Pattern5簡(jiǎn)單聚合(SimpleMerge)定義描述:在流程中有2個(gè)以上的分支中某一點(diǎn)處被合并成一個(gè)分支,只要分支中的一條完成,即可繼續(xù)進(jìn)行。而其他分支自動(dòng)結(jié)束例子:比如“發(fā)貨”在“銀行卡支付”和“貨到付款”等支付方式中的一個(gè)完成后才被激活流程圖:Task1Task2Task3Task31任一6基本控制流模式

–jBPM中的綜合實(shí)現(xiàn)5種基本控制流模式在JBPM4中的綜合實(shí)現(xiàn)流程圖:(JPDL)順序并行分叉同步排他選擇簡(jiǎn)單聚合74種高級(jí)分支同步模式Pattern6多重選擇(MultipleChoice)定義描述:在流程中,當(dāng)一個(gè)活動(dòng)完成后,有多個(gè)分支進(jìn)行選擇,可以選擇執(zhí)行其中的一個(gè)或者N個(gè)分支例子:去世博園玩轉(zhuǎn)門(mén)口檢票后可以選擇A~E個(gè)片區(qū)中的N個(gè)進(jìn)行觀光流程圖:JBPM中的支持情況:JPDL方式不支持先定義好這里的幾種,然后根據(jù)條件去篩選其中的幾種進(jìn)行,但是JBPM4.4之后支持一種叫foreach的節(jié)點(diǎn),允許我們?cè)谶\(yùn)行時(shí)制定幾種特定的任務(wù),比如上面例子中的片區(qū),我們可以在選定后再去循環(huán)BPMN方式支持根據(jù)條件執(zhí)行多個(gè)子分支Task1Task2Task3Task5Task484種高級(jí)分支同步模式Pattern7同步聚合(SynchronizingMerge)定義描述:在流程中的某個(gè)聚合點(diǎn),流程會(huì)等待所有的分支到來(lái),才能激活后續(xù)的活動(dòng),如果分支只有一個(gè)那么就變成Pattern5的簡(jiǎn)單聚合模式;如果存在2個(gè)以上的分支那就是Pattern3的同步模式;這種模式的關(guān)鍵在于能夠動(dòng)態(tài)的根據(jù)分支的多少進(jìn)行聚合。例子:游客觀光完N個(gè)片區(qū)后,系統(tǒng)能夠?qū)⒂慰驮贜個(gè)片區(qū)的信息記錄到庫(kù),無(wú)論N為多少流程圖:JBPM中的支持情況:可以通過(guò)設(shè)置JBPM的Join節(jié)點(diǎn)的屬性multiplicity的值為某個(gè)變量,并在程序中動(dòng)態(tài)的去修改該變量的值來(lái)制定分支的數(shù)量Task1Task2Task5Task3Task494種高級(jí)分支同步模式Pattern8多重聚合(MultipleMerge)定義描述:在流程中的多個(gè)分支,都可以激活后續(xù)的活動(dòng),也就是會(huì)產(chǎn)生多個(gè)實(shí)例例子:游客觀光完N個(gè)片區(qū)后,每個(gè)片區(qū)各自的系統(tǒng)可以對(duì)游客在自己片區(qū)的信息進(jìn)行存儲(chǔ)流程圖:JBPM中的支持情況:可以通過(guò)設(shè)置JBPM的Join節(jié)點(diǎn)的屬性multiplicity的值為某個(gè)變量,并在程序中動(dòng)態(tài)的去修改該變量的值來(lái)制定分支的數(shù)量Task1Task2Task5Task3Task4Task1Task5Task3Task4Task5104種高級(jí)分支同步模式Pattern9鑒別器(Discriminator)定義描述:在流程的某個(gè)聚合點(diǎn),N個(gè)分支的第一個(gè)分支到達(dá)后,就立刻激活后續(xù)活動(dòng);與此同時(shí),流程仍然要等待其余的分支完成并忽略完成。注意:在其余分支未全部完成前,第一個(gè)到達(dá)的分支所激活的后續(xù)節(jié)點(diǎn)是無(wú)法執(zhí)行的例子:“個(gè)人申請(qǐng)?zhí)峤弧焙?,并行提交給“第一導(dǎo)師審批”、“第二導(dǎo)師審批”、“第三導(dǎo)師審批”,他們中只要有一個(gè)完成了,那么就可以提交給學(xué)院做“學(xué)院審批”,但是學(xué)院要等這三個(gè)都完成之后才能夠執(zhí)行“學(xué)院審批”。N-out-of-M鑒別器模式跟鑒別器模式一樣的,只是這種模式是N個(gè)到達(dá)后,激活后續(xù)節(jié)點(diǎn),而剩下的M-N個(gè)節(jié)點(diǎn)到達(dá)后忽略掉這些節(jié)點(diǎn)。另外這M-N個(gè)節(jié)點(diǎn)未完成前,新激活的后續(xù)節(jié)點(diǎn)一樣無(wú)法被執(zhí)行JBPM中的支持情況:沒(méi)有直接支持這種模式,但是如果通過(guò)自定義節(jié)點(diǎn),應(yīng)該是可以處理這種模式的個(gè)人理解:對(duì)于里面的N-1個(gè),如果會(huì)被忽略掉,會(huì)顯得沒(méi)有什么價(jià)值,浪費(fèi)?112種結(jié)構(gòu)化模式Pattern10任意循環(huán)(ArbitraryCycles)定義描述:某一個(gè)或多個(gè)活動(dòng)可以反復(fù)執(zhí)行例子:用戶“付款”,然后“拿到汽水”,然后中了“再來(lái)一瓶”,然后就重復(fù)做了一次“拿到汽水”動(dòng)作流程圖:Task1Task3Task2Pattern11隱式終止(ImplicitTermination)定義描述:指著一個(gè)流程中,如果沒(méi)有活動(dòng)可以執(zhí)行力,那么流程就會(huì)自動(dòng)終止例子:比如用戶買了汽水后,中了50元小獎(jiǎng),但是沒(méi)有地方可以兌獎(jiǎng),于是這個(gè)流程終止了流程圖:Task1Task2Task3Task4122種結(jié)構(gòu)化模式–JBPM中的綜合實(shí)現(xiàn)2種結(jié)構(gòu)化模式在JBPM4中的綜合實(shí)現(xiàn)流程圖:(JPDL)循環(huán)隱式退出134種包含多實(shí)例的模式Pattern12無(wú)同步的多實(shí)例(MIwithout)定義描述:在流程中,一個(gè)活動(dòng)可以激活多個(gè)實(shí)例,每個(gè)實(shí)例相互獨(dú)立,并不需要在后面進(jìn)行同步例子:比如用戶購(gòu)買了N本書(shū),于是后續(xù)的“支付賬單”“更新客戶”可以以書(shū)本為單位各自執(zhí)行流程圖:JBPM中的支持情況:支持這種模式,但是不允許在后面進(jìn)行結(jié)束動(dòng)作Task1Task2Task1Task2-1Task2-2Task2-3Foreach節(jié)點(diǎn)144種包含多實(shí)例的模式Pattern13設(shè)計(jì)時(shí)確定的的多實(shí)例(MIwithaPrioriDesignTimeKnoledge)定義描述:在流程中,被激活的多個(gè)實(shí)例需要在某個(gè)聚合點(diǎn)聚合,而實(shí)例的個(gè)數(shù)在設(shè)計(jì)的時(shí)候就已經(jīng)知曉率例子:比如流程圖:JBPM中的支持情況:對(duì)于設(shè)計(jì)時(shí)已經(jīng)知道實(shí)例數(shù)量的,最簡(jiǎn)單的就是使用多個(gè)Task節(jié)點(diǎn)來(lái)實(shí)現(xiàn)多個(gè)實(shí)例Task1Task2Task1Task2-1Task2-2Task2-3X3154種包含多實(shí)例的模式Pattern14運(yùn)行時(shí)確定的的多實(shí)例(MIwithaPrioriRunTime

Knoledge)定義描述:在流程中,被激活的多個(gè)實(shí)例需要在某個(gè)聚合點(diǎn)聚合,而實(shí)例的個(gè)數(shù)在設(shè)計(jì)的時(shí)候并不知道,只有在運(yùn)行時(shí)根據(jù)條件來(lái)決定需要激活多少個(gè)實(shí)例例子:比如流程圖:JBPM中的支持情況:對(duì)于運(yùn)行時(shí)可以知曉實(shí)例數(shù)量的,可以通過(guò)設(shè)置JOIN節(jié)點(diǎn)的multiplicity來(lái)實(shí)現(xiàn)Task1Task2Task1Task2-1Task2-2Task2-3Foreach節(jié)點(diǎn)JOIN節(jié)點(diǎn)164種包含多實(shí)例的模式Pattern15運(yùn)行時(shí)無(wú)法確定的的多實(shí)例(MIwithoutaPrioriRunTime

Knoledge)定義描述:在流程中,被激活的多個(gè)實(shí)例需要在某個(gè)聚合點(diǎn)聚合,而實(shí)例的個(gè)數(shù)在設(shè)計(jì)的時(shí)候并不知道,該模式與上一個(gè)模式的區(qū)別就是,在產(chǎn)生的實(shí)例執(zhí)行時(shí)或者已經(jīng)執(zhí)行完時(shí),仍然有新的實(shí)例產(chǎn)生例子:比如訂購(gòu)100臺(tái)電腦,涉及多個(gè)供應(yīng)商,但那時(shí)每個(gè)供應(yīng)商供應(yīng)多少臺(tái)電腦是不知道的,因此供應(yīng)商的數(shù)量實(shí)現(xiàn)也不確定,但是每次供應(yīng)商送貨來(lái)后,就會(huì)將現(xiàn)在所擁有的電腦數(shù)量和所需的100臺(tái)進(jìn)行比較,來(lái)決定是否要下一個(gè)供應(yīng)商進(jìn)行送花Pattern15的實(shí)現(xiàn)產(chǎn)生多個(gè)實(shí)例JOIN節(jié)點(diǎn)在產(chǎn)生的實(shí)例中執(zhí)行的時(shí)候產(chǎn)生新的實(shí)例Pattern15的實(shí)現(xiàn)主要也是通過(guò)Pattern14的方式來(lái)做的流程圖:(JPDL)在這里修改計(jì)算實(shí)例的數(shù)量并付給JOIN節(jié)點(diǎn)的multiplicity173種基于狀態(tài)的模式Pattern16延遲選擇(DeferredChoice)定義描述:流程中某個(gè)點(diǎn)可以有多個(gè)分支進(jìn)行選擇。與Pattern4相比較:不是基于簡(jiǎn)單的數(shù)據(jù)或者決定就可以很明顯地作出選擇,而是會(huì)向系統(tǒng)或者執(zhí)行環(huán)境提供多種可選擇的分支;但是又不同于AND-Split模式,延遲選擇只能選擇一個(gè)分支執(zhí)行,一旦選擇了其中第一個(gè)分支,那么其他分支就會(huì)被撤銷。這種延遲一直會(huì)持續(xù)到第一個(gè)選擇分支開(kāi)始實(shí)際運(yùn)行。例子:收到的一批商品運(yùn)送到各個(gè)部門(mén),到底選擇什么樣的運(yùn)行方式,要看資源的可用性183種基于狀態(tài)的模式Pattern17交叉存取并行路由(InterleavedParallelRouting)定義描述:或者叫任意順序,指幾個(gè)活動(dòng)必須按順序執(zhí)行,不能同時(shí)進(jìn)行,但是這種順序又是不定的例子:體檢的時(shí)候有很多項(xiàng)目,這些項(xiàng)目不能同時(shí)進(jìn)行,但是可以以隨意順序進(jìn)行我的理解:這種任意順序的模式,有一種情況下是可以運(yùn)用的,就是通過(guò)資源多少來(lái)判斷優(yōu)先執(zhí)行哪個(gè)活動(dòng),比如若A的資源剩余最少,那么就先做A的順序,通過(guò)JBPM的實(shí)現(xiàn)如下:193種基于狀態(tài)的模式Pattern18里程碑(Milestone)定義描述:一個(gè)活動(dòng)的激活需要一種具體的狀態(tài),比如活動(dòng)A,B,C,只有在AB都執(zhí)行完了的情況下才能執(zhí)行C我的理解:這種模式有點(diǎn)類似于順序模式?或者是同步模式?202種取消模式Pattern19取消模式(CancelActivity)定義描述:簡(jiǎn)單的理解,就是將某個(gè)活動(dòng)取消例子:比如下好訂單后,“支付貨款”活動(dòng)正在運(yùn)行中,此時(shí)用戶取消訂單個(gè)人理解:取消某個(gè)活動(dòng),會(huì)引起幾種后續(xù)情況:

1.整個(gè)流程結(jié)束;比如訂單取消后,訂單的這個(gè)流程結(jié)束。

2.退回上一個(gè)節(jié)點(diǎn);比如付款后,用戶取消付款,重新下訂單。Pattern20取消實(shí)例(CancelCase)定義描述:如果一個(gè)活動(dòng)產(chǎn)生了多個(gè)實(shí)例,那么僅僅撤銷這個(gè)活動(dòng)是不夠的要將他所引起的所有實(shí)例都移除才行21具有中國(guó)特色的工作流模式Pattern1回退(Reject)定義描述:工作流的某個(gè)活動(dòng)執(zhí)行后,在下一個(gè)活動(dòng)又被轉(zhuǎn)回來(lái)例子:比如申請(qǐng)后進(jìn)行審批,審批沒(méi)有通過(guò),被退回來(lái)流程圖:Pattern2

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論