Springboot +Flowable,任务认领和回退(三)

79 篇文章 1 订阅
38 篇文章 9 订阅

一.简介

有的时候,一个任务节点会存在多个候选人,例如:张三提交一个任务,这个任务即可以由李四处理,又可以由王五处理,那么针对这种多个任务候选人的情况,该如何处理?

二.绘制流程图

首先我们还是使用之前旧的流程图,但是在为 UserTask 设置分配用户的时候,我们设置多个用户,流程图截图如下:
在这里插入图片描述

分配图截图如下:
在这里插入图片描述

设置完成后,载这个流程文件,该流程对应的XML文件,内容如下:

<process id="demo01" name="demo01" isExecutable="true">
  <documentation>demo01</documentation>
  <startEvent id="startEvent1" flowable:initiator="INITATOR" flowable:formFieldValidation="true"></startEvent>
  <userTask id="sid-5F901234-AFF1-480E-9D66-2D196B910BA3" flowable:candidateUsers="javaboy,zhangsan,lisi" flowable:formFieldValidation="true"></userTask>
  <sequenceFlow id="sid-71FB3A81-F753-419D-9A0A-2FC6E5361CED" sourceRef="startEvent1" targetRef="sid-5F901234-AFF1-480E-9D66-2D196B910BA3"></sequenceFlow>
  <endEvent id="sid-D0B9E5BF-8C1A-4F8F-B2C2-F423F5DC556D"></endEvent>
  <sequenceFlow id="sid-DEBE03CD-F247-4EF3-BB67-ABBA94739B0A" sourceRef="sid-5F901234-AFF1-480E-9D66-2D196B910BA3" targetRef="sid-D0B9E5BF-8C1A-4F8F-B2C2-F423F5DC556D"></sequenceFlow>
</process>

可以看到,UserTask 中的 flowable:candidateUsers=“javaboy,zhangsan,lisi” 就表示这个 UserTask 由 javaboy、zhangsan 和 lisi 三个用户处理,用户名之间用 , 隔开。

三.任务回退

当一个任务认领(Claim)之后,但是又不想处理,此时我们可以将任务退回。代码如下:

@Test
void test16() {
    List<Task> list = taskService.createTaskQuery().taskAssignee("javaboy").list();
    for (Task task : list) {
        taskService.setAssignee(task.getId(), null);
    }
}

就是重新为任务设置处理人,且处理人为 null,这就是将任务回退了,接下来其他人可以重新认领该任务了。

四.修改任务候选人

1.增加

任务候选人也不是一成不变的,也可以动态修改,当一个流程启动之后,流程已经走到某一个 Task 了,此时我们想要修改该 Task 的候选人,代码如下:

@Test
void test17() {
    List<Task> list = taskService.createTaskQuery().taskCandidateUser("javaboy").list();
    for (Task task : list) {
        taskService.addCandidateUser(task.getId(),"wangwu");
    }
}

添加完成后,查看 ACT_RU_IDENTITYLINK 表,我们发现王五已经添加进来了

2.删除

如果想要删除一个候选人,代码如下:

@Test
void test18() {
    List<Task> list = taskService.createTaskQuery().taskCandidateUser("javaboy").list();
    for (Task task : list) {
        taskService.deleteCandidateUser(task.getId(), "wangwu");
    }
}

删除成功之后,ACT_RU_IDENTITYLINK 表中对应的数据也就被清除掉了

五.查询历史数据

如果一个流程执行结束了,我们还想查询这个流程曾经涉及到的参与者,代码如下:

@Test
void test14() {
    List<HistoricProcessInstance> list = historyService.createHistoricProcessInstanceQuery().list();
    for (HistoricProcessInstance historicProcessInstance : list) {
        List<HistoricIdentityLink> links = historyService.getHistoricIdentityLinksForProcessInstance(historicProcessInstance.getId());
        for (HistoricIdentityLink link : links) {
            logger.info("userId:{},taskId:{},type:{},processInstanceId:{}",link.getUserId(),link.getTaskId(),link.getType(),link.getProcessInstanceId());
        }
    }
}

