Flowable-中间事件-空中间抛出事件

✨✨✨ 最好用的Flowable流程设计器


定义

空中间抛出事件是一个 Throwing 事件,在 intermediateThrowEvent 元素下不加入任何的事件定
义元素,就构成一个空中间抛出事件。它通常用于表示流程中的某个状态,在实际使用的过程中可
以通过添加执行监听器,来表示流程状态的改变。

图形标记

中间信号抛出事件显示为普通中间事件,内部无填充,如下图所示:

在这里插入图片描述

XML内容

  <process id="noneIntermediateThrowingEventProcess">
      <intermediateThrowEvent id="noneEvent">
      <extensionElements>
      <flowable:executionListener 
     class="com.dragon.flow.test.bpmn.event.IntermediateNoneEventTest$MyExecutionListe
     ner" event="start" />
      </extensionElements>
     </intermediateThrowEvent>
  </process>

在以上 xml 代码片段中,加粗的部分定义了 intermediateThrowEvent,在其 extensionElements
子元素中指定了一个流程监听器,

视频地址:

空抛出事件

演示demo

空中间抛出事件

本文中内容和案例出自贺波老师的书《深入Activiti流程引擎:核心原理与高阶实战》,书中的介绍更全面、详细,推荐给大家。
深入Activiti流程引擎

### Flowable 中间抛出事件的使用方法及配置说明 在 Flowable 流程引擎中,**中间抛出事件**(Intermediate None Throw Event)是一种特殊类型的中间事件,它不引发任何实际的事件行为,仅用于表示流程中的某个状态或标记。该事件通常用于流程设计中,作为流程执行过程中的一个节点,用于附加执行监听器或其他逻辑处理。 #### 图形表示 中间抛出事件在 BPMN 图形中表示为一个空的中间事件圆圈,内部没有图标或定义。它通常用于流程中,表示流程状态的变化或作为流程逻辑的占位符[^2]。 #### 使用方法 1. **流程建模** 在 BPMN 文件中,使用 `intermediateThrowEvent` 元素定义中间抛出事件,不添加任何事件定义子元素。例如: ```xml <intermediateThrowEvent id="Event_001" name="Intermediate None Throw Event" /> ``` 此定义表示一个不触发任何事件中间节点,仅用于流程状态的表示。 2. **附加执行监听器** 为了在流程执行过程中对中间抛出事件进行处理,可以为其添加执行监听器。通过监听器,可以在流程到达该事件时执行特定的业务逻辑。例如: ```xml <intermediateThrowEvent id="Event_001" name="Intermediate None Throw Event"> <extensionElements> <flowable:executionListener event="start" class="com.example.IntermediateEventExecutionListener" /> </extensionElements> </intermediateThrowEvent> ``` 在此示例中,`IntermediateEventExecutionListener` 是一个自定义的执行监听器类,当流程执行到该事件时,会调用其 `notify` 方法。 3. **流程状态表示** 中间抛出事件可以用于表示流程中的某个状态,例如“流程已审核完成”或“流程进入审批阶段”。通过附加执行监听器,可以在流程执行到该节点时更新流程状态或记录日志。 #### 配置说明 1. **BPMN 文件配置** 在 BPMN 文件中,中间抛出事件不需要任何事件定义子元素。只需定义 `intermediateThrowEvent` 元素即可。例如: ```xml <intermediateThrowEvent id="Event_001" name="Intermediate None Throw Event" /> ``` 2. **监听器配置** 通过 `executionListener` 可以在流程执行到该事件时执行特定逻辑。监听器支持以下事件类型: - `start`:当流程进入该事件时触发。 - `end`:当流程离开该事件时触发。 示例配置: ```xml <intermediateThrowEvent id="Event_001" name="Intermediate None Throw Event"> <extensionElements> <flowable:executionListener event="start" class="com.example.IntermediateEventExecutionListener" /> </extensionElements> </intermediateThrowEvent> ``` 3. **流程执行逻辑** 中间抛出事件不会改变流程的执行路径,它仅作为流程中的一个标记点。流程会直接通过该事件继续执行后续任务。 #### 应用场景 1. **流程状态标记** 中间抛出事件可以用于标记流程中的特定状态,例如“流程已进入审批阶段”或“流程进入结束阶段”。通过附加执行监听器,可以记录流程状态的变化。 2. **流程日志记录** 在流程执行过程中,中间抛出事件可以用于记录日志或触发其他业务逻辑。例如,在流程进入某个阶段时记录日志信息。 3. **流程监控** 通过中间抛出事件,可以监控流程的执行路径。例如,在流程的关键节点添加事件,并通过监听器记录流程执行信息。 4. **流程测试** 在流程测试过程中,中间抛出事件可以作为流程的断点,用于验证流程的执行路径是否符合预期。 #### 示例代码 以下是一个完整的 BPMN 片段,展示了如何定义中间抛出事件并附加执行监听器: ```xml <process id="intermediateNoneThrowEventProcess" name="Intermediate None Throw Event Process"> <startEvent id="StartEvent" /> <sequenceFlow id="flow1" sourceRef="StartEvent" targetRef="Event_001" /> <intermediateThrowEvent id="Event_001" name="Intermediate None Throw Event"> <extensionElements> <flowable:executionListener event="start" class="com.example.IntermediateEventExecutionListener" /> </extensionElements> </intermediateThrowEvent> <sequenceFlow id="flow2" sourceRef="Event_001" targetRef="EndEvent" /> <endEvent id="EndEvent" /> </process> ``` 在上述示例中,流程从 `StartEvent` 开始,经过 `Event_001`(中间抛出事件),最终到达 `EndEvent`。在流程执行到 `Event_001` 时,会触发 `IntermediateEventExecutionListener` 执行特定逻辑。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小学生05101

flowable

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

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

打赏作者

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

抵扣说明:

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

余额充值