Activiti 基本操作之“受理人变量”

在 Activiti 流程引擎中,尽管通过 setAssignee(taskId, userId) 可以设置受理人,但这毕竟要先把下一步的任务查出来才能设置,比较繁琐;借助 Activiti 的 activiti:assignee 属性就可以自动化设置,即在当前任务完成之时就给下一个任务的受理人赋值。

这本质上是在设置一个局部变量,为流程的单个用户任务服务。

不提倡的 setAssignee 的方式

taskService.complete(task.getId(), vars);
// 下一步的用户任务
task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
taskService.setAssignee(task.getId(), addModel.getCurrentTracer().toString());

为了设置受理人,在已经完成任务后,还需要把下一步的任务再次查询出来,比较繁琐。

提倡 activiti:assignee 动态设置

1.在流程设计中为 Assignee 指定变量“${assigneeUserId}”

Activiti 基本操作之“受理人变量”

其对应的 XML 配置为:

<userTask ></userTask>

2. 针对变量赋值

vars = new HashMap<>();
 
// 完成任务
vars.put("assigneeUserId", addModel.getCurrentTracer().toString());
taskService.complete(task.getId(), vars);

只需关心完成当前任务即可,Activiti 会自动把参数 assigneeUserId 的值作为下一步用户任务的 Assignee_ 字段的值。

3. 验证

查询运行时任务表 act_ru_task 的记录,可见 Assignee_ 字段已经有了值。

Activiti 基本操作之“受理人变量”

相关文章:

  • 2022-12-23
  • 2021-11-27
  • 2021-05-12
  • 2021-11-04
  • 2022-01-29
  • 2022-12-23
  • 2021-05-14
猜你喜欢
  • 2021-12-22
  • 2022-02-21
  • 2021-11-27
  • 2021-04-14
  • 2021-11-22
  • 2021-11-27
  • 2022-12-23
相关资源
相似解决方案