初探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流程引擎是一种常见的开源流程引擎之一,它用于管理和执行各种业务流程。它具有许多特性和功能,可以帮助组织实现流程自动化和业务流程管理。Flowable流程引擎可以与其他系统集成,并提供了一个可视化的流程设计器,用于创建和编辑工作流程Flowable流程引擎的表结构和实例初始化可以通过项目初始化流程引擎来完成。Flowable流程引擎与Activiti引擎有一定的关系,它们都是基于BPMN 2.0规范开发的流程引擎Flowable是从Activiti项目分离出来的,目的是为了提供更灵活和可扩展的解决方案。Flowable拥有更快的开发和迭代速度,并提供了更多的功能和改进。 通过学习Flowable流程引擎,您可以了解如何使用它来管理和执行各种业务流程。您还可以学习如何创建和编辑流程,以及如何与其他系统进行集成。学习Flowable流程引擎将使您能够更好地理解和掌握业务流程管理的概念和技术,从而在实际项目中应用它们。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [小白学流程引擎-FLowable(一) —FLowable是什么](https://blog.csdn.net/weixin_44143114/article/details/128048613)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [《Flowable流程引擎从零到壹》Flowable流程引擎介绍和实战项目初始化流程引擎实例](https://blog.csdn.net/shi_hong_fei_hei/article/details/127957444)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值