对于flowable的认知一直是浅显的停留在理论了解上,并未深入学习研究,也没有完整的样例作品。了解过一些原理,架构,表结构说明等等,但老实说,如果没有实战,这些理论性的东西在记忆中并不会保留太长久,很容易被遗忘掉。

一直以来想把流程引擎这块空缺补起来,无奈团队的项目中尚未有真正的流程应用,暂时不易投入人力和精力来做这部分的内容。

前段时间,架构师接手的项目中涉及到了流程引擎的应用开发,我推荐了flowable,也做了一些理论基础的讲解。也协助解决了一些比较基础的问题。

五一节前的那天下班前,负责后端的架构师来问我一个稍微深入点的应用场景问题,一时间也把我给问住了。她的这个应用场景可能并不常见:多实例子流程。网上有关的资料并不多,因为一时间这毫无头绪的我想打开浏览器找一些资料的时候,架构师拦住了我,说你别找了,我都已经找遍了,没有!哈哈,看来架构师可能也是费尽了心思,实在搞不定了才来找的我!

架构师绘制的流程图应用场景如下:

红色框中圈起的即是支持多实例的子流程配置,架构师遇到的问题是在前一节点,即主任审批这一节点审批通过后,通过divisionLeaderList流程变量启动对应数量(在主任审批这一节点办理时手动选择的分管部门领导标识列表)的子流程实例失败。

按照架构师的说法,后台报了个错,意思是说因为子节点中配置了一些变量,导致子流程实例无法创建,她猜测因为子流程实例创建时需要初始化那些变量,而那些变量又必须要在开始点动态指定的。于是就陷入了无解状态。

我想,即便是这种应用场景可能并不多,但flowable应该不至于连这些也不支持的吧。应该还是使用和配置的问题。

恰逢五一假期,唉,对于有重度强迫症的我来说这是成心不想让我过个好节啊。。。

但这块毕竟没有实战经验,一时也无从下手,所以决定假期先找一些成功的案例参考一下看有无类似应用场景。最终还是没有找到,但并非毫无收获,找资料的过程中了解了一些多实例任务、嵌入子流程,独立子流程等相关理论基础。这些都是我之前不曾了解过的。

五一节后,在一阵烦杂的工作之余,终于腾出一段相对集中的时间来处理这个横在心头的梗。

首先,拿到架构师绘制的bpmn xml文件,自己单独部署了一套UIDesigner方便查看变量配置及随时编辑调整,打算先复现问题再说:

然后,编写测试程序,部署流程,启动主实例,对照参数设置,造了一些测试参数一步一步往下走,终于,在主任审批这一节点进行complete操作启动子流程时,成功复现了问题,后台抛出了异常:org.flowable.common.engine.api.FlowableException: Unknown property used in expression: ${processorSectionHead == null}

检查了子流程中的${processorSectionHead == null}条件配置,发现有两个地方做了配置:

一是在网关流条件中进行了配置,用于区分流向。

二是在其中两个子节点中配置了自动批转条件Skip expression表达式中定义的,猜测应该是这里的问题。

有了头绪就好办了,先去掉“科室负责人审批”和“办理人员审批”两个节点的Skip expression条件定义,再分别添加这两个节点的固定分配用户变量(如分别为subOfficeLeader和subOfficeWorker),再调整流程图(在开始节点后新增加一节分管领导审批的节点以替换原有的网关)如下所示:

最后,进行测试,在主任审批节点设置了三个分管领导标识,成功启动了3个子流程实例。

逐个走完三个子流程的审批(满足多实例的完成条件${nrOfCompletedInstances/nrOfInstances==1})后,任务自动流转到了主流程中的“办文人员审批”节点。完整流程如下图所示:

最后,再补充一种实现方案,可以采用独立子流程来实现,主流程中采用多实例任务来定义,在启动多实例任务时启动对等数量的子流程实例即可。只不过操作上要比这种嵌入式子流程复杂一些。

