在 Activiti 流程引擎中,儘管經過 setAssignee(taskId, userId) 能夠設置受理人,但這畢竟要先把下一步的任務查出來才能設置,比較繁瑣;藉助 Activiti 的 activiti:assignee 屬性就能夠自動化設置,即在當前任務完成之時就給下一個任務的受理人賦值。java
這本質上是在設置一個局部變量,爲流程的單個用戶任務服務。設計
taskService.complete(task.getId(), vars); // 下一步的用戶任務 task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); taskService.setAssignee(task.getId(), addModel.getCurrentTracer().toString());
爲了設置受理人,在已經完成任務後,還須要把下一步的任務再次查詢出來,比較繁瑣。3d
其對應的 XML 配置爲:code
<userTask id="usertask2" name="報項審覈(業務經理)" activiti:assignee="${assigneeUserId}"></userTask>
vars = new HashMap<>(); // 完成任務 vars.put("assigneeUserId", addModel.getCurrentTracer().toString()); taskService.complete(task.getId(), vars);
只需關心完成當前任務便可,Activiti 會自動把參數 assigneeUserId 的值做爲下一步用戶任務的 Assignee_ 字段的值。xml
查詢運行時任務表 act_ru_task 的記錄,可見 Assignee_ 字段已經有了值。blog