ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Flowable 事件机制全解析:启动、边界、中间与补偿事件实战

Flowable 事件机制全解析:启动、边界、中间与补偿事件实战 Flowable 事件机制全解析启动、边界、中间与补偿事件实战【免费下载链接】flowable-userguideFlowable最新中文文档,ai自动生成BPM体验地址http://flow.je4.cn/#/login项目地址: https://gitcode.com/gh_mirrors/fl/flowable-userguideFlowable 事件机制是 BPMN 2.0 工作流引擎中最核心、也最容易让新手困惑的部分。无论是流程如何启动、如何响应超时、还是失败后如何反悔补偿全部依赖事件来完成。本文用最通俗的语言结合 Flowable 官方中文文档中的真实示例为你一次讲透启动事件、边界事件、中间事件与补偿事件四大类并给出可直接照抄的实战 XML 配置帮你从零上手 Flowable 流程建模。 本文内容基于项目中的官方中文文档 ch07b-BPMN-Constructs.adoc事件章节该文档覆盖了 BPMN 2.0 全部事件类型的中文讲解。一、先搞懂两个基础概念捕获与抛出在 Flowable 事件机制中所有事件都可以分为两大类捕获事件Catching流程执行到这里会停下来等待直到某个触发器发生。图形上圆圈内的图标是白色未填充的。抛出事件Throwing流程执行到这里会主动触发一个信号。图形上圆圈内的图标是黑色填充的。举一个生活化的例子你下单后等待外卖属于捕获你按下支付按钮属于抛出。理解这一点后面看 XML 时一眼就能分辨行为。另外还有个重要概念叫事件定义Event Definition它决定事件做什么。例如同一个启动事件加上timerEventDefinition就是定时启动加上messageEventDefinition就是消息启动。二、启动事件流程如何开始启动事件是流程的起点它决定了流程如何被启动。Flowable 支持多种启动事件最常用的有四种。2.1 空启动事件手动触发空启动事件是默认类型圆圈内没有任何图标。它只能通过调用 API 手动启动流程实例例如runtimeService.startProcessInstanceByXXX()。它的 XML 极其简单startEvent idstart namemy start event /适合大多数用户点击提交后发起流程的业务场景。2.2 定时器启动事件到点自动开工定时器启动事件用圆圈内带钟表图标表示流程部署的同时就开始计时无需手动调用即可自动创建流程实例非常适合定时任务场景比如每天凌晨自动生成报表。startEvent idtimerStart timerEventDefinition timeCycle0 0 2 * * ?/timeCycle /timerEventDefinition /startEvent上面是 cron 表达式表示每天凌晨 2 点触发。⚠️ 注意 Flowable 的 cron 与 Unix 不同第一位代表秒。2.3 消息启动事件收到消息才启动当外部系统通过 REST 或 MQ 发来特定消息时消息启动事件才启动流程。它适合订单创建后自动进入审批流程这类异步驱动场景。startEvent idmessageStart messageEventDefinition messageRefnewOrderMessage / /startEvent2.4 信号启动事件广播式触发信号与消息最大的区别是信号是广播的不会被消耗。一个信号发出所有激活的信号捕获事件都会被触发哪怕不在同一个流程实例中。这非常适合全局通知类场景。三、边界事件给活动装上监听器边界事件是依附在活动上的捕获事件它不会主动抛出而是监听活动运行期间的特定触发器。捕获到事件后会中断活动并沿着出口顺序流继续执行。3.1 定时器边界事件超时自动处理定时器边界事件是实战中使用频率最高的边界事件典型的场景是用户任务超时后自动提醒或自动流转。比如一线客服 4 小时未响应自动升级到二线boundaryEvent idescalationTimer cancelActivitytrue attachedToReffirstLineSupport timerEventDefinition timeDurationPT4H/timeDuration /timerEventDefinition /boundaryEvent其中attachedToRef指定依附的活动cancelActivitytrue表示中断型默认如果设为false则是非中断型——活动继续运行只是额外触发提醒比如超时发一封提醒邮件但流程照常。实战技巧定时器边界事件需要开启异步执行器才能生效记得在flowable.cfg.xml中把asyncExecutorActivate设为true。3.2 错误边界事件捕获业务异常错误边界事件通常依附在子流程或调用活动上用来捕获子流程内部抛出的错误由错误结束事件抛出。错误会逐层向上传播直到找到匹配的错误边界事件。一个经典场景审核子流程中发现信息不足抛出错误由边界事件捕获后销毁子流程中所有未完成的活动转到补充材料节点。boundaryEvent idcatchError attachedToRefmySubProcess errorEventDefinition errorRefmyError / /boundaryEvent匹配规则记住三条不写errorRef捕获所有错误写了errorRef只匹配相同错误码引用了未定义的 error 时errorRef直接当作 errorCode 使用。3.3 其他边界事件信号边界事件在活动运行期间接收全局广播的信号。消息边界事件等待特定消息到达。取消边界事件只能依附在事务子流程上事务取消时触发然后启动范围内的所有补偿边界事件。一个事务子流程只允许一个取消边界事件。四、中间事件流程暂停与发信中间事件出现在流程的中段分为捕获型等待与抛出型发出两类。4.1 捕获中间事件定时器捕获中间事件行为像跑表执行到达后开始计时到点后继续。常用于审批通过后等待 5 分钟再执行下一步intermediateCatchEvent idtimer timerEventDefinition timeDurationPT5M/timeDuration /timerEventDefinition /intermediateCatchEvent消息/信号捕获中间事件在流程中途等待一个消息或信号适合等待外部系统确认后再继续的场景。4.2 抛出中间事件信号抛出中间事件主动广播一个信号。默认是同步广播——发出信号的流程实例会等待所有捕获方处理完毕也可以加flowable:asynctrue改为异步广播由作业执行器逐个通知。intermediateThrowEvent idsignal signalEventDefinition signalRefnewCustomerSignal / /intermediateThrowEvent空抛出中间事件引擎不做任何事只是穿过。常搭配执行监听器使用用来监控 KPI 或向 BAM 工具上报业务指标是不改流程逻辑埋点的好帮手。五、补偿事件给流程一个后悔药补偿是 Flowable 事件机制中最能体现 BPMN 优势的特性它用于撤销已成功完成的活动带来的影响。5.1 核心三件套补偿边界事件依附在活动边界上为活动注册一个补偿处理器。注意它与其它边界事件不同——它在活动成功完成后才激活并创建订阅。补偿处理器Compensation Handler通过单向关联接到补偿边界事件上的特殊活动标记isForCompensationtrue只在补偿触发时执行且不能有进出口顺序流。补偿抛出中间事件触发补偿的开关。boundaryEvent idcompensateBookHotelEvt attachedToRefbookHotel compensateEventDefinition / /boundaryEvent association associationDirectionOne ida1 sourceRefcompensateBookHotelEvt targetRefundoBookHotel / serviceTask idundoBookHotel isForCompensationtrue flowable:class... /5.2 必须知道的补偿规则逆序补偿补偿按照执行的相反顺序运行最后完成的活动最先被补偿。只补偿成功的活动只有成功完成的子流程补偿才会传播进去。分层触发被补偿的活动如果是子流程会递归补偿其中的活动但不会向上层传播。常用 activityRef可以为指定活动触发补偿intermediateThrowEvent idthrowCompensation compensateEventDefinition activityRefbookHotel / /intermediateThrowEvent一个典型场景酒店预订流程中订房成功后才扣款若后续环节失败需要先撤销扣款、再取消订房——补偿事件正是为此设计的。六、实战小结四类事件怎么选事件类型核心作用典型场景启动事件定义流程如何开始定时报表、消息驱动、手动发起边界事件监听活动运行过程任务超时升级、错误捕获、事务取消中间事件流程中途等待或发信等待外部确认、信号广播、KPI 埋点补偿事件撤销已完成活动的影响预订失败回滚、事务补偿建议你把本文中的 XML 片段放进 Flowable 建模工具或代码中逐步实验。项目内完整的 BPMN 2.0 中文文档还包含事件子流程、事务子流程等进阶内容可参考 ch07a-BPMN-Introduction.adoc 了解建模基础以及 ch07b-BPMN-Constructs1.adoc 深入学习网关、任务与监听器。搞懂事件机制你的 Flowable 流程设计能力将直接提升一个台阶 【免费下载链接】flowable-userguideFlowable最新中文文档,ai自动生成BPM体验地址http://flow.je4.cn/#/login项目地址: https://gitcode.com/gh_mirrors/fl/flowable-userguide创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表