Activiti工作流之个人任务分配模式
1.固定分配
在進行業務流程建模時指定固定的任務負責人。
在 properties 視圖中,填寫 Assignee 項為任務負責人
?
由于固定分配方式,任務只管一步一步執行任務,執行到每一個任務將按照 bpmn 的配置去分配任務負責人。
2.表達式分配
(1)UEL表達式
Activiti 使用 UEL 表達式,UEL 是 java EE6 規范的一部分,UEL(Unified Expression Language)即統一表達式語言,activiti 支持兩個 UEL 表達式:UEL-value 和 UEL-method。
UEL-value定義如下:
?
assignee這個變量是activiti的一個流程變量
?
holiday 也是 activiti 的一個流程變量。holiday.assignee 表示通過調用 user 的 getter 方法獲取值。
(2)使用流程變量分配任務
/*** 啟動流程實例,動態設置assignee*/ public class AssigneeUEL { ? ?public static void main(String[] args) {//1.得到ProcessEngine對象ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); ?//2.得到RuntimeService對象RuntimeService runtimeService = processEngine.getRuntimeService(); ?//3.設置assignee的取值 ? 用戶可以在界面上設置流程的執行人Map<String,Object> map = new HashMap<>();map.put("assignee0","張三豐");map.put("assignee1","張無忌");map.put("assignee2","金毛獅王"); ?//4.啟動流程實例,同時還要設置流程定義的assignee的值ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("holiday3", map); ?//5.輸出System.out.println(processEngine.getName()); ?} }(3)注意事項
由于使用了表達式分配,必須保證在任務執行過程表達式執行成功,比如:
某個任務使用了表達式${order.price > 100 && order.price < 250},當執行該任務時必須保證 order 在流程變量中存在,否則 activiti 異常。
3.監聽器分配
任務監聽器是發生對應的任務相關事件時執行自定義 java 邏輯 或表達式。
任務相當事件包括:
?
Create:任務創建后觸發 Assignment:任務分配后觸發 Delete:任務完成后觸發 All:所有事件發生都觸發
定義任務監聽類,且類必須實現 org.activiti.engine.delegate.TaskListener 接口
public class MyTaskListener implements TaskListener { @Overridepublic void notify(DelegateTask delegateTask) { //這里指定任務負責人 delegateTask.setAssignee("張三");} ???????}?
總結
以上是生活随笔為你收集整理的Activiti工作流之个人任务分配模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Activiti工作流之业务标识和流程的
- 下一篇: Activiti工作流之流程变量