信号开始事件
定义
信号开始事件在接收到特定的信号后被触发,启动一个流程实例。如果多个流程含有相同信号名称的信号开始事件,那么它们都会被启动。
图形标记
消息开始事件是一个圆圈,中间是一个消息事件图标。图标是白色未填充的,来表示捕获(接收)行为。
XML内容
信号开始事件的 XML 内容是在普通开始事件申请中包含一个 signalEventDefinition 子元素
<!-- 信号定义 -->
<signal id="theSignal" name="The Signal" />
<process id="signalStartProcess">
<startEvent id="signalStart" >
<!-- 定义为开始信号事件 -->
<signalEventDefinition signalRef="theSignal" />
</startEvent>
</process>
以上 xml 代码片段中加粗的部分分别定义了 signal、startEvent,信号 signal 的 id 属性值为theSignal,信号开始事件 startEvent 中的 signalEventDefinition 子元素通过设置 signalRef 为 theSignal
引用了该信号。
界面操作
定义信号
选择信号
使用示例
信号启动事件的触发方式通常有以下几种:
1、流程中的抛出信号事件(Signal Intermediate Throwing Event)、信号结束事件(Signal End
Event)发出信号,所有拥有相同名字信号启动事件的流程定义都会被启动。
2、通过 API(runtimeService.signalEventReceivedXXX 方法)抛出一个信号,所有拥有相同名字
信号启动事件的流程定义都会被启动。需要为 API 传递的 signalName,是由 signal 元素的 name 属
性决定的名字。signal 元素被 signalEventDefinition 的 signalRef 属性所引用。
3、作为普通开始事件,启动流程。
::: warning 注意:信号定义的作用域分流程实例有效和全局有效
<signal id="startSigon" name="开始信号" flowable:scope="processInstance" />
<signal id="startSigon" name="开始信号" flowable:scope="global" />
:::
视频地址:
演示demo
本文中内容和案例出自贺波老师的书《深入Activiti流程引擎:核心原理与高阶实战》,书中的介绍更全面、详细,推荐给大家。
深入Activiti流程引擎