Activiti7的使用(六)

Activiti的網(wǎng)關(guān):

1、ExclusiveGateway:排他網(wǎng)關(guān)

排他網(wǎng)關(guān)(也叫異或(XOR)網(wǎng)關(guān),或叫基于數(shù)據(jù)的排他網(wǎng)關(guān)),用來在流程中實(shí)現(xiàn)決策。 當(dāng)流程執(zhí)行到這個(gè)網(wǎng)關(guān),所有分支都會(huì)判斷條件是否為 true,如果為 true 則執(zhí)行該分支,注意,排他網(wǎng)關(guān)只會(huì)選擇一個(gè)為 true 的分支執(zhí)行。(即使有兩個(gè)分支條件都為 true,排他網(wǎng)關(guān)也會(huì)只選擇一條分支去執(zhí)行;如果所有分支都是false,則會(huì)拋出異常;分支必須最少兩條,少于兩條部署時(shí)候會(huì)報(bào)錯(cuò)。)



2、ParallelGateway:并行網(wǎng)關(guān)

并行網(wǎng)關(guān)允許將流程分成多條分支,也可以把多條分支匯聚到一起,并行網(wǎng)關(guān)的功能是基于進(jìn)入和外出順序流的:

? fork 分支:并行后的所有外出順序流,為每個(gè)順序流都創(chuàng)建一個(gè)并發(fā)分支。

? join 匯聚:所有到達(dá)并行網(wǎng)關(guān),在此等待的進(jìn)入分支, 直到所有進(jìn)入順序流的分支都到達(dá)以后, 流程就會(huì)通過匯聚網(wǎng)關(guān)。


注意,如果同一個(gè)并行網(wǎng)關(guān)有多個(gè)進(jìn)入和多個(gè)外出順序流, 它就同時(shí)具有分支和匯聚功能。 這時(shí),網(wǎng)關(guān)會(huì)先匯聚所有進(jìn)入的順序流,然后再切分成多個(gè)并行分支。與其他網(wǎng)關(guān)的主要區(qū)別是,并行網(wǎng)關(guān)不會(huì)解析條件。 即使順序流中定義了條件,也會(huì)被忽略。


3、InclusiveGateway:包含網(wǎng)關(guān)

包含網(wǎng)關(guān)可以看做是排他網(wǎng)關(guān)和并行網(wǎng)關(guān)的結(jié)合體。 和排他網(wǎng)關(guān)一樣,你可以在外出順序流上定義條件,包含網(wǎng)關(guān)會(huì)解析它們。 但是主要的區(qū)別是包含網(wǎng)關(guān)可以選擇多于一條順序流,這和并行網(wǎng)關(guān)一樣。

包含網(wǎng)關(guān)的功能是基于進(jìn)入和外出順序流的:

? 分支:所有外出順序流的條件都會(huì)被解析,結(jié)果為 true 的順序流會(huì)以并行方式繼續(xù)執(zhí)行, 會(huì)為每個(gè)順序流創(chuàng)建一個(gè)分支。

? 匯聚:所有并行分支到達(dá)包含網(wǎng)關(guān),會(huì)進(jìn)入等待狀態(tài), 直到每個(gè)包含流程 token 的進(jìn)入順序流的分支都到達(dá)。 這是與并行網(wǎng)關(guān)的最大不同。換句話說,包含網(wǎng)關(guān)只會(huì)等待被選中執(zhí)行了的進(jìn)入順序流。 在匯聚之后,流程會(huì)穿過包含網(wǎng)關(guān)繼續(xù)執(zhí)行。

例子:企業(yè)體檢流程,公司全體員工進(jìn)行常規(guī)項(xiàng)檢查、抽血化驗(yàn),公司管理層除常規(guī)檢查和抽血化驗(yàn)還能進(jìn)行增加項(xiàng)檢查。員工類型通過流程變量 userType 來表示,如果等于 1 表示普通員工,如果等于 2 表示領(lǐng)導(dǎo)。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容