初探Flowable流程引擎,偶遇多实例子流程相关推荐

  1. activiti并发多实例子流程任务处理

    一直在搞工作流(activiti),总结一下关于工作流(activiti)中同时并发处理多个子流程的操作方法. 先说下我要实现的业务: 1.办公室发通知(在系统申报页面上,勾选科室,被选中的科室执行第 ...

  2. 驰骋工作流程引擎案例-水质检测工作流程设计开发实现过程

    2019独角兽企业重金招聘Python工程师标准>>> Technorati Tags: 开源驰骋工作流引擎, .NET工作流,表单设计器,ccflow, jflow, 案例,水质监 ...

  3. flowable 查询完成的流程_flowable流程引擎初体验,完成一个请假流程

    flowable是一个用Java写的轻量级商业流程引擎,用它可以部署BPMN2.0(在工业界被广泛接受的XML标准)流程定义, 并且可以创建流程实例,驱动节点流转,存储相关的历史数据等等.可能更多人先 ...

  4. flowable 流程表单_flowable 流程引擎总结

    最近公司使用Flowable开发了自己的OA系统,因此对Flowable的相关内容进行如下总结 一.Flowable 是什么 目前最新版是Flowable 6.4.2(2019年07月26日) Flo ...

  5. flowable流程引擎

    Flowable流程引擎 一.流程引擎API和服务 引擎 API 是与 Flowable 交互的最常见方式.主要起点是 ProcessEngine,它可以通过多种方式创建,如配置部分所述.从 Proc ...

  6. 流程引擎之compileflow简介

    背景 compileflow 是一个非常轻量.高性能.可集成.可扩展的流程引擎.compileflow Process 引擎是淘宝工作流 TBBPM 引擎之一,是专注于纯内存执行,无状态的流程引擎,通 ...

  7. 基于camunda开源流程引擎如何实现会签及会签原理解析

    一.背景 市场上比较有名的开源流程引擎有osworkflow.jbpm.activiti.flowable.camunda.由于jbpm.activiti.flowable这几个流程引擎出现的比较早, ...

  8. BPM流程引擎常用术语和概念介绍

    本文重点介绍BPM业务流程管理中常常用到概念和术语,这些概念同样适用于JBPM.Activiti.Flowable.Camunda等主流的开源工作流引擎. 一.BPM模型符号协议 1.BPMN (业务 ...

  9. 国产+开源:可视化流程引擎助力企业建立流程管理体系

    编者按:搭建流程管理体系,离不开可视化的流程引擎!本文介绍流程管理的重要性以及市场对流程引擎的需求,并介绍国产开源的流程引擎. 为什么需要流程管理 在说为什么之前,首先我们需要弄懂流程是什么. 用最通 ...

  10. camunda 流程执行追踪_流程引擎为什么选 Camunda

    2019 年初我在重新设计我们组负责的流程系统时,选择了 Camunda 流程引擎,并基于该流程引擎实现了一套适配方案.以前就想做一次总结,但总拖着. 最近公司中台在做流程引擎选型,相关同事找我了解 ...

最新文章

  1. 升降压斩波电路matlab,升降压斩波电路matlab仿真.doc
  2. Nginx+tomcat配置集群
  3. AI in RTC 创新挑战赛,决赛打响
  4. jedis使用_Redis --Java客户端 Jedis
  5. php判断子字符串位置,PHP怎样查询子字符串位置
  6. 六年级计算机课学什么时候,六年级信息技术《进一步了解计算机》教学设计
  7. 遥感图像数据类型的区别
  8. 三个精致的钢琴音源 Native Instruments Definitive Piano Collection
  9. yuki翻译器钩子_YUKI GALGAME翻译器
  10. Matlab学习笔记:网格线的粗细调整
  11. 图像工作回顾之三:极线匹配
  12. ApacheCN 计算机视觉译文集 20210212 更新
  13. 【云原生之Docker实战】使用docker部署Memos碎片化知识管理工具
  14. sunxi:[0]全志SoC启动过程
  15. 【STM32】RTC实时时钟概述、寄存器、库函数(RTC一般步骤)
  16. Algorithm - Bubble Sort(Java)
  17. 迅为-iMX6ULL开发板上配置AP热点
  18. TensorFlow-GPU框架详细安装
  19. python应用-scipy,numpy,sympy计算微积分
  20. BISTU数据库期末复习指导

热门文章

  1. OpenGL ES 绘制纹理
  2. 运动目标跟踪(十一)--CN及CSK跟踪原理
  3. 工商银行历年考试真题 银行校园招聘考试笔试资料
  4. sin2x麦克劳林公式_sinx泰勒公式展开
  5. Git Tortoise安装 CodeHub
  6. 使用mybatisplus中的selectone方法,查询一条信息。报错
  7. springboot 解决 woff2、ttf 跨域无法解析问题
  8. EBS R12.2 ADOP (R12.2 AD Online Patching) - 3
  9. 皮卡丘(pikachu)暴力破解
  10. 腾讯云播放器TcPlayer实现网络直播