关于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,这个是删除,需要找到原来的审核人或者组,调用这个方法,删掉,然后再新加上你自己的,来达到改派的效果。因为我处理的时候加上日志了,所以代码可能贴出来也不太清晰,就不贴了,如果有需要可以留言,有问题或者需要讨论的都可以留言

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值