11 Flowable信号事件之信号抛出事件(SignalThrowingEvent)、信号边界事件(SignalBoundaryEvent)

本文详细介绍了Flowable中的信号事件,包括SignalThrowingEvent(抛出事件)和SignalBoundaryEvent(边界事件)。通过示例展示了如何在流程中使用这些事件,以及它们在流程执行中的作用。SignalThrowingEvent用于抛出信号,而SignalBoundaryEvent作为边界事件在特定条件触发后接收信号,从而影响流程的执行路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 抛出事件SignalThrowingEvent

接下来我们编写signalThrow.bpmn20.xml,流程定义的具体内容如下:

<?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:activiti="http://activiti.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=&
### Flowable信号捕获事件的回退处理 在 Flowable 工作流引擎中,当遇到需要从某个特定节点回退的情况时,可以采用多种方式实现这一需求。对于带有信号捕获事件的工作流来说,主要思路是在适当位置插入排他网关,并通过设置流程变量来控制流向。 #### 方法一:使用排他网关配合流程变量 为了使工作流能够根据条件返回到之前的节点,在任务完成后立即设定一个名为 `backToPreviousNode` 的布尔型流程变量[^2]: ```java // 设置流程变量以指示是否应回退至先前节点 execution.setVariable("backToPreviousNode", true); ``` 随后,在紧接该任务之后的位置配置一个排他网关 (Exclusive Gateway),它会依据上述变量的状态判断下一步骤应前往何处。如果此变量被设为 `true`,则路径将转向指定的历史节点;反之,则继续沿原定路线前进。 #### 方法二:利用边界定时器或消息事件监听状态变化 另一种方案涉及引入额外的时间管理机制或是外部触发的消息通知作为辅助手段。例如,可以在目标活动上附加一个边界定时器事件,一旦超时期满便激活相应的补偿措施——即发送特殊指令让当前实例跳转回到初始阶段重新开始评估。 然而这种方法相对复杂些,通常只适用于那些对响应速度有较高要求的应用场景下。 #### 实现案例分析 针对具体应用场景中的并行审批环节,假设存在两个平行分支分别由不同级别的管理人员审核文件。此时若需确保任一分支未完成的情况下整个流程均能安全撤回到起点处等待修正后再发起新一轮审查请求的话,那么就需要特别注意以下几点设计考量[^3]: - **统一入口**:保证所有可能成为终止点的任务都具备一致性的退出逻辑; - **全局监控**:借助服务任务(Service Task) 或者 JavaDelegate 接口编写自定义处理器用于实时跟踪各子线程进展状况; - **集中决策**:设立专门负责协调各方意见汇总工作的中心枢纽角色(如图所示),以此为基础制定最终处置方针并向外界传达确切指引信息。 综上所述,无论是简单的单一流向调整还是复杂的多路并发结构重组,Flowable 都提供了灵活而强大的工具集支持开发者按照实际业务需求定制专属解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dream21st

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值