初探Flowable流程引擎,偶遇多实例子流程
对于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流程引擎,偶遇多实例子流程相关推荐
- activiti并发多实例子流程任务处理
一直在搞工作流(activiti),总结一下关于工作流(activiti)中同时并发处理多个子流程的操作方法. 先说下我要实现的业务: 1.办公室发通知(在系统申报页面上,勾选科室,被选中的科室执行第 ...
- 驰骋工作流程引擎案例-水质检测工作流程设计开发实现过程
2019独角兽企业重金招聘Python工程师标准>>> Technorati Tags: 开源驰骋工作流引擎, .NET工作流,表单设计器,ccflow, jflow, 案例,水质监 ...
- flowable 查询完成的流程_flowable流程引擎初体验,完成一个请假流程
flowable是一个用Java写的轻量级商业流程引擎,用它可以部署BPMN2.0(在工业界被广泛接受的XML标准)流程定义, 并且可以创建流程实例,驱动节点流转,存储相关的历史数据等等.可能更多人先 ...
- flowable 流程表单_flowable 流程引擎总结
最近公司使用Flowable开发了自己的OA系统,因此对Flowable的相关内容进行如下总结 一.Flowable 是什么 目前最新版是Flowable 6.4.2(2019年07月26日) Flo ...
- flowable流程引擎
Flowable流程引擎 一.流程引擎API和服务 引擎 API 是与 Flowable 交互的最常见方式.主要起点是 ProcessEngine,它可以通过多种方式创建,如配置部分所述.从 Proc ...
- 流程引擎之compileflow简介
背景 compileflow 是一个非常轻量.高性能.可集成.可扩展的流程引擎.compileflow Process 引擎是淘宝工作流 TBBPM 引擎之一,是专注于纯内存执行,无状态的流程引擎,通 ...
- 基于camunda开源流程引擎如何实现会签及会签原理解析
一.背景 市场上比较有名的开源流程引擎有osworkflow.jbpm.activiti.flowable.camunda.由于jbpm.activiti.flowable这几个流程引擎出现的比较早, ...
- BPM流程引擎常用术语和概念介绍
本文重点介绍BPM业务流程管理中常常用到概念和术语,这些概念同样适用于JBPM.Activiti.Flowable.Camunda等主流的开源工作流引擎. 一.BPM模型符号协议 1.BPMN (业务 ...
- 国产+开源:可视化流程引擎助力企业建立流程管理体系
编者按:搭建流程管理体系,离不开可视化的流程引擎!本文介绍流程管理的重要性以及市场对流程引擎的需求,并介绍国产开源的流程引擎. 为什么需要流程管理 在说为什么之前,首先我们需要弄懂流程是什么. 用最通 ...
- camunda 流程执行追踪_流程引擎为什么选 Camunda
2019 年初我在重新设计我们组负责的流程系统时,选择了 Camunda 流程引擎,并基于该流程引擎实现了一套适配方案.以前就想做一次总结,但总拖着. 最近公司中台在做流程引擎选型,相关同事找我了解 ...
最新文章
- 升降压斩波电路matlab,升降压斩波电路matlab仿真.doc
- Nginx+tomcat配置集群
- AI in RTC 创新挑战赛,决赛打响
- jedis使用_Redis --Java客户端 Jedis
- php判断子字符串位置,PHP怎样查询子字符串位置
- 六年级计算机课学什么时候,六年级信息技术《进一步了解计算机》教学设计
- 遥感图像数据类型的区别
- 三个精致的钢琴音源 Native Instruments Definitive Piano Collection
- yuki翻译器钩子_YUKI GALGAME翻译器
- Matlab学习笔记:网格线的粗细调整
- 图像工作回顾之三:极线匹配
- ApacheCN 计算机视觉译文集 20210212 更新
- 【云原生之Docker实战】使用docker部署Memos碎片化知识管理工具
- sunxi:[0]全志SoC启动过程
- 【STM32】RTC实时时钟概述、寄存器、库函数(RTC一般步骤)
- Algorithm - Bubble Sort(Java)
- 迅为-iMX6ULL开发板上配置AP热点
- TensorFlow-GPU框架详细安装
- python应用-scipy,numpy,sympy计算微积分
- BISTU数据库期末复习指导
热门文章
- OpenGL ES 绘制纹理
- 运动目标跟踪(十一)--CN及CSK跟踪原理
- 工商银行历年考试真题 银行校园招聘考试笔试资料
- sin2x麦克劳林公式_sinx泰勒公式展开
- Git Tortoise安装 CodeHub
- 使用mybatisplus中的selectone方法,查询一条信息。报错
- springboot 解决 woff2、ttf 跨域无法解析问题
- EBS R12.2 ADOP (R12.2 AD Online Patching) - 3
- 皮卡丘(pikachu)暴力破解
- 腾讯云播放器TcPlayer实现网络直播