activiti6 任务委派

文章描述了一个使用Activiti工作流引擎处理任务委派的场景。当张三无法审批时,可以将任务委派给李四。系统通过Controller和Service层的代码处理委派逻辑,包括更新待办任务和审批记录。在委派后,任务状态会在张三的已办任务列表中体现,而李四则不会有记录。
摘要由CSDN通过智能技术生成

我理解的是 :一个流程 当到了一个节点 是张三审批 张三有事顾不上 张三直接委派给李四。 然后这个待办任务就去到李四用户上 当李四给审批通过后 这个待办任务会变成已办任务 这个已办任务会跑到张三的已办表中 所以说李四待办已办都不会有记录

下面所有代码 根据我自己的需求

DelegateTaskVO
@Data
public class DelegateTaskVO {
    /**
     * activiti代办节点号
     **/
    private String taskId;
    /**
     * 委托人id
     **/
    private String userId;
    /**
     * 被委托人id
     **/
    private String consignee;
    /**
     * 委托说明
     **/
    private String description;

}
Controller
@PostMapping("/delegateTask")
    @ApiOperation(value = "任务委派", httpMethod = "POST", notes = "任务委派")
    public ResponseVo delegateTask(@RequestBody DelegateTaskVO delegateTaskVO){
        jbpmProcessinstanceService.delegateTask(delegateTaskVO);
        return ResponseVo.ok();
    }
Service
 @Transactional(rollbackFor = Exception.class)
    public void delegateTask(DelegateTaskVO delegateTaskVO) {
        activitiInstanceService.claimTask(BaseContextHandler.getUserId(), delegateTaskVO.getTaskId());
        //获取用户id
        String userId = delegateTaskVO.getUserId();
        JbpmUserInfo jbpmUserInfo = null;
        if (null != userId && 0 < userId.trim().length()) {
            // 先查userId
            jbpmUserInfo = jbpmUserService.getUserByUserId(userId.trim());
        }
        //查找task任务
        Task task = activitiInstanceService.getTaskByTaskId(delegateTaskVO.getTaskId());
        QueryWrapper<JbpmProcessinstance> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("process_instance_id", task.getProcessInstanceId());
        //查找实例
        JbpmProcessinstance jbpmProcessinstance = this.getOne(queryWrapper, true);

        if (null == task) {
            throw new JbpmProcessinstanceException(
                    JbpmProcessinstanceErrorCode.JbpmProcessinstance_NOT_EXIST_ERROR.getCode());
        }
        // 保存审批记录
        JbpmWfApprove jbpmWfApprove = new JbpmWfApprove();
        jbpmWfApprove.setApproveDate(new Date());
        jbpmWfApprove.setApproverId(userId);
        if (null != jbpmUserInfo) {
            jbpmWfApprove.setApproverLoginname(jbpmUserInfo.getLoginName());
            jbpmWfApprove.setApproverName(jbpmUserInfo.getName());
        }
        jbpmWfApprove.setInstanceId(jbpmProcessinstance.getId());
        jbpmWfApprove.setActivitiInstanceId(jbpmProcessinstance.getProcessInstanceId());
        jbpmWfApprove.setTaskId(delegateTaskVO.getTaskId());
        jbpmWfApprove.setNodeId(task.getTaskDefinitionKey());
        jbpmWfApprove.setResult("委派");
        jbpmWfApprove.setOption(delegateTaskVO.getDescription());
        jbpmWfApproveService.save(jbpmWfApprove);

        taskService.delegateTask(delegateTaskVO.getTaskId(), delegateTaskVO.getConsignee());
    }
