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


相关文章
activiti创建自子任务,创建抄送任务,任务分裂的实现思路
activiti创建自子任务,创建抄送任务,任务分裂的实现思路
1830 0
Activiti原理分析(二)多实例,会或签与依次审批
Activiti 原理分析系列文章的第二篇。这里我们重点研究在 Activity 中如何实现会或签以及依次审批的功能,以及 BPMN 中的多实例规范。
5554 2
Activiti原理分析(二)多实例,会或签与依次审批
|
应用服务中间件 Windows
IntelliJ IDEA 中 Tomcat 控制台乱码解决方法
IntelliJ IDEA 中 Tomcat 控制台乱码解决方法
849 0
IntelliJ IDEA 中 Tomcat 控制台乱码解决方法
|
fastjson
fastjson设置指定日期属性的格式化
fastjson默认将时间格式化为时间戳,如果我们想以时间字符串格式输出的话,暂提供两种方式 1.序列化器方式 声明DateJsonSerializer public class DateJsonSerializer implements Object...
7490 1
|
弹性计算 关系型数据库 数据库
PostgreSQL 数据库实例只读锁定(readonly) - 硬锁定,软锁定,解锁
标签 PostgreSQL , 只读 , 锁定 , readonly , recovery.conf , 恢复模式 , pg_is_in_revoery , default_transaction_read_only 背景 在一些场景中,可能要将数据库设置为只读模式。 例如, 1、云数据库,当使用的容量超过了购买的限制时。切换到只读(锁定)模式,确保用户不会用超。 2、业务上需要对
8058 0
|
JSON 缓存 NoSQL
解决redis序列化java8 LocalDateTime
解决redis序列化java8 LocalDateTime
4962 0
解决redis序列化java8 LocalDateTime
【STM32】详解RTC实时时钟的概念和配置&示例代码
【STM32】详解RTC实时时钟的概念和配置&示例代码
|
XML Oracle Java
Flowable工作流入门看这篇就够了
Flowable工作流入门看这篇就够了
20587 1
|
存储 XML 缓存
Flowable基本使用介绍和Flowable数据库表解释
lowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据,等等。
8654 1
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】