【flowable】十三、flowable会签
flowable会签
1、会签
会签的意思是,在流程任务管理中,任务通常是由一个人或者多个人同时去处理的,这种任务叫做会签任务。类似于并行网关。
2、会签类型
按数量通过:达到一定数量的处理后,会签通过
按比例通过:达到一定比例的处理后,会签通过
一票否决:只有一个人不同意时,会签通过
一票通过:只有一个同意时,会签通过
Flowable实现会签是基于多实例任务的,将节点设置成多实例,通过在userTask节点的属性配置。
3、多实例类型
可以选择并行会签(parallel)
、顺序会签(sequential)
,其中并行会签的意思是 多个人同时执行任务。顺序会签是按顺序执行任务。
4、集合多实例
会签人员的集合变量,可以随意命名。
5、元素变量多实例
循环集合多实例集合的变量名,可以随意命名。注意没有${}
// 类似于这样的
for (String assignee : userList) {}
6、分配用户
分配用户的变量名称和元素变量的名称需要保持一致
7、完成条件多实例
默认流程变量:
nrOfInstances:会签中总共的实例数量
nrOfCompletedInstances:已经完成的实例数量
nrOfActiviteInstances:当前活动的实例数量,即还未完成的实例数量
所以该项可设置,例如:
${nrOfInstances == nrOfCompletedInstances}:表示所有人都需要完成任务会签才结束
${nrOfCompletedInstances == 1}:表示一个人完成任务,会签结束
其他条件可以一次类推实现
8、demo
这里设置的完成条件:${nrOfCompletedInstances == 2}
,即2个人完成任务后,会签结束。
<?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="sid-5D778986-A0DE-4D4E-9B67-BEF2C4366998" flowable:formFieldValidation="true"></startEvent><userTask id="sid-CA82212E-61D4-488D-BC8B-05D92CD1EE67" flowable:assignee="${assignee}" flowable:formFieldValidation="true"><extensionElements><modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete></extensionElements><multiInstanceLoopCharacteristics isSequential="false" flowable:collection="${userList}" flowable:elementVariable="assignee"><completionCondition>${nrOfCompletedInstances == 2}</completionCondition></multiInstanceLoopCharacteristics></userTask><sequenceFlow id="sid-FFB112DA-5E2E-4786-8648-92CD5D07A96F" sourceRef="sid-5D778986-A0DE-4D4E-9B67-BEF2C4366998" targetRef="sid-CA82212E-61D4-488D-BC8B-05D92CD1EE67"></sequenceFlow><endEvent id="sid-A14D3EA7-7E7C-4B6F-9F74-898FB7A7A2AD"></endEvent><sequenceFlow id="sid-E01B5521-5658-4AD4-8E6A-1790F1DBABCB" sourceRef="sid-CA82212E-61D4-488D-BC8B-05D92CD1EE67" targetRef="sid-A14D3EA7-7E7C-4B6F-9F74-898FB7A7A2AD"></sequenceFlow></process><bpmndi:BPMNDiagram id="BPMNDiagram_会签"><bpmndi:BPMNPlane bpmnElement="会签" id="BPMNPlane_会签"><bpmndi:BPMNShape bpmnElement="sid-5D778986-A0DE-4D4E-9B67-BEF2C4366998" id="BPMNShape_sid-5D778986-A0DE-4D4E-9B67-BEF2C4366998"><omgdc:Bounds height="30.0" width="30.0" x="178.00000737607468" y="185.00000149011612"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="sid-CA82212E-61D4-488D-BC8B-05D92CD1EE67" id="BPMNShape_sid-CA82212E-61D4-488D-BC8B-05D92CD1EE67"><omgdc:Bounds height="80.0" width="100.0" x="315.0" y="160.00000149011612"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="sid-A14D3EA7-7E7C-4B6F-9F74-898FB7A7A2AD" id="BPMNShape_sid-A14D3EA7-7E7C-4B6F-9F74-898FB7A7A2AD"><omgdc:Bounds height="28.0" width="28.0" x="555.0" y="186.00000149011612"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNEdge bpmnElement="sid-E01B5521-5658-4AD4-8E6A-1790F1DBABCB" id="BPMNEdge_sid-E01B5521-5658-4AD4-8E6A-1790F1DBABCB"><omgdi:waypoint x="414.94999999992945" y="200.00000149011612"></omgdi:waypoint><omgdi:waypoint x="555.0" y="200.00000149011612"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="sid-FFB112DA-5E2E-4786-8648-92CD5D07A96F" id="BPMNEdge_sid-FFB112DA-5E2E-4786-8648-92CD5D07A96F"><omgdi:waypoint x="207.95000675825347" y="200.00000149011612"></omgdi:waypoint><omgdi:waypoint x="314.99999999983766" y="200.00000149011612"></omgdi:waypoint></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram>
</definitions>
部署并启动流程:
/*** 部署流程*/@Testpublic void deployment() {//获取流程引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//获取RepositoryService部署流程RepositoryService repositoryService = processEngine.getRepositoryService();Deployment deploy = repositoryService.createDeployment().name("会签流程").addClasspathResource("会签.bpmn20.xml").deploy();System.out.println(deploy.getId());}/*** 启动流程定义*/@Testpublic void startProcess() {//获取流程引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//获取RuntimeService启动流程RuntimeService runtimeService = processEngine.getRuntimeService();//启动流程定义时需要配置集合多实例,会签人员的集合变量userListMap<String, Object> variables = new HashMap<>();variables.put("userList", Arrays.asList("张三","李四 ", "王五"));//参数是act_re_procdef表的主键runtimeService.startProcessInstanceById("会签:1:102504", variables);}
成功启动后,act_ru_task
表中,会签的流程会有三条任务,因为userList变量集合只设置了三个人
完成流程:
先完成一条任务
/*** 完成任务*/@Testpublic void completeTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();//为了方便,直接去库里找到该数据taskService.complete("105019");}
完成成功后流程并不会往下一个节点走,任务表里还有两个任务,因为设置的完成条件:${nrOfCompletedInstances == 2}
,需要2个人完成任务后,会签才结束。
再完成一条任务:
/*** 完成任务*/@Testpublic void completeTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();//为了方便,直接去库里找到该数据taskService.complete("105024");}
完成后,再查看act_ru_task
表,已经没有当前任务数据了,因为已经满足会签任务结束的条件,按照流程的设计,流程执行到下一个节点,也就是结束节点。
然后,更多的实例情况,可以自行设置会签任务的完成条件来测试
【flowable】十三、flowable会签相关推荐
- 学习记录556@flowable多人会签
前言 实际业务中的会签,代表一个任务节点由多个人进行审批,可能会衍生出多种情况: 只要一个人审批后,就到下一个节点 全部审批后,才能到下一个节点 审批人数占比多少,就到下一个节点,本案例就选择这个最麻 ...
- 小白学流程引擎-FLowable(一) —FLowable是什么
小白学流程引擎-FLowable(一) | FLowable是什么 一.什么是流程引擎? 通俗的说,流程引擎就是多种业务对象在一起合作完成某件事情的步骤,把步骤变成计算机能理解的形式就是流程引擎. 流 ...
- 流程引擎(flowable)之会签相关
相关定义 会签: 在流程业务管理中,任务是通常都是由一个人去处理的,而多个人同时处理一个任务,这种任务我们称之为会签任务. 串行会签:串行会签也叫顺序会签,指按照提交流程处理人的次序user1.use ...
- Flowable多实例会签功能来袭
文章的最下面有学习视频与源代码 拒绝重复造轮子了,有这个流程平台就够了 会签.或签 会签 ABC三人都审批通过才能进入下一节点 (三人都可以看到任务) 或签 其中一人通过 即可进入下一节点 (三人都可 ...
- flowable php,flowable demo
[实例简介] 开发工具:idea,环境:jdk.maven.rocketmq,技术:spring boot + flowable 实现简单的工作流程,希望能有所帮助. [实例截图] [核心代码] fl ...
- 【Flowable】Flowable流程设计器
Flowable流程设计器有两种实现方式 Eclipse Designer Flowable UI应用 1.Eclipse Designer Flowable提供了名为Flowable Eclipse ...
- 【Flowable】Flowable候选人和候选人组
在流程定义中在任务结点的 assignee 固定设置任务负责人,在流程定义时将参与者固定设置在.bpmn 文件中,如果临时任务负责人变更则需要修改流程定义,系统可扩展性差.针对这种情况可以给任务设置多 ...
- flowable 实现多实例-会签-动态配置人员 参考demo
会签 即多人执行当前任务 设置判断数 通过 例如:设置了是半数通过即可通过当前节点 如果当前是4人那就是2人即通过 如果是6人那就是三人即通过 如果是5人 即三人通过 看各位的判断值是如何书写 这个值 ...
- Flowable工作流之多实例任务会签
目录 1. 会签 2. 多实例任务会签 2.1. 绘制流程图 2.1.1. 多实例类型 2.1.2. 集合(多实例) 2.1.3. 元素变量(多实例) 2.1.4. 分配用户 2.1.5. 完成条件( ...
最新文章
- linux 命令 grep -A -B -C 显示行选项
- java报错只有一个数字4,Java 报错 illegal Key Size
- ycsb两个阶段说明
- pc控制iphone的软件_如何在iPhone上下载升级最新的iOS 13公测版
- DM368学习--捕获视频图像分辨率修改
- vlan跨交换机 udp广播_划分VLAN和接二级路由都能阻止广播风暴?两者有什么区别?...
- Windows 11 预览版 Build 22000.168 发布
- 4.CND技术详解---集群服务与负载均衡技术
- 苹果cms模板_苹果cmsv10简约模板有哪些?
- java经典sql笔试题
- 坚果云+Typora+vscode 参考notion 进行个人知识管理
- 苹果手机4位密码突然变6位密码了怎么回事怎么解锁?
- java关注微信公众号登录
- PySide6的安装
- return false和return true
- python IDEL 快捷键
- Hexo添加字数统计和阅读统计
- 记录一下,普通二本,程序员真实薪资曝光
- 求两个矩阵中向量的欧氏距离(python实现)
- Vmware11+Win8.1+Mac配置网络