1. 程式人生 > >Activiti 6.x【12】剩下的一些元件

Activiti 6.x【12】剩下的一些元件

剩下的一些元件

主要講解Gateway,Connection,Artifacts以及Container部分的用法

Gateway

這裡寫圖片描述

關於閘道器前面多多少少都有涉及。分為四種閘道器。下面將逐一描述。前三種閘道器主要以流程變數的方式做判斷。

這裡寫圖片描述

ExclusiveGateway

單行閘道器會執行第一個符合條件的

【官網典例】 這裡寫圖片描述

ParallelGateway

並行閘道器所有通路都執行。類是java的fork join最後會聚合再執行後續步驟。

【官網典例】 這裡寫圖片描述

InclusiveGateway

包容閘道器所有通路進行判斷通過的話通路全部會執行。

【官網典例】 這裡寫圖片描述

EventGateway

事件閘道器可以簡單理解為與捕獲中間事件為條件的單行閘道器。Activiti不支援基於事件的閘道器後接收任務。

  • 基於事件的閘道器必須具有兩個或更多傳出序列流。
  • 基於事件的閘道器只能連線到intermediateCatchEvent僅型別的元素。
  • 一個intermediateCatchEvent連線到一個基於事件的閘道器必須有一個單一的進入順序流。

【官網典例】

這裡寫圖片描述

Connection

這裡寫圖片描述

SequenceFlow

簡而言之就是普通的連線線

MessageFlow

簡而言之就是跨泳池的連線線

這裡寫圖片描述

Association

一般可以預設為是補償的事件連線線或者註釋的連線線,叫做關聯。 這裡寫圖片描述

Artifacts

這裡寫圖片描述

Annotation

簡單來說就是註釋

這裡寫圖片描述

Container

容器的意思

這裡寫圖片描述

Pool+Lane

泳池與泳道,主要用於流程結構的劃分。

這裡寫圖片描述

EventSubProcess

簡單說就是,由事件出發的子流程

這裡寫圖片描述

SubProcess

BPMN 2.0區分了常規子流程(通常也稱為嵌入式子流程)和呼叫活動(看起來非常相似)。從概念的角度來看,當流程執行到達活動時,兩者都將呼叫子流程。

不同之處在於,呼叫活動引用了流程定義外部的流程,而子流程嵌入在原始流程定義中。呼叫活動的主要用例是具有可從多個其他流程定義呼叫的可重用流程定義。

當程序執行到達呼叫活動時,將建立一個新執行,該執行是到達呼叫活動的執行的子執行。然後,該子執行用於執行子程序,可能在常規程序中建立並行子執行。超級執行一直等到子程序完全結束,然後繼續原始程序。

【子流程】

子流程只能有一個無啟動事件,不允許其他啟動事件型別。子流程必須至少有一個結束事件。請注意,BPMN 2.0規範允許省略子流程中的開始和結束事件,但當前的Activiti實現不支援此操作。

SequenceFlow不能跨越子流程邊界。

這裡寫圖片描述

【呼叫活動】

呼叫活動在Task中

這裡寫圖片描述這裡寫圖片描述

官網demo 這裡寫圖片描述

Transaction

事務子流程是嵌入式子流程,可用於將多個活動分組到事務。事務是一個邏輯工作單元,它允許對一組單獨的活動進行分組,從而使它們共同成功或失敗。

執行的可能有三種不同的結果:

如果執行既未被取消也未被危險終止,則執行成功。如果事務子程序成功,則使用傳出序列流保留它。如果在此過程中稍後丟擲補償事件,則可以補償執行成功的事務。

事務是取消,如果執行到達取消結束事件。在這種情況下,所有執行都將被終止並刪除。然後將單個剩餘執行設定為取消邊界事件,從而觸發補償。在補償完成之後,使用取消邊界事件的輸出序列流來保留事務子過程。

如果丟擲錯誤事件,則事務以危險結束,而不會在事務子流程的範圍內捕獲。(如果錯誤發生在事務子程序的邊界上,這也適用。)在這種情況下,不執行補償。

官網Demo

這裡寫圖片描述

結語

雖然沒有什麼人看,也算是按照自己期望的把activiti知識都過了一遍,基本的常用Task都已經在帖子裡面涉及到了,也都有提及。也算是告一段落了。