一 Activiti 啟動事件與結束事件
1, 空啟動事件 (常用)
屬性:activiti:formKey 指定事件關聯的表單文件。
有兩種表單:
①外置表單 如:activiti:formKey="xxx-start.form".
②動態表單
<extensionElements>
<activiti:formProperty id="startDate" name="開始日期" type="date" datePattern="yyyy-MM-dd" writable="false"></activiti:formProperty>
</extensionElements>
activiti:initiator 記錄流程啟動人ID(也可以是名稱). activiti:initiator="userName"
通過啟動時 identityService.setAuthenticatedUserId( id ); 設置,至整個流程都可以用${userName}.訪問。
2, 定時啟動事件
<timerEventDefinition><timeCycle>R4/PT10H</timeCycle></timerEventDefinition>
3, 異常啟動事件
4, 消息啟動事件
5, 結束事件
又分①空結束事件(常用) ②異常結束事件 ③取消結束事件 (暫時木有發現怎么實用,一般空結束)
二 順序流
分為標准順序流與條件順序流
activiti 中不作具體區別 有設置conditionExpression的就是條件順序流, 條件表達式只支持UEL,
如:<conditionExpression xsi:type="tFormalExpression"><![CDATA[${isMan== 'false'}]]></conditionExpression>;
順序流中可以設置監聽器。
三 任務
用戶任務 (常用)
屬性
activiti:assignee 指定的處理人
activiti:cadidateUsers 指定用戶任務的候選人,多個可用',' 分隔。
activiti:cadidateGroups 指定候選組,多個可用',' 分隔。
指定候選人和候選組都需要先簽收,再處理.
activiti:dueDate 設置用戶任務到期日.
activiti:priority 任務優先級 [0,100].
用戶任務也可以添加監聽器.
<extensionElements>
<activiti:taskListener class="com.xx.xx" event="complete"/>
</extensionElements>
腳本任務
java service 任務
web service 任務
業務規則任務
郵件任務
camel 任務 Mule任務
手動任務
接收任務
Shell 任務
多實例任務
以上沒說明的任務都不熟悉,大概什么時候有需求的時候再研究下。
四 網關
排他網關 (常用)
只有線路為true才執行,並且多個線路為true只執行第一個true的網關。
<exclusiveGateway id="geteway" default="flow1"/>
並行網關
線路大家一起執行,不會管線路上的設置條件,如有設置則忽略。
分為拆分、合並階段,不必一一對應,有始有終即可。
<parallelGateway id="bingxing" name="bingxing"/>
包容網關
排他網關與並行網關的合成體,可以一起執行,也可以設置線路條件。
事件網關
五 子流程與調用活動 (待實用寫)
六 邊界與中間事件 (待實用寫)
七 監聽器
如上所述的線路與用戶任務上都可以設置監聽器。
event 有三種 start, take, end.
執行監聽器
作用在流程啟動、結束、線路開始結束上。
執行類型:
class 設置監聽類 expression 監聽表達式 delegateExpression指定監聽接口,具體類可以在引擎中配置或Spring代理.
如: <activiti:executionListener event="start" class="com.xx.xx"/>, <activiti:executionListener event="start" expression="${name}"/>
任務監聽器
作用於用戶任務
監聽三種事件:
create: 任務創建且所有任務屬性設置完全之后觸發。
assignment: 任務分配給某個班里人之后觸發,並在create之后。
complete: 任務完成時觸發,在運行時任務數據被刪除之前觸發(act_ru_task表數據清之前)。
執行類型:
class 設置監聽類 expression 監聽表達式 delegateExpression指定監聽接口,具體類可以在引擎中配置或Spring代理.
如:
<userTask id="task1" name="用戶任務">
<extensionElements>
<activiti:taskListener event="complete" class="com.task.listener.taskForUserTaskComplete"/>
</extensionElements>
</userTask>
暫時寫到這里,待續...