溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Activiti的基礎(chǔ)構(gòu)件是什么

發(fā)布時(shí)間:2021-10-21 10:30:38 來(lái)源:億速云 閱讀:165 作者:柒染 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關(guān)Activiti的基礎(chǔ)構(gòu)件是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

下圖時(shí)idea中actiBPM插件中構(gòu)件流程圖使用的基本構(gòu)件:

Activiti的基礎(chǔ)構(gòu)件是什么Activiti的基礎(chǔ)構(gòu)件是什么

構(gòu)件主要有開(kāi)始事件、中間事件、邊界事件、結(jié)束事件四種 。下面是各種構(gòu)件的詳細(xì)介紹。

  • StartEvent

啟動(dòng)事件時(shí)觸發(fā)型的,等待第三方觸發(fā)之后才能啟動(dòng),可通過(guò)activiti的相關(guān)api觸發(fā)。

  1. 空啟動(dòng)事件:標(biāo)簽中其他元素、屬性都沒(méi)有定義。

  2. 定時(shí)啟動(dòng)事件:可設(shè)置一次性定時(shí)啟動(dòng)、固定時(shí)間間隔啟動(dòng),timeDate(一次性定時(shí)),timeDuration(設(shè)置多長(zhǎng)時(shí)間后啟動(dòng)流程),timeCycle(固定定時(shí)間間隔啟動(dòng))。

  3. 異常啟動(dòng)事件:異常啟動(dòng)事件可以觸發(fā)一個(gè)異常子流程,但不能通過(guò)api啟動(dòng),只能等待另一個(gè)事件拋出異常結(jié)束。

  4. 消息啟動(dòng)事件 :等待消息來(lái)啟動(dòng)事件

  • EndEvetn

  1. 空結(jié)束事件:結(jié)束事件是拋出型的,空結(jié)束事件不處理拋出結(jié)果。

  2. 異常結(jié)束事件:異常結(jié)束事件定義了異常拋出的錯(cuò)誤代碼,如果有對(duì)應(yīng)和的異常開(kāi)始事件,則進(jìn)入異常開(kāi)始事件,否則作為空結(jié)束事件。

  3. 終止結(jié)束事件:可以終結(jié)一個(gè)流程實(shí)例的運(yùn)行。

  4. 取消結(jié)束事件:可以取消一個(gè)事務(wù)子流程的執(zhí)行,同時(shí)只能在子流程中使用。

  • UserTask

可以設(shè)置處理用戶、用戶組、表單等屬性,必須由人為來(lái)觸發(fā)。

  • ScriptTask

腳本任務(wù)不需要人為的觸發(fā),流程輪轉(zhuǎn)到腳本任務(wù)會(huì)自動(dòng)執(zhí)行,腳本任務(wù)可以運(yùn)用引擎依賴語(yǔ)言之外的腳本語(yǔ)言,如Groovy、JavaScript,也即可以直接在xml內(nèi)容插入其他語(yǔ)言的代碼。

  • ServiceTask

可以不受人工干涉,流轉(zhuǎn)到自動(dòng)運(yùn)行,調(diào)用java中的方法。需要把類(lèi)實(shí)現(xiàn)JavaDelegate接口,并且把這個(gè)實(shí)現(xiàn)類(lèi)設(shè)置到服務(wù)事件的class屬性上去。

  • MailTask

郵件任務(wù)可以通過(guò)activiti發(fā)送郵件,其中郵件信息通過(guò)變量方式傳遞。 

  • ManualTask

手動(dòng)任務(wù):activiti把手動(dòng)任務(wù)當(dāng)作一個(gè)空任務(wù)來(lái)處理,當(dāng)?shù)竭_(dá)此任務(wù)時(shí)由引擎自動(dòng)完成并轉(zhuǎn)向下一個(gè)任務(wù)。

  • ReceiveTask

接收任務(wù):接收任務(wù)是一個(gè)功能簡(jiǎn)單且單一的任務(wù),在任務(wù)創(chuàng)建后開(kāi)始等待消息的到來(lái),直到被觸發(fā)才會(huì)完成任務(wù)。 

  • BusinessRuleTask

業(yè)務(wù)規(guī)則任務(wù),業(yè)務(wù)規(guī)則任務(wù)可以根據(jù)流程變量的值處理預(yù)設(shè)的業(yè)務(wù)規(guī)則。

  • CallActivitiTask

當(dāng)流程執(zhí)行到callActivity,會(huì)創(chuàng)建一個(gè)新分支,它是到達(dá)調(diào)用節(jié)點(diǎn)的流程的分支。 這個(gè)分支會(huì)用來(lái)執(zhí)行子流程,默認(rèn)創(chuàng)建并行子流程,就像一個(gè)普通的流程。 上級(jí)流程會(huì)等待子流程完成,然后才會(huì)繼續(xù)向下執(zhí)行。

  • SubProcess

