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会签相关推荐

  1. 学习记录556@flowable多人会签

    前言 实际业务中的会签,代表一个任务节点由多个人进行审批,可能会衍生出多种情况: 只要一个人审批后,就到下一个节点 全部审批后,才能到下一个节点 审批人数占比多少,就到下一个节点,本案例就选择这个最麻 ...

  2. 小白学流程引擎-FLowable(一) —FLowable是什么

    小白学流程引擎-FLowable(一) | FLowable是什么 一.什么是流程引擎? 通俗的说,流程引擎就是多种业务对象在一起合作完成某件事情的步骤,把步骤变成计算机能理解的形式就是流程引擎. 流 ...

  3. 流程引擎(flowable)之会签相关

    相关定义 会签: 在流程业务管理中,任务是通常都是由一个人去处理的,而多个人同时处理一个任务,这种任务我们称之为会签任务. 串行会签:串行会签也叫顺序会签,指按照提交流程处理人的次序user1.use ...

  4. Flowable多实例会签功能来袭

    文章的最下面有学习视频与源代码 拒绝重复造轮子了,有这个流程平台就够了 会签.或签 会签 ABC三人都审批通过才能进入下一节点 (三人都可以看到任务) 或签 其中一人通过 即可进入下一节点 (三人都可 ...

  5. flowable php,flowable demo

    [实例简介] 开发工具:idea,环境:jdk.maven.rocketmq,技术:spring boot + flowable 实现简单的工作流程,希望能有所帮助. [实例截图] [核心代码] fl ...

  6. 【Flowable】Flowable流程设计器

    Flowable流程设计器有两种实现方式 Eclipse Designer Flowable UI应用 1.Eclipse Designer Flowable提供了名为Flowable Eclipse ...

  7. 【Flowable】Flowable候选人和候选人组

    在流程定义中在任务结点的 assignee 固定设置任务负责人,在流程定义时将参与者固定设置在.bpmn 文件中,如果临时任务负责人变更则需要修改流程定义,系统可扩展性差.针对这种情况可以给任务设置多 ...

  8. flowable 实现多实例-会签-动态配置人员 参考demo

    会签 即多人执行当前任务 设置判断数 通过 例如:设置了是半数通过即可通过当前节点 如果当前是4人那就是2人即通过 如果是6人那就是三人即通过 如果是5人 即三人通过 看各位的判断值是如何书写 这个值 ...

  9. Flowable工作流之多实例任务会签

    目录 1. 会签 2. 多实例任务会签 2.1. 绘制流程图 2.1.1. 多实例类型 2.1.2. 集合(多实例) 2.1.3. 元素变量(多实例) 2.1.4. 分配用户 2.1.5. 完成条件( ...

最新文章

  1. linux 命令 grep -A -B -C 显示行选项
  2. java报错只有一个数字4,Java 报错 illegal Key Size
  3. ycsb两个阶段说明
  4. pc控制iphone的软件_如何在iPhone上下载升级最新的iOS 13公测版
  5. DM368学习--捕获视频图像分辨率修改
  6. vlan跨交换机 udp广播_划分VLAN和接二级路由都能阻止广播风暴?两者有什么区别?...
  7. Windows 11 预览版 Build 22000.168 发布
  8. 4.CND技术详解---集群服务与负载均衡技术
  9. 苹果cms模板_苹果cmsv10简约模板有哪些?
  10. java经典sql笔试题
  11. 坚果云+Typora+vscode 参考notion 进行个人知识管理
  12. 苹果手机4位密码突然变6位密码了怎么回事怎么解锁?
  13. java关注微信公众号登录
  14. PySide6的安装
  15. return false和return true
  16. python IDEL 快捷键
  17. Hexo添加字数统计和阅读统计
  18. 记录一下,普通二本,程序员真实薪资曝光
  19. 求两个矩阵中向量的欧氏距离(python实现)
  20. Vmware11+Win8.1+Mac配置网络

热门文章

  1. 易点租升级租赁品类 推“企业级”空气净化器配置方案
  2. c语言程序设计飞机,C语言程序设计――飞机订票系统
  3. java表格控件设置表头_求教 jtable添加表头的语句位置
  4. backtrace 实现原理
  5. 常用的4种动态网页技术
  6. 百看不如一练, 247 个 Python 实战案例!
  7. 进击的 AI 生成,创造性的新世界!
  8. css中什么是伪类选择器?伪类选择器的简介
  9. matlab代码的开头部分
  10. 【企业邮件服务器搭建过程】