关于activiti任务处理人变更的问题(改派)

简介: 关于activiti任务处理人变更的问题(改派)

最近遇到一个需求,就针对某一个任务,配置的任务审核人可能是A,但是现在A出差了,需要B去临时处理一下,那么这个时候就需要用到了处理人变更,也就是我们常说的改派。

首先分析下activiti的审核人的方式吧,activiti审核人有三种情况,记不记得在官方提供war包的页面上有三个审核人,分别是主要审核人、多个审核人、用户组,这三种。


第一种,如果是第一个主要审核人,那么他是存放在'ACT_RU_TASK'表中的'ASSIGNEE_'字段中,但是这个只能针对单个人。


第二种存多个审核人的时候,ACT_RU_TASK表中的这个字段不会存,有一张‘ACT_RU_IDENTITYLINK’表,这个表跟任务表是关联表,一个任务的任务ID在这个表中中是可以重复出现的,但是‘USER_ID_’是可以重复的,相当于任务跟人是一对多的,是在这个表中实现的、


第三种是存一个用户组,如果在用户组中维护了一个用户组,需要用这个用户组审核,那么放肆跟第二种其实差不多,不过任务'ID'对应的不再是‘USER_ID_’,而是对应的‘GROUP_ID_’用户组的ID,但是这个支不支持多个,我目前还没试过。


数据库了解清楚了,来说具体实现吧,我找了几个接口:


taskService.setAssignee(taskId, userId);这个就是适用于第一种,如果是单个人,直接根据任务以及员工标号,可以直接通过上面第一种方法,达到修改审核人的目的。


taskService.addCandidateUser(taskId, userId);这个接口适用于第二种,循环调用,如果是多个人的时候循环即可。他会在‘ACT_RU_IDENTITYLINK’表中添加多条数据。


taskService.addCandidateGroup(taskId, groupId);这个接口就是第三种了,针对于用户组的,也是直接在‘ACT_RU_IDENTITYLINK’表中添加对应的数据,不过加进去的是在‘GROUP_ID_’中。


然后我做改派的时候,最先想到第一个,但是我担心用第一个不兼容,如果别人要改派多个人或者用户组怎么办,所以第一个直接pass掉了,然后就找了第二种跟第三种,但是,需要注意的是,如果要用这两种,是需要把之前的审核人删掉的,比如说这个任务之前是给A审核,那么我现在通过接口添加了一个B,就变成了A、B审核。所以这里还需要用到一个接口:


taskService.addCandidateUser(taskId, userId);或者是taskService.deleteCandidateGroup(taskId, groupId);。这个根据方法面应该就能看出来了,前面是add,这个是删除,需要找到原来的审核人或者组,调用这个方法,删掉,然后再新加上你自己的,来达到改派的效果。因为我处理的时候加上日志了,所以代码可能贴出来也不太清晰,就不贴了,如果有需要可以留言,有问题或者需要讨论的都可以留言


相关文章
22activiti - 流程管理定义(查询流程状态)
22activiti - 流程管理定义(查询流程状态)
150 0
|
SQL XML 存储
Flowable 流程部署与删除
Flowable 流程部署与删除
|
8月前
|
XML 中间件 数据库
基于jeecgboot的flowable流程支持定时捕获事件
基于jeecgboot的flowable流程支持定时捕获事件
135 0
|
8月前
Flowable流程中自定义业务表单并行审批的bug修复
Flowable流程中自定义业务表单并行审批的bug修复
154 0
|
8月前
|
API
工作流JBPM操作API删除流程&部署流程
工作流JBPM操作API删除流程&部署流程
56 0
|
8月前
Activiti 流程发布
Activiti 流程发布
60 0
|
数据库
30activiti - 流程执行历史记录
30activiti - 流程执行历史记录
75 0
27activiti - 流程变量(查询历史的流程变量)
27activiti - 流程变量(查询历史的流程变量)
74 0
|
存储 Java API
流程引擎Activiti流程实例讲解
流程引擎Activiti流程实例讲解
282 0
|
XML SQL Java
Flowable 设置任务处理人的四种方式
Flowable 设置任务处理人的四种方式
1068 1

热门文章

最新文章