子流程:有嵌入子流程和調(diào)用子流程,嵌入子流程時(shí)主流程的一部分,只能被主流程調(diào)用;調(diào)用子流程反之。

  • Pool

  • Lane

  • ParallelGateway

并行網(wǎng)關(guān):并行網(wǎng)關(guān)用來(lái)對(duì)并發(fā)的任務(wù)進(jìn)行流程建模,它能把單條線路任務(wù)拆分成多個(gè)路徑并行執(zhí)行或?qū)⒍鄺l路線合并。 

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

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

  • ExclusiveGateway

排他網(wǎng)關(guān):排他網(wǎng)關(guān)用來(lái)對(duì)流程中的決定進(jìn)行建模。與單純使用線上的condition有什么區(qū)別呢,單純使用線上condition判斷,所有為true的流程都會(huì)被執(zhí)行,而使用排他網(wǎng)關(guān)就算有多個(gè)為true也只會(huì)選擇第一個(gè)進(jìn)行執(zhí)行,如果沒(méi)有符合要求的執(zhí)行流,那么排他網(wǎng)關(guān)將會(huì)拋出一個(gè)異常。

  • InclusiveGateway

包容網(wǎng)關(guān):包含網(wǎng)關(guān)融合了排它網(wǎng)關(guān)和并行網(wǎng)關(guān)的特性,排它網(wǎng)關(guān)運(yùn)行在每條線路上設(shè)置條件,并行網(wǎng)關(guān)可以同時(shí)執(zhí)行多條線路,包含網(wǎng)關(guān)既可以同時(shí)執(zhí)行多條線路,又允許在網(wǎng)關(guān)上設(shè)置條件。 

分支: 全部外出順序流的條件都會(huì)被解析。結(jié)果為true的順序流會(huì)以并行方式繼續(xù)運(yùn)行。 會(huì)為每一個(gè)順序流創(chuàng)建一個(gè)分支。

匯聚: 全部并行分支到達(dá)包括網(wǎng)關(guān)。會(huì)進(jìn)入等待章臺(tái), 直到每一個(gè)包括流程token的進(jìn)入順序流的分支都到達(dá)。 這是與并行網(wǎng)關(guān)的最大不同。換句話說(shuō),包括網(wǎng)關(guān)僅僅會(huì)等待被選中運(yùn)行了的進(jìn)入順序流。 在匯聚之后,流程會(huì)穿過(guò)包括網(wǎng)關(guān)繼續(xù)運(yùn)行。

  • EvetntGateway

事件網(wǎng)關(guān):它允許多個(gè)輸出流指向多個(gè)不同的中間捕獲事件。

基于事件網(wǎng)關(guān)同意依據(jù)事件推斷流向。

網(wǎng)關(guān)的每一個(gè)外出順序流都要連接到一個(gè)中間捕獲事件。 當(dāng)流程到達(dá)一個(gè)基于事件網(wǎng)關(guān),網(wǎng)關(guān)會(huì)進(jìn)入等待狀態(tài):會(huì)暫停運(yùn)行。 與此同一時(shí)候,會(huì)為每一個(gè)外出順序流創(chuàng)建相對(duì)的事件訂閱。

注意基于事件網(wǎng)關(guān)的外出順序流和普通順序流不同。這些順序流不會(huì)真的"運(yùn)行"。

相反。它們讓流程引擎去決定運(yùn)行到基于事件網(wǎng)關(guān)的流程須要訂閱哪些事件。

要考慮下面條件:

  1. 基于事件網(wǎng)關(guān)必須有兩條或以上外出順序流。

     

  2. 基于事件網(wǎng)關(guān)后,僅僅能使用intermediateCatchEvent類(lèi)型。 (activiti不支持基于事件網(wǎng)關(guān)后連接ReceiveTask。)

  3. 連接到基于事件網(wǎng)關(guān)的intermediateCatchEvent僅僅能有一條進(jìn)入順序流。 

  • BoundaryEvent

邊界事件是綁定在活動(dòng)上的捕獲事件、會(huì)一直監(jiān)聽(tīng)處于某種事件的觸發(fā)在捕獲到事件之后中斷活動(dòng),然后從邊界事件類(lèi)型的數(shù)據(jù)流繼續(xù)執(zhí)行。可以捕獲信號(hào)、消息、定時(shí)器、錯(cuò)誤信號(hào)

  • IntermediateCatchingEvent

中間捕獲事件,可以捕獲信號(hào)、消息、定時(shí)器錯(cuò)誤。

  • IntermediateThrowEvent

中間拋出事件:可以拋出信號(hào)事件

  • Annotion

  • SequenceFlow

  1. 標(biāo)準(zhǔn)順序流:允許添加監(jiān)聽(tīng)事件。

  2. 條件順序流:可以添加條件表達(dá)式,只有滿足條件才能到達(dá)指定目標(biāo)活動(dòng)。

看完上述內(nèi)容,你們對(duì)Activiti的基礎(chǔ)構(gòu)件是什么有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI