本文activti的基本事件和上一篇介绍Activiti学习(五)——基础构件相辅相成。基础构件时activiti画流程图时的基本构件,而基本事件则存在于不一样的构建中,发挥着做用。学习
我的理解虽然我所提到的基本事件和基本构件名字听起来类似,但仍是有着本质区别:基本事件更加偏向于功能方面,于是基本事件被包含在各类基本构件当中;而基本构件更多的描述的是画图中的某一个元素在流程图中的位置信息。spa
基本事件主要分为:抛出事件和捕获事件,接着细分下去,有如下几种经常使用的实现:.net
下面分别介绍上述的基本事件:code
定时事件定义有三种:timeDate(指定一个触发的特定时间)、timeDuration(制定在多久时间后被触发)、timeCycle(指定隔多久触发一次),其中timeCycle可使用 cron表达式。xml
<timerEventDefinition id="startevent1_ED_1"> <timeDuration><![CDATA[PT5S]]></timeDuration> </timerEventDefinition>
timeEventDefinition能够被包含在开始事件、中间捕获事件或者边界事件中。blog
错误事件能够被包含在开始事件、边界事件或者结束事件中。事件
错误事件主要处理运行各类抛出的错误,使用时须要先声明error元素,再将error元素经过绑定id的方式绑定到errorEventDefination上,程序能够抛出BPMNerror,并经过 设置抛出的错误代码来匹配错误errorCode来匹配xml中的error元素,从而触发错误事件。errorcode不设置的话,全部错误都能捕获。事务
<error id=”myError” errorCode=”123”></error> <process id=”testProcess” name=”testProcess” > <endEvent id=”myErrorEndEvent”> <errorEventDefinition errorRef=”myError”/> </endEvent> </process>
可使用在边界事件、中间捕获时间、中间抛出事件中。get
编写的形式和错误事件相似。但须要注意的时信号事件必须定义name属性。it
<signal id=”signalA” name=”signalA” ></signal> <process id=”testProcess” name=” testProcess” > <signalEventDefinition signalRef=”signalA”></signalEventDefinition> </process>
可使用在开始事件和中间捕获事件中。
编写的形式依然和错误事件信号时间相似。
信号事件和消息时间都是发送一个信息来提示完成节点,区别是,信号事件相似于广播,全部人都均可以接受这个信号,可是消息时间相似于私信,只有指定单个节点能够接受信息。
<message id=”myMsg” name=”myMsg”></message> <process id=”medProcess” name=”medProcess”> <messageEventDefinitin messageRef=”myMsg”></messageEventDefinition> </process>
取消事件定义能够用在事务子流程模型中,取消事件可使用在边界事件和结束事件中。
<cancelEventDefinition></cancelEventDefinition>
取消边界事件时catching事件,它会等待被触发;取消结束事件时throwing事件。
补偿机制主要用于对于已经成功完成的事件作回退处理。补偿定义能够嵌套在开始事件、中间catching事件、中间throwing事件和结束事件。//todo
bpmn2.0规范中除了上述的经常使用事件还定义一些其余的事件:条件事件定义、升级事件定义、链接事件定义和终止事件定义。