# 中间事件
信号中间事件分为捕获事件和抛出事件.
当流程流转到信号中间捕获事件时会中断并等待触发,直到接收到相应的信号后沿信号中间捕获事件的外出顺序流继续流转。 信号事件默认是全局的,与其他事件(如错误事件)不同,其信号不会在捕获之后被消费。如果存在多个引用了相同信号的事件被激活,即使它们不在同一个流程实例中,当接收到该信号时,这些事件也会被一并触发。
当流程流转到信号中间抛出事件时,工作流会直接抛出信号,其他引用了与其相同信号的捕获事件将会被触发,信号发出后信号中间抛出事件结束,流程沿其外出顺序流继续流转。
信号中间抛出事件可以被信号开始事件,信号中间事件,信号边界事件订阅处理。
# XML内容
# 信号中间抛出事件
<bpmn:process id="Process_signal_middle" name="信号中间事件" isExecutable="true">
<bpmn:intermediateThrowEvent id="Event_1g8d8tq">
<bpmn:incoming>Flow_1bbjhev</bpmn:incoming>
<bpmn:outgoing>Flow_0m3hxx5</bpmn:outgoing>
<bpmn:signalEventDefinition id="SignalEventDefinition_1v82p3e" signalRef="Signal_3k02bmd" />
</bpmn:intermediateThrowEvent>
</bpmn:process>
<bpmn:signal id="Signal_3k02bmd" name="Signal_confirm" />
# 信号中间捕获事件
<bpmn:process id="Process_signal_middle" name="信号中间事件" isExecutable="true">
<bpmn:intermediateCatchEvent id="Event_0on9do9">
<bpmn:incoming>Flow_1f2qg68</bpmn:incoming>
<bpmn:outgoing>Flow_0pzegc5</bpmn:outgoing>
<bpmn:signalEventDefinition id="SignalEventDefinition_0h0jksy" signalRef="Signal_3k02bmd" />
</bpmn:intermediateCatchEvent>
<bpmn:signal id="Signal_3k02bmd" name="Signal_confirm" />
# 使用样例
报销申请提交后,后续3个并行峰值,一个分支会流转到"业务主管确认"用户任务,另外两个会流转到信号中间捕获事件一直等待被触发。 当业务主管确认后,流程流转到信号中间抛出事件,从而触发两个信号中间抛出事件,使得另外两个用户任务被执行。在线体验,请访问JeecgFlow (opens new window)Camunda站
← 边界事件