Activiti 6的28张表可以分为以下几类: 1. ACT_RE_*:这个前缀的表包含了所有的静态的流程定义信息,比如流程的ID、名称、版本号、流程图等。 - ACT_RE_DEPLOYMENT:部署信息表,记录流程部署的时间、名称、分类等信息。 - ACT_RE_PROCDEF:流程定义表,记录流程定义的ID、名称、版本号、部署ID等信息。 2. ACT_RU_*:这个前缀的表包含了运行时的流程实例数据,比如当前的任务、执行对象等。 - ACT_RU_EXECUTION:流程执行表,记录流程实例的ID、当前环节、业务ID等信息。 - ACT_RU_TASK:任务表,记录任务的ID、名称、执行人等信息。 3. ACT_HI_*:这个前缀的表包含了历史的流程实例数据,比如流程的启动时间、结束时间、审批记录等。 - ACT_HI_PROCINST:流程实例历史表,记录流程实例的启动时间、结束时间、业务ID等信息。 - ACT_HI_TASKINST:任务历史表,记录任务的开始时间、结束时间、执行人等信息。 4. ACT_ID_*:这个前缀的表包含了身份和权限管理相关的数据,比如用户、组、角色等。 - ACT_ID_USER:用户表,记录用户的ID、姓名、邮箱等信息。 - ACT_ID_GROUP:组表,记录组的ID、名称、类型等信息。 5. ACT_GE_*:这个前缀的表包含了Activiti引擎的通用数据,比如变量、字节流等。 - ACT_GE_BYTEARRAY:字节流表,记录各种资源文件的内容,如图片、部署的流程文件等。 - ACT_GE_PROPERTY:属性表,记录键值对形式的数据,如数据库版本号、Activiti版本号等。 下面是每个表的详细注释: 1. ACT_RE_DEPLOYMENT - ID:部署ID - NAME:部署名称 - CATEGORY:部署分类 - DEPLOY_TIME:部署时间 - TENANT_ID:租户ID 2. ACT_RE_PROCDEF - ID:流程定义ID - NAME:流程定义名称 - KEY:流程定义KEY - VERSION:流程定义版本号 - DEPLOYMENT_ID:部署ID - RESOURCE_NAME:流程定义资源文件名称 - DIAGRAM_RESOURCE_NAME:流程定义图片资源文件名称 - DESCRIPTION:流程定义描述 3. ACT_RU_EXECUTION - ID:流程执行ID - REV:数据版本号 - BUSINESS_KEY:业务ID - PROC_DEF_ID:流程定义ID - ACT_ID:当前环节ID - IS_ACTIVE:是否处于活动状态 - IS_CONCURRENT:是否并发执行 - IS_SCOPE:是否为子流程 - PARENT_ID:父流程执行ID - SUPER_EXEC:超级流程执行ID - ROOT_PROC_INST_ID:根流程实例ID - SUSPENSION_STATE:挂起状态 4. ACT_RU_TASK - ID:任务ID - REV:数据版本号 - NAME:任务名称 - PARENT_TASK_ID:父任务ID - DESCRIPTION:任务描述 - PRIORITY:任务优先级 - CREATE_TIME:任务创建时间 - CLAIM_TIME:任务签收时间 - END_TIME:任务结束时间 - DUE_DATE:任务到期时间 - FORM_KEY:表单KEY - ASSIGNEE:任务处理人ID - DELEGATION:委派状态 - EXECUTION_ID:所属流程执行ID 5. ACT_HI_PROCINST - ID:流程实例ID - PROC_DEF_ID:流程定义ID - BUSINESS_KEY:业务ID - START_TIME:流程启动时间 - END_TIME:流程结束时间 - DURATION:流程持续时间 - START_USER_ID:流程启动人ID - END_ACT_ID:流程结束环节ID - DELETE_REASON:删除原因 - TENANT_ID:租户ID 6. ACT_HI_TASKINST - ID:任务历史ID - PROC_DEF_ID:流程定义ID - PROC_INST_ID:流程实例ID - NAME:任务名称 - PARENT_TASK_ID:父任务ID - DESCRIPTION:任务描述 - OWNER:任务拥有者ID - CLAIM_TIME:任务签收时间 - END_TIME:任务结束时间 - DURATION:任务持续时间 - DELETE_REASON:删除原因 - TENANT_ID:租户ID 7. ACT_ID_USER - ID:用户ID - FIRST:用户姓 - LAST:用户名 - EMAIL:邮箱 - PASSWORD:密码 - REV:数据版本号 - TENANT_ID:租户ID 8. ACT_ID_GROUP - ID:组ID - NAME:组名 - TYPE:组类型 - REV:数据版本号 - TENANT_ID:租户ID 9. ACT_GE_BYTEARRAY - ID:字节流ID - REV:数据版本号 - NAME:资源文件名称 - DEPLOYMENT_ID:部署ID - BYTES:资源文件内容 - GENERATED:是否自动生成 - TENANT_ID:租户ID 10. ACT_GE_PROPERTY - NAME:属性名称 - VALUE:属性值 以上是Activiti 6的28张表分类和字段详细注释。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高空二踢脚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值