4.1.1.2、定时器启动事件
- 描述:定时器启动事件(timer start event)在指定时间创建流程实例。在流程只需要启动一次,或者流程需要在特定的时间间隔重复启动时,可以使用定时器启动事件。
请注意:子流程不能有定时器启动事件。
请注意:定时器启动事件,在流程部署的同时就开始计时。不需要调用startProcessInstanceByXXX就会在时间启动。调用startProcessInstanceByXXX时会在定时启动之外额外启动一个流程。
请注意:当部署带有定时器启动事件的流程的更新版本时,上一版本的定时器作业会被移除。这是因为通常并不希望旧版本的流程仍然自动启动新的流程实例。
- 图示:定时器启动事件,用其中有一个钟表图标的圆圈来表示。
- XML表示:定时器启动事件的XML表示格式,是普通的启动事件声明加上定时器定义子元素。
示例:流程会启动4次,间隔5分钟,从2011年3月11日,12:13开始
R4/2011-03-11T12:13/PT5M
示例:流程会在设定的时间启动一次
2011-03-11T12:13:14
4.1.1.3、消息启动事件
- 描述:
消息启动事件(message start event)使用具名消息启动流程实例。消息名用于选择正确的启动事件。
当部署具有一个或多个消息启动事件的流程定义时,会做如下判断:
>> 给定流程定义中,消息启动事件的名字必须是唯一的。一个流程定义不得包含多个同名的消息启动事件。如果流程定义中有两个或多个消息启动事件引用同一个消息,或者两个或多个消息启动事件引用了具有相同消息名字的消息,则Flowable会在部署这个流程定义时抛出异常。
>> 在所有已部署的流程定义中,消息启动事件的名字必须是唯一的。如果在流程定义中,一个或多个消息启动事件引用了已经部署的另一流程定义中消息启动事件的消息名,则Flowable会在部署这个流程定义时抛出异常。
>> 流程版本:在部署流程定义的新版本时,会取消上一版本的消息订阅,即使新版本中并没有这个消息事件)。
- 图示:消息启动事件用其中有一个消息事件标志的圆圈表示。这个标志并未填充,用以表示捕获(接收)行为。
- XML表示:
消息启动事件的XML表示格式,为普通启动事件声明加上messageEventDefinition子元素:
<definitions id=“definitions”
xmlns=“http://www.omg.org/spec/BPMN/20100524/MODEL”
xmlns:flowable=“http://flowable.org/bpmn”
targetNamespace=“Examples”
xmlns:tns=“Examples”>
…
4.1.1.4、信号启动事件
- 描述:
信号启动事件(signal start event),使用具名信号启动流程实例。这个信号可以由流程实例中的信号抛出中间事件(intermediary signal throw event),或者API(runtimeService.signalEventReceivedXXX方法)触发。两种方式都会启动所有拥有相同名字信号启动事件的流程定义。
请注意可以选择异步还是同步启动流程实例。
需要为API传递的signalName,是由signal元素的name属性决定的名字。signal元素由signalEventDefinition的signalRef属性引用。
- 图示:
信号启动事件用其中有一个信号事件标志的圆圈表示。这个标志并未填充,用以表示捕获(接收)行为。
- XML表示:
信号启动事件的XML表示格式,为普通启动事件声明,加上signalEventDefinition子元素:
4.1.1.5、错误启动事件
- 描述:
错误启动事件(error start event),可用于触发事件子流程(Event Sub-Process)。错误启动事件不能用于启动流程实例。
错误启动事件总是中断。
- 图示:
错误启动事件用其中有一个错误事件标志的圆圈表示。这个标志并未填充,用以表示捕获(接收)行为。
- XML表示:
错误启动事件的XML表示格式,为普通启动事件声明加上errorEventDefinition子元素:
4.1.2、结束事件
结束事件(end event)标志着流程或子流程中一个分支的结束。结束事件总是抛出(型)事件。这意味着当流程执行到达结束事件时,会抛出一个结果。结果的类型由事件内部的黑色图标表示。在XML表示中,类型由子元素声明给出。
4.1.2.1、空结束事件
- 描述:
“空”结束事件(none end event),意味着当到达这个事件时,没有特别指定抛出的结果。因此,引擎除了结束当前执行分支之外,不会多做任何事情。
- 图示:
空结束事件,用其中没有图标(没有结果类型)的粗圆圈表示。
- xml表示:
空事件的XML表示格式为普通结束事件声明,没有任何子元素(其它种类的结束事件都有子元素,用于声明其类型)。
4.1.2.2、错误结束事件
- 描述:
当流程执行到达错误结束事件(error end event)时,结束执行的当前分支,并抛出错误。这个错误可以由匹配的错误边界中间事件捕获。如果找不到匹配的错误边界事件,将会抛出异常。
- 图示:
错误结束事件事件用内部有一个错误图标的标准结束事件(粗圆圈)表示。错误图标是全黑的,代表抛出的含义。
- XML表示:
错误结束事件表示为结束事件,加上errorEventDefinition子元素:
errorRef属性可以引用在流程外定义的error元素:
…
…
4.1.2.3、终止结束事件
- 描述:
当到达终止结束事件(terminate end event)时,当前的流程实例或子流程会被终止。也就是说,当执行到达终止结束事件时,会判断第一个范围 scope(流程或子流程)并终止它。在BPMN 2.0中,子流程可以是嵌入式子流程,调用活动,事件子流程,或事务子流程。有一条通用规则:当存在多实例的调用过程或嵌入式子流程时,只会终止一个实例,其他的实例与流程实例不会受影响。
可以添加一个可选属性terminateAll。当其为true时,无论该终止结束事件在流程定义中的位置,也无论它是否在子流程(甚至是嵌套子流程)中,都会终止(根)流程实例。
- 图示:
终止结束事件用内部有一个全黑圆的标准结束事件(粗圆圈)表示。
- xml表示:
终止结束事件,表示为结束事件,加上terminateEventDefinition子元素。
terminateAll属性是可选的(默认为false)。
<endEvent id="myEndEvent >
4.1.2.4、取消结束事件
- 描述:
取消结束事件(cancel end event)只能与BPMN事务子流程(BPMN transaction subprocess)一起使用。