<definitions... >
<!-- declaration of the signal -->
<signalid="alertSignal"name="alert"/>
<processid="catchSignal">
<intermediateThrowEvent id="throwSignalEvent" name="Alert">
<!-- signal event definition -->
<signalEventDefinition signalRef="alertSignal"/>
</intermediateThrowEvent>
...
<intermediateCatchEvent id="catchSignalEvent" name="On Alert">
<!-- signal event definition -->
<signalEventDefinition signalRef="alertSignal"/>
</intermediateCatchEvent>
...
</process>
</definitions>
信号。类比JBPM中的概念:事件的ACTION动作。JBPM中比较笼统。没有细分。
intermediateThrowEvent 中间事件:类比JBPM中的概念:即事件本身。JBPM中粒度较粗。
信号全局范围的事件(广播语义)。 会发送给所有激活的处理器。类比JBPM中的概念:事件的传播范围,可以被监听。XBPM中缺少实现。
信号事件定义使用signalEventDefinition
元素。 signalRef
属性会引用definitions
根节点里定义的signal
子元素。
下面是一个流程的实例,其中会抛出一个信号,并被中间事件捕获。
=========================
<boundaryEvent id="escalationTimer" cancelActivity="true" attachedToRef="firstLineSupport"> <timerEventDefinition> <timeDuration>${duration}</timeDuration> </timerEventDefinition> </boundaryEvent>
boundaryEvent 边界事件:类比JBPM中的概念:即事件本身。JBPM中粒度较粗。
timerEventDefinition:类比JBPM中的概念:具体的动作。这里指时间处理。而JBPM定时器独立抽象出一个概念了。这里和事件概念统一了,挺好的设计。