剩下的一些組件
主要講解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都已經在帖子裏面涉及到了,也都有提及。也算是告一段落了。