事件
- 事件用来表明流程的生命周期中发生了什么事. 事件总是画成一个圆圈
- 在BPMN 2.0中,事件有两大分类:捕获(catching)事件 或触发(throwing)事件:
-
- 捕获(catching): 当流程执行到事件,会等待被触发.触发的类型是由内部图表或XML中的类型声明来决定的.捕获事件与触发事件在显示方面是根据内部图表是否被填充来区分的(白色)
- 触发(throwing): 当流程执行到事件,会触发一个事件.触发的类型是由内部图表或XML中的类型声明来决定的.触发事件与捕获事件在显示方面是根据内部图表是否被填充来区分的(黑色)
事件定义
- 事件定义决定了事件的语义. 如果没有事件定义,这个事件就不做什么特别的事情.没有设置事件定义的开始事件不会在启动流程时做任何事情
- 如果给开始事件添加了一个事件定义(比如定时器事件定义)我们就声明了开始流程的事件类型(这时定时器事件监听器会在某个时间被触发)
所有的事件定义都是集成自 BaseElement
定时器事件定义
- 定时器事件是根据指定的时间触发的事件
- 定时器事件可以用于开始事件,中间事件和边界事件
- 定时器定义元素:
- timeDate:触发事件的时间. 使用ISO8601格式指定的一个确定的时间:
都是BPMN的模型属性,相互关系,见下面,一目了然
public void setValues(TimerEventDefinition otherDefinition) { super.setValues(otherDefinition); setTimeDate(otherDefinition.getTimeDate()); setTimeDuration(otherDefinition.getTimeDuration()); setTimeCycle(otherDefinition.getTimeCycle()); setEndDate(otherDefinition.getEndDate()); setCalendarName(otherDefinition.getCalendarName()); }
错误事件定义
- 错误事件是由指定错误触发的
- 注意:
-
- BPMN错误与Java异常完全不一样:
-
-
- BPMN错误事件是为了对业务异常建模
- Java异常是要用特定方式处理
- 错误事件定义会引用一个error元素,引用相同error元素的错误事件处理器会捕获这个错误
信号事件定义
- 信号事件会引用一个已命名的信号
- 信号全局范围的事件(广播语义).会发送给所有激活的处理器
- 信号事件定义使用signalEventDefinition元素 .signalRef属性会引用definitions根节点里定义的signal子元素(signalEventDefinition引用相同的signal元素)
消息事件定义
- 消息事件会引用一个命名的消息,每个消息都有名称和内容
- 消息事件总会直接发送给一个接受者
- 消息事件定义使用messageEventDefinition元素.messageRef属性引用了definitions根节点下的一个message子元素:
取消事件定义
通常搭配子流程使用。可以嵌入边界和结束事件。
补偿事件定义
一个流程操作完成后,若结果不符合预期,使用补偿机制进行对完成的流程进行补偿处理。触发补偿为主要用途,嵌入边界和中间抛出事件。
终止事件定义
搭配结束事件使用,构成终止结束事件,主要用于终止流程或子流程。终止主流程或者子流程。
总结
以上是BPMN事件定义的表象概述,它是一个基本bpmn模型的基本元素,关于这些元素是如何解析,如何扩展,这些更为深入的内容,需要我们掌握了其基本用法以后再去展开。
-
-
-
还没有评论,来说两句吧...