在 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