定义
消息中间事件指在流程中将一个消息事件作为独立的节点来运行。它是一种捕获事件,当流程
执行到消息中间事件时就会中断在这里,一直等待被触发,直接到该事件接收到相应的消息后,流
程沿后继路线继续执行。消息事件是一种引用了消息定义的事件,与信号事件不同的是,消息只能
指向一个接收对象,不能像信号事件一样全局广播。
图形标记
消息中间事件显示为普通中间事件(圆圈套圆圈),内部是一个消息小图标。消息图标是白色
的(无填充),表示捕获语义,如图所示:
XML 内容
消息中间事件定义为标准中间捕获事件,指定类型的子元素是 messageEventDefinition 元素:
<message id="theMessage" name="newMessageName" />
<process id="messageIntermediateCatchEventProcess">
<intermediateCatchEvent id="message">
<messageEventDefinition messageRef="theMessage" />
</intermediateCatchEvent>
</process>
在以上 xml 代码片段中,加粗的部分分别定义了 message 和 intermediateCatchEvent,消息
message 的 id 属 性 值 为 theMessage , 消 息 中 间 事 件 intermediateCatchEvent 中 的
messageEventDefinition 子元素通过设置 messageRef 为 theMessage 引用了该消息。
使用示例
消息中间事件的触发方式有两种
- 流程中抛出消息事件(Message Intermediate Throwing Event)、消息抛出事件、消息结束事件(Message EndEvent)发出的内部消息。
- 通过 API 触发,在 Flowable 中通过调用 runtimeService.messageEventReceived 系列方法发出一个指定的信号。runtimeService.messageEventReceived 系列方法下表格所示:
API 方法 | 含义 |
---|---|
runtimeService.messageEventReceived(String messageName, String executionId) | 把消息发送给指定执行流 |
runtimeService.messageEventReceived(String messageName, String executionId, HashMap<String, Object> processVariables) | 把消息发送给指定执行流,同时给更新流程变量 |
界面操作
视频地址:
FlowableBpmn2.0组件讲解