Flowable边界事件-信号边界事件

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



信号边界事件


定义

信号边界事件会捕获信号定义引用的相同信号名的信号。当执行到达边界信号事件依附的任务
时(如用户任务、子流程等),引擎会创建一个捕获事件,在其依附的任务的生命周期内等待一个
抛出信号,该信号可以来自流程的信号抛出事件,或者由 API 触发,被触发后流程会沿信号边界
事件的后继路线继续执行。

图形标记

信号边界事件显示为普通的中间事件(圆圈里有个小圆圈),位置在节点的边缘,内部有一个
信号小图标。信号图标是白色的(未填充),来表示捕获的意思,如下图所示
在这里插入图片描述

XML内容

 <signal id="theSignal" name="The Signal" />
 <process id="signalBoundaryInterrputingEventProcess">
    <userTask id="usertask1" name="测试信号任务"></userTask>
    <boundaryEvent id="signalBoundaryInterrputingEvent" name="Timer" 
    attachedToRef="usertask1" cancelActivity="false"> 
        <signalEventDefinition signalRef="theSignal"/> 
    </boundaryEvent>
 </process>

在以上 xml 代码片段中,加粗的部分分别定义了 signal、userTask 和 boundaryEvent,信号 signal
的 id 属性值为 theSignal,信号边界事件 boundaryEvent 中的 signalEventDefinition 子元素通过设置
signalRef 为 theSignal 引用了该信号,同时使用 attachedToRef 属性将其绑定到 userTask 上。
cancelActivity 属性用法与定时边界事件相同。
这里是将信号边界事件附加在了用户任务节点上,其它流程活动(如子流程等)也可以附加。
信号边界事件接收到指定的信号后就会触发。需要注意的是,信号事件是全局的,即在一个流
程实例中抛出一个信号事件,其他不同流程定义的流程实例都可以监听到这个事件(一处发信号,
所有信号的边界事件都能接收)。如果想要限制信号事件的范围,只希望在同一个流程实例中响应
这个信号事件,可以使用信号事件定义的 scope 属性(不是 BPMN2.0 的标准属性):

<signal id="alertSignal" name="alert" flowable:scope="processInstance"/>

其中,flowable:scope 的默认值是 global,代表全局;设置为 processInstance 时,作用范围仅仅
是在发生事件的流程实例里。

使用示例

信号边界事件的触发条件是接收信号,它具有全局性,可以捕获流程引擎内全局范围的信号。
信号边界事件触发的方式有两种:
(1)流程中抛出信号事件(Signal Intermediate Throwing Event)、信号结束事件(Signal End
Event)发出的信号。
(2)通过 API 触发,在 Flowable 中通过调用 runtimeService.signalEventReceived 系列方法发出一
个指定的信号。runtimeService.signalEventReceived 系列方法如下图所示:

API 方法含义
runtimeService.signalEventReceived(String signalName)把信号发送给全局所有订阅的处理器
runtimeService.signalEventReceived(String signalName, String executionId)把信号发送给指定执行流

界面操作

在这里插入图片描述

总结

信号边界事件分全局的和局部的 属性设置为flowable:scope="global"为全局的,默认不写也是全局的;flowable:scope="processInstance"为当前流程实例有效,这个不是bpmn2.0规范,是flowable的规范,但是非常有用

视频地址:

信号边界事件

演示demo

信号边界事件

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小学生05101

flowable

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

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

打赏作者

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

抵扣说明:

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

余额充值