一、概述
介绍:在activiti的任务中,与任务相关的任务为以下三种,其含义如下:
- 候选人(组):代表有权限对任务进行操作的人。
- 持有人:指当前任务的执行人,他此时持有该任务。
- 代理人:当一个人持有人不方便处理任务时,可以将任务指给另一人,被指的人即为代理人。
二、候选人
介绍:任务和候选人的关系是一个中间表(act_ru_identitylink)来保存的,所有任务和候选人的关系是多对多。
- 编码测试如下:
1 | 复制代码ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); |
- 结果查看
- 用户表查看:
- 任务表查看:
- 关系表:
- 运行结果:
- 用户表查看:
三、持有人
介绍:一个人可以持有多个任务,一个任务只能有一个持有人,因此持有人和任务的关系是一对多。持有人关系表现在任务表act_ru_task的OWNER字段中。
- 编码测试:
1 | 复制代码//其他代码和上个候选人内容一样 |
- 结果
四、代理人
介绍:一个人可以是多个任务的代理人,一个任务只能有一个代理人,因此代理人和任务的关系是一对多
区别:taskService.setAssignee()和taskService.claim()都可以给任务设置代理人,区别:
- setAssignee方法可以随时任意为任务指定代理人(可多次调用),
- 而claim方法给任务指定一次代理人后,如果再次调用claim来指定代理人,则会抛出异常:ActivitiTaskAlreadyClaimedException: Task ‘b7ec485a-a4cd-4bdc-8117-8beb76a81c2f’ is already claimed by someone else.
- 编码测试
1 | 复制代码//用户一 |
- 数据库查看:
- 调用两次claim的报错如下:
本文转载自: 掘金