其实就是去 ACT_HI_IDENTITYLINK 表中查询,对应的 SQL 如下:
在这里插入图片描述
这是查询一个流程的参与人,当然我们也可以查询一个 Task 的候选人与处理人,代码如下:

@Test
void test15() {
    List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery().list();
    for (HistoricTaskInstance historicTaskInstance : list) {
        List<HistoricIdentityLink> links = historyService.getHistoricIdentityLinksForTask(historicTaskInstance.getId());
        for (HistoricIdentityLink link : links) {
            logger.info("userId:{},taskId:{},type:{},processInstanceId:{}", link.getUserId(), link.getTaskId(), link.getType(), link.getProcessInstanceId());
        }
    }
}

查询对应的 SQL 如下:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Spring Boot是一个基于Spring框架的快速开发框架,可以帮助开发者快速搭建基于Spring的应用程序。Flowable是一个流程引擎,可以帮助开发者快速实现业务流程的自动化管理。Spring BootFlowable的结合可以让开发者更加方便地实现业务流程的自动化管理,提高开发效率和业务效率。 ### 回答2: SpringBoot Flowable是一款基于SpringBootFlowable和RESTful风格的Web应用程序开发框架。SpringBoot框架是一个独立的、基于Spring框架的应用程序开发框架,它简化了Spring应用程序的配置和部署,并提供快速的开发、测试和部署功能。Flowable框架是基于BPMN2.0标准的一个开源的流程引擎框架,它提供了丰富的流程定义、任务管理、历史记录、事件跟踪等功能,便于企业进行复杂业务流程的管理和优化。 SpringBoot Flowable框架的主要特点包括: 1.高效简便:SpringBoot Flowable采用SpringBoot框架简化了Spring应用程序的配置和部署,同时结合Flowable框架,使流程定义和任务管理更加简便高效。 2.易于扩展:SpringBoot Flowable框架采用RESTful风格的接口设计,与其它系统集成更加简单方便,同时也支持二次开发和自定义扩展。 3.丰富的功能:SpringBoot Flowable框架集成了Flowable框架所提供的全部功能,包括流程定义、任务管理、历史记录、事件跟踪等,支持企业复杂业务流程的管理和优化。 4.支持多平台:SpringBoot Flowable框架可以部署在不同系统平台上,如Windows、Linux等,实现跨平台共享和应用。 在使用SpringBoot Flowable框架的过程中,需要掌握SpringBoot框架和Flowable框架的相关知识,同时注意提升系统的安全性和稳定性。可以参考SpringBootFlowable的官方文档进行学习和参考,也可以借助其它资料和开发者社区进行交流和分享。 ### 回答3: Spring Boot是一个开源的Java开发框架,可以快速地开发基于Java的Web应用程序。它提供了许多内置的功能和自动配置,使开发者能够轻松地构建可扩展的、高度可用的应用程序。而Flowable是一个开源的工作流引擎,它基于BPMN(Business Process Model and Notation)标准,可以帮助企业完成复杂的业务流程,实现业务可视化、自动化流转和智能化控制。 Spring BootFlowable的结合使得开发者能够轻松地使用Flowable来构建业务流程。使用Spring BootFlowable编写代码可以快速地实现流程引擎的集成和管理,同时也方便了开发人员使用Spring Boot框架进行Web开发。 Spring Boot可以使用简便的方式来配置Flowable,使用它提供的自动配置和starter等模块来进行流程引擎的集成和管理。同时,Spring Boot还提供了丰富的开发工具和插件,使得开发者能够轻松地进行代码调试和测试。 在使用Spring BootFlowable进行业务流程开发时,开发者可以使用Flowable提供的任务列表、流程修改等功能,可以轻松地修改业务流程,使得业务流程变得更加智能化和高效化。同时,Spring BootFlowable的结合也使得业务流程的开发变得更加简单和可靠。 总之,Spring BootFlowable的结合可以使开发者轻松地构建高可用、高效率、智能化的业务流程,并且简化了开发和管理流程引擎的过程,帮助企业实现业务的自动化和智能化管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘德华一不小心就打代码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值