一、順序流
1、條件順序流:一個條件
2、預設順序流: 隻有在節點的其他外出順序流不能被選中是,才會使用它作為外出順序流繼續執行。 預設順序流的條件設定不會生效。預設順序流通過對應節點的default屬性定義
二、網關
1、排它網關: 内部是一個“X”圖示,用來在流程中實作決策。 當流程執行到這個網關,所有外出順序流都會被處理一遍。 其中條件解析為true的順序流會被選中,讓流程繼續運作。
2、并行網關: 内部是一個“加号”圖示。它允許将流程 分成多條分支,也可以把多條分支 彙聚到一起
3、包含網關: 内部包含一個圓圈圖示,可以看做是排他網關和并行網關的結合體。 和排他網關一樣,你可以在外出順序流上定義條件,包含網關會解析它們。 但是主要的差別是包含網關可以選擇多于一條順序流,這和并行網關一樣。
4、基于事件網關: 網關的每個外出順序流都要連接配接到一個中間捕獲事件。 當流程到達一個基于事件網關,網關會進入等待狀态:會暫停執行。 與此同時,會為每個外出順序流建立相對的事件訂閱。
三、任務
1、使用者任務: 使用者任務用來設定必須由人員完成的工作。 當流程執行到使用者任務,會建立一個新任務, 并把這個新任務加入到配置設定人或群組的任務清單中。
2、腳本任務: 腳本任務是一個自動節點。當流程到達腳本任務, 會執行對應的腳本。 腳本任務的流程可以通路的所有流程變量,都可以在腳本中使用。 也可以在腳本中設定流程變量,直接調用 execution.setVariable("variableName", variableValue)。
<script> def scriptVar = "test123" execution.setVariable("myVar", scriptVar) </script>
3、Java服務任務: 用來調用外部java類。
4、Web Service任務: 用來同步調用一個外部的Web service
5、業務規則任務: 的功能和ServiceTask一樣
6、郵件任務: 自動郵件任務
7、Mule任務: mule 是一個以Java為核心的輕量級的消息架構和整合平台
8、Camel任務: 可以從Camel發送和介紹消息
9、手工任務: 用來表示工作需要某人完成,而引擎不需要知道,手工任務是直接通過的活動, 流程到達它之後會自動向下執行。
10、Java接收任務: 接收任務是一個簡單任務,它會等待對應消息的到達。
11、Shell任務: shell任務可以執行shell腳本和指令
12、執行監聽器:
執行監聽器可以執行外部java代碼或執行表達式,當流程定義中發生了某個事件。 可以捕獲的事件有:
流程執行個體的啟動和結束。
選中一條連線。
節點的開始和結束。
網關的開始和結束。
中間事件的開始和結束。
開始時間結束或結束事件開始。
13、任務監聽器:
任務監聽器可以在發生對應的任務相關事件時執行自定義java邏輯 或表達式。
任務監聽器支援以下屬性:
event(必選):任務監聽器會被調用的任務類型。 可能的類型為:
create:任務建立并設定所有屬性後觸發。
assignment:任務配置設定給一些人時觸發。 當流程到達userTask, assignment事件 會在create事件之前發生。 這樣的順序似乎不自然,但是原因很簡單:當獲得create時間時, 我們想獲得任務的所有屬性,包括執行人。
complete:當任務完成,并尚未從運作資料中删除時觸發。
delete:隻在任務删除之前發生。 注意在通過completeTask正常完成時,也會執行。
class:必須調用的代理類。 這個類必須實作<code>org.activiti.engine.delegate.TaskListener</code>接口。
expression:(無法同時與class屬性一起使用): 指定事件發生時執行的表達式。 可以把<code>DelegateTask</code>對象和事件名稱(使用<code>task.eventName</code>) 作為參數傳遞給調用的對象。
在activiti 5.12中,我們也介紹了新的任務監聽器,org.activiti.engine.impl.bpmn.listener.ScriptTaskListener。 腳本任務監聽器可以為任務監聽器事件執行腳本。
四、子流程
1、子流程: 一個包含其他節點,網關,事件等等的節點。 它自己就是一個流程,同時是更大流程的一部分。
2、事件子流程: 事件子流程可以添加到流程級别或任意子流程級别。用于觸發事件子流程的事件是使用開始事件配置的。
3、事務子流程: 事務子流程是内嵌子流程,可以用來把多個流程放到一個事務裡。 事務是一個邏輯單元,可以把一些單獨的節點放在一起,這樣它們就可以一起成功或一起失敗。
4、調用活動(子流程): 這個流程定義需要被很多其他流程定義調用的時候。
本文轉自 獨孤環宇 51CTO部落格,原文連結:http://blog.51cto.com/snowtiger/1966555