本文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規範中除了上述的經常使用事件還定義一些其餘的事件:條件事件定義、升級事件定義、鏈接事件定義和終止事件定義。