【flowable】十一、flowable加签和转签

article/2025/10/7 12:54:19

flowable加签和转签


加签

同时让多人处理任务,但是不同于网关操作。

1、向前加签
任务在A这里,A这个时候需要BCD核对一下,等BCD核对之后又回到A这里
2、向后加签
任务在A这里,A这个时候需要BCD处理这个事情,处理完毕之后就不用管了,继续后面的审批环节

创建一个新的流程:就一个简单的流程,员工请假申请,总经理审批
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef"><process id="加签流程" name="加签流程" isExecutable="true"><startEvent id="startEvent1" flowable:formFieldValidation="true"></startEvent><userTask id="sid-A79D6824-4FE7-439F-AA6E-07759A2D9936" name="请假申请单" flowable:assignee="员工" flowable:formFieldValidation="true"><extensionElements><modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete></extensionElements></userTask><sequenceFlow id="sid-1628515E-BD6B-4287-A887-FCA6E346CE28" sourceRef="startEvent1" targetRef="sid-A79D6824-4FE7-439F-AA6E-07759A2D9936"></sequenceFlow><userTask id="sid-837CF8BA-F593-4696-A0B2-B114F7367097" name="总经理审批" flowable:assignee="总经理" flowable:formFieldValidation="true"><extensionElements><modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete></extensionElements></userTask><sequenceFlow id="sid-DCBE07F5-B1C2-4672-8EBF-63604B8A8442" sourceRef="sid-A79D6824-4FE7-439F-AA6E-07759A2D9936" targetRef="sid-837CF8BA-F593-4696-A0B2-B114F7367097"></sequenceFlow><endEvent id="sid-537241A8-1CCA-4DAC-A8DA-20A29E5F381E"></endEvent><sequenceFlow id="sid-C6547CB7-FD01-417E-8843-95C7B0861CDB" sourceRef="sid-837CF8BA-F593-4696-A0B2-B114F7367097" targetRef="sid-537241A8-1CCA-4DAC-A8DA-20A29E5F381E"></sequenceFlow></process><bpmndi:BPMNDiagram id="BPMNDiagram_加签流程"><bpmndi:BPMNPlane bpmnElement="加签流程" id="BPMNPlane_加签流程"><bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1"><omgdc:Bounds height="30.0" width="30.0" x="100.0" y="163.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="sid-A79D6824-4FE7-439F-AA6E-07759A2D9936" id="BPMNShape_sid-A79D6824-4FE7-439F-AA6E-07759A2D9936"><omgdc:Bounds height="80.0" width="99.99999999999997" x="195.00000000000003" y="138.00000000000003"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="sid-837CF8BA-F593-4696-A0B2-B114F7367097" id="BPMNShape_sid-837CF8BA-F593-4696-A0B2-B114F7367097"><omgdc:Bounds height="80.0" width="100.0" x="390.00000000000006" y="138.00000000000003"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="sid-537241A8-1CCA-4DAC-A8DA-20A29E5F381E" id="BPMNShape_sid-537241A8-1CCA-4DAC-A8DA-20A29E5F381E"><omgdc:Bounds height="28.0" width="28.0" x="600.0000000000001" y="164.00000000000003"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNEdge bpmnElement="sid-DCBE07F5-B1C2-4672-8EBF-63604B8A8442" id="BPMNEdge_sid-DCBE07F5-B1C2-4672-8EBF-63604B8A8442"><omgdi:waypoint x="294.95000000000005" y="178.00000000000003"></omgdi:waypoint><omgdi:waypoint x="390.00000000000006" y="178.00000000000003"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="sid-C6547CB7-FD01-417E-8843-95C7B0861CDB" id="BPMNEdge_sid-C6547CB7-FD01-417E-8843-95C7B0861CDB"><omgdi:waypoint x="489.95000000000005" y="178.00000000000003"></omgdi:waypoint><omgdi:waypoint x="600.0000000000001" y="178.00000000000003"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="sid-1628515E-BD6B-4287-A887-FCA6E346CE28" id="BPMNEdge_sid-1628515E-BD6B-4287-A887-FCA6E346CE28"><omgdi:waypoint x="129.94999891869114" y="178.00000000000003"></omgdi:waypoint><omgdi:waypoint x="194.99999999994475" y="178.00000000000003"></omgdi:waypoint></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram>
</definitions>

部署流程并启动:

/*** 部署流程*/@Testpublic void deployment() {//获取流程引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//获取RepositoryService部署流程RepositoryService repositoryService = processEngine.getRepositoryService();repositoryService.createDeployment().name("加签流程").addClasspathResource("加签流程.bpmn20.xml").deploy();}/*** 启动流程定义*/@Testpublic void startProcess() {//获取流程引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//获取RuntimeService启动流程RuntimeService runtimeService = processEngine.getRuntimeService();//参数是act_re_procdef表的主键runtimeService.startProcessInstanceById("加签流程:1:85004");}

员工完成任务:

/*** 员工完成任务*/@Testpublic void completeTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();//为了方便,直接去库里找到该数据taskService.complete("87505");}

正常流程,员工完成任务后到总经理审批

在这里插入图片描述

但,实际中会出现特殊情况,还需要董事长审批,但在流程设计中并没有董事长这个流程节点。所以需要用到加签的功能。

加签功能

/*** 加签任务给董事长* 假如流程中出现特殊情况,需要特定的人员进行审批后才可以正常的把流程走下去,而这个特定的人员一开始* 并没有在流程设计中体现出来,所以这时候就需要加签这个功能,在某一节点处添加一个新的人员来处理这个流程*/@Testpublic void countersignTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();//通过delegateTask实现加签taskService.delegateTask("90002", "董事长");}

任务的负责人变更为董事长了

在这里插入图片描述

完成加签任务

/*** 完成加签任务* 加签任务不能用completeTask来完成,这个加签的任务并不属于正常流程中的一个节点任务* 加签任务完后,任务还会回到加签前的人员手里*/@Testpublic void resolveTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();//需要通过resolveTask完成加签任务,可以看到这里的taskId他没有改变,也就是加签任务他并没有更改任务的基本信息//只是将assignee更新了taskService.resolveTask("90002");}

在这里插入图片描述

//后面正常完成流程任务即可,不写了。。

转签

/*** 转签* 就是把任务转办给他人*/
@Test
public void transferTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();//直接setAssignee即可taskService.setAssignee("90002", "总监");
}

http://chatgpt.dhexx.cn/article/woSjeKR2.shtml

相关文章

加解密,加签、验签也就这肥事

前言&#xff1a; ps:上图有一处错误&#xff0c;右下角有一条线是N&#xff0c;指向的是不读取内容 上图省略了CA认证过程&#xff0c;直接提取到了密钥对&#xff0c;Base64的过程已省略(关于Base64的底层原理&#xff0c;可参考标题3)。全文1.6w字&#xff0c;如果想全部…

前后端分离技术之加签,验签,防篡改

上一篇讲解了加密解密&#xff0c;这次来个加签验签&#xff0c;实际项目里&#xff0c;我们采用的是react 和nodejs 来进行加签验签&#xff0c;用的jsrsasign库&#xff0c;下面贴点核心代码 react加签 nodejs验签 实际应用在nodejs层可以将时间戳和sign签名验证通过剔除掉&…

深入探究Camunda加签问题

开源项目介绍&#xff1a;点击直达 前言 这里我们先抛出两个大问题&#xff0c;整篇文章针对这两个大问题再详细解析。 首先我们在设计流程定义时&#xff0c;流程节点可能是或签也可能是会签 会签&#xff1a;指同一个审批节点设置多个人&#xff0c;如ABC三人&#xff0c…

activity多实例任务加签

前言 加签是减签的相反的操作,加签与减签的思路刚好相反,减签是删数据;加签则是添加数据。在一些特殊场景下,需要在某个多实例节点上面动态新增一个审批人员或任务时,就需使用到activity多实例任务加签的功能 加签思路1 根据一级流程实例查找二级流程执行实例判断二级执…

Activiti7工作流引擎:进阶篇(十二) 加签和转签

知识传送门 》》》》》》》》》》》》》》》》》》》 加签就是委派任务delegateTask&#xff0c;然后去解决任务resolveTask&#xff08;并不是去真正的去完成任务&#xff09;。转签完成后才能完成任务complete。 一&#xff1a;委派任务 A由于某些原因不能处理该任务可以把任…

必备基础:加签验签

必备基础&#xff1a;加签验签 1 密码学相关概念1.1 明文、密文、密钥、加密、解密1.2 对称加密、非对称加密1.3 什么是公钥私钥&#xff1f; 2 加签验签概念3 为什么需要加签验签4 常见加密相关算法简介4.1 消息摘要算法4.1.1 MD家族算法4.1.2 ShA家族算法4.1.3 MAC算法家族 4…

Flowable工作流之加签(委派)、转签(转办)

目录 1. 加签1.1. 向前加签1.2. 向后加签 2. 或签3. 委派和转办的区别2.1. 委派2.2. 转办 4. 向前加签4.1. 流程图4.2. 部署并启动4.3. 完成任务4.4. 向前加签实现4.4.1. 添加加签&#xff08;委派&#xff09;功能任务4.4.1. 加签&#xff08;委派&#xff09;任务的完成 5. 转…

加密、解密、加签、验签专题

首先明确几个名词&#xff1a; 加密&#xff1a;发送方利用接收方的公钥对要发送的明文进行加密。 解密&#xff1a;接受方利用自己的私钥进行解密。 公钥和私钥配对的&#xff0c;用公钥加密的文件&#xff0c;只有对应的私钥才能解密。当然也可以反过来&#xff0c;用私钥…

@ControllerAdvice 之 @InitBinder和@ModelAttribute

InitBinder 准备 InitBinder 在整个 HandlerAdapter 调用过程中所处的位置 收获&#x1f4a1; RequestMappingHandlerAdapter 初始化时会解析 ControllerAdvice 中的 InitBinder 方法&#xff08;可以定义个性化数据转化器&#xff09;RequestMappingHandlerAdapter 会以类…

SpringBoot @InitBinder注解实现Bean国际化校验

参考资料 参考&#xff1a; 妥当性チェックのエラーメッセージ出力方法 (需翻墙)springMVC之InitBinder的用法1springMVC之InitBinder的用法2springMVC之InitBinder 和 ValidatorSpring MVCにおけるフォームバリデーションの適用事例【後編】 目录 一. 前期准备1.1 自定义校验…

SpringMVC之@InitBinder注解(日期转换)

InitBinder注解的作用&#xff1a; springmvc并不是能对所有类型的参数进行绑定的&#xff0c;如果对日期Date类型参数进行绑定&#xff0c;就会报错IllegalStateException错误。所以需要注册一些类型绑定器用于对参数进行绑定。InitBinder注解就有这个作用。 程序代码示例&am…

initbinder对ajax不起作用,Spring MVC InitBinder验证方法

使用InitBinder做验证的情况一般会在此Controller中提交的数据需要有一些是业务性质的&#xff0c;也即比较复杂的验证情况下才会使用。大部份简单的表单验证&#xff0c;使用annotation验证即可以解决。 这里需要注意的一点&#xff1a;InitBinder和Annotation两种验证只能二选…

SpringMvc @InitBinder

这篇博客记录InitBinder怎么起作用、起什么作用&#xff1f; 首先,该注解被解析的时机&#xff0c;是该匹配Controller的请求执行映射的方法之前; 同时 InitBinder标注的方法执行是多次的&#xff0c;一次请求来就执行一次。 当某个Controller上的第一次请求由SpringMvc前端控制…

java培训之InitBinder注解

InitBinder注解【了解】 InitBinder由 InitBinder 标识的方法&#xff0c;可以对 WebDataBinder 对象进行初始化。WebDataBinder 是 DataBinder 的子类&#xff0c;用于完成由表单字段到 JavaBean 属性的绑定InitBinder方法不能有返回值&#xff0c;它必须声明为void。InitBin…

SpringBoot @InitBinder注解绑定请求参数

参考资料 springMVC之InitBinder 和 ValidatorspringMVC之InitBinder的用法1springMVC之InitBinder的用法2 目录 一. 作用二. 前期准备三. Get请求 URL传值处理3.1 前台-test16.html3.2 Controller层3.3 效果 四. Post请求 表单传值 自定义日期属性绑定器4.1 前台-test16.h…

详细分析@InitBinder注解的使用和原理

前言 由InitBinder注解修饰的方法用于初始化WebDataBinder对象&#xff0c;能够实现&#xff1a;从request获取到handler方法中由RequestParam注解或PathVariable注解修饰的参数后&#xff0c;假如获取到的参数类型与handler方法上的参数类型不匹配&#xff0c;此时可以使用初…

SpringMVC之@InitBinder注解详解

说明与作用 springmvc并不是能对所有类型的参数进行绑定的&#xff0c;如果对日期Date类型参数进行绑定&#xff0c;就会报错IllegalStateException错误。所以需要注册一些类型绑定器用于对参数进行绑定。InitBinder注解就有这个作用。 Controller public class InitBinderCo…

SpringMVC中的@InitBinder注解【记录】

一、Spring请求参数绑定流程&#xff1a; 1、请求参数绑定流程&#xff1a; 我们在开发的时候&#xff0c;经常会从html&#xff0c;jsp中将请求参数通过request对象传递到后台&#xff0c;可是经常会遇到这么一种情况&#xff0c;那就是传过来的数据到后台后&#xff0c;还要…

springMVC之@InitBinder的用法

目录 一、InitBinder的作用二、数据绑定器三、全局数据绑定器3.1. 方式一&#xff1a;ControllerAdvice3.2. 方式二&#xff1a;RequestMappingHandlerAdapter 四、自定义数据校验器五、参数类型转换器 一、InitBinder的作用 InitBinder从字面意思可以看出这个的作用是给Binder…

JAVA-Switch语句

1、完整的语法结构 该语句为选择分支语句&#xff0c;其语法结构为&#xff1a; switch (值){case:值1 java语句;break;case:值2 java语句;break;case:值3 java语句;break;……default&#xff1a;java语句; } 注意在该语法结构中&#xff0c;“值N"可以表示int型的或者S…