事件與監(jiān)聽器

邊界事件

邊界事件是綁定在活動上的“捕獲型”事件箱蟆,會一直監(jiān)聽所有處于活動中的某種事件的觸發(fā)沟绪,在捕獲到事件之后中斷活動,然后從邊界事件類型的輸出流繼續(xù)執(zhí)行空猜。

  • 一旦邊界事件觸發(fā)绽慈,當(dāng)前活動就會被中斷恨旱,然后按照邊界事件之后的輸出流繼續(xù)執(zhí)行。
  • 邊界事件和所關(guān)聯(lián)的活動有一個特殊的關(guān)系附加坝疼,而且一個活動只能綁定一個邊界事件搜贤,每個邊界事件類型都是聽過屬性 attachedToRef 指定附加到拋出邊界事件的活動上。
    對應(yīng)的XML:
 <boundaryEvent attachedToRef="someActivity" id="boundaryId" cancelActivity="false">
  </boundaryEvent>

定時器邊界事件

定時器邊界事件和定時器啟動事件類似钝凶,只不過兩者的應(yīng)用場景不同仪芒,定時器啟動事件應(yīng)用于在一個指定的時間啟動一個新的流程,而定時器邊界事件需要附屬在一個非自動任務(wù)耕陷,調(diào)用活動掂名,子流程上,在上游任務(wù)執(zhí)行完成之后開始倒計時預(yù)設(shè)時間哟沫。


image.png

對于的XML

  <boundaryEvent attachedToRef="someActivity" id="boundaryId" cancelActivity="false">
            <timerEventDefinition>
                <timeDuration>P3D</timeDuration>
            </timerEventDefinition>
        </boundaryEvent>

對應(yīng)的示例圖:


image.png

異常邊界事件

異常邊界事件用來捕獲嵌入子流程或者調(diào)用活動拋出的異常饺蔑。異常在拋出之后被主流程的異常邊界事件捕獲,同時嵌入子流程或者調(diào)用活動中的活動也被中斷執(zhí)行嗜诀。


image.png

對應(yīng)的XML

 <subProcess id="subProcess1">
            <endEvent id="endEvent" name="error">
                <errorEventDefinition errorRef="A001">
                    
                </errorEventDefinition>
            </endEvent>
        </subProcess>
        
        <boundaryEvent attachedToRef="subProcess1" id="boundaryId1">
            <errorEventDefinition errorRef="A001"></errorEventDefinition>
        </boundaryEvent>

對應(yīng)的實例圖:


image.png

信號邊界事件

信號邊界事件可以捕獲流程執(zhí)行過程中拋出的信號猾警,可以附加在各自活動和子流程上。信號邊界事件是全局的隆敢。

取消邊界事件

取消邊界事件是專門針對事物子流程所設(shè)立的发皿,用來捕獲子流程中拋出的取消事件。

補(bǔ)償邊界事件

補(bǔ)償邊界事件用于事物子流程中針對事物失敗后的業(yè)務(wù)邏輯進(jìn)行補(bǔ)償筑公。

中間捕獲事件

中間捕獲事件就是流程的攔路虎雳窟,根據(jù)事件類型的不同需要使用不同的方式才能繼續(xù)執(zhí)行后續(xù)的輸出流活動。

定時器中間捕獲事件

定時器中間捕獲事件和定時啟動事件匣屡,定時器邊界事件的功能封救,配置參數(shù)的方式都類似,都是在一個特定的時間或者時間間隔之后被觸發(fā)捣作。

信號中間捕獲事件

信號中間捕獲事件用來捕獲被當(dāng)前流程或者其他流程拋出的信號事件誉结,捕獲的條件就是信號的ID一致。

消息中間捕獲事件

消息中間捕獲事件和信號中間捕獲事件類似券躁,不同的是信號事件是廣播式傳播惩坑,而消息中間捕獲事件是定向一對一的傳遞。

中間拋出事件

中間拋出事件和中間捕獲事件是兩個相互依賴的關(guān)系也拜,中間捕獲事件需要有事件拋出才能被觸發(fā)以舒,而中間拋出司機(jī)需要有對于的捕獲事件接收才有意義。

空中間拋出事件

空中間拋出事件是BPMN規(guī)范中沒有任務(wù)功能的事件慢哈,因此執(zhí)行到空中間拋出事件時直接跳過蔓钟。

信號間拋出事件

信號中間拋出事件可以拋出一個信號,然后交給引擎?zhèn)鞑バ盘柺录?br> 事件類型太多了我也搞不清到底有啥用卵贱,先把它羅列出來滥沫,等到真正使用的時候侣集,再來好好查一下。

監(jiān)聽器

監(jiān)聽器是activiti 在BPMN規(guī)范的基礎(chǔ)上擴(kuò)展的功能兰绣,是業(yè)務(wù)和流程非浸入式的粘合劑世分。
監(jiān)聽器分為兩類:執(zhí)行監(jiān)聽器和任務(wù)監(jiān)聽器。

執(zhí)行監(jiān)聽器

執(zhí)行監(jiān)聽器允許在執(zhí)行過程中執(zhí)行Java代碼缀辩。
執(zhí)行監(jiān)聽器可以捕獲事件的類型:
流程實例啟動臭埋,結(jié)束
輸出流捕獲
獲取啟動,結(jié)束
路由開始雌澄,結(jié)束
中間事件開始斋泄,結(jié)束
觸發(fā)開始事件杯瞻,觸發(fā)結(jié)束事件

監(jiān)聽器執(zhí)行類 屬性說明和實例
class 需要實現(xiàn)接口 ExecutionListener <activiti:executionListener event="end" class="com.xiaoyuxixi.TaskListener"></activiti:executionListener>
expression 定義一個表達(dá)式镐牺,類似于el表達(dá)式 <activiti:executionListener event="end" expression="${pojo.method(execution.eventName)}"></activiti:executionListener>
delegateExpression 利用spring代理實現(xiàn),<activiti:executionListener event="end" delegateExpression="${procinstCompleteListener}"></activiti:executionListener>

選擇一種就好魁莉,通常我們都使用最后一種睬涧。

任務(wù)監(jiān)聽器

相對于執(zhí)行監(jiān)聽器的使用范圍,任務(wù)監(jiān)聽器的范圍就要小得多旗唁,因為他只能用于用戶任務(wù)畦浓。

  • create 在任務(wù)被創(chuàng)建且所有任務(wù)屬性設(shè)置完成之后才觸發(fā)
  • assignment 在任務(wù)被分配給某個辦理人之后觸發(fā),需要注意的是检疫,assignment事件總是在create事件被觸發(fā)之前觸發(fā)
  • 在配置了監(jiān)聽器的上一個任務(wù)完成時觸發(fā)讶请,也就是在運(yùn)行時數(shù)據(jù)被刪除的時候觸發(fā)。
監(jiān)聽器執(zhí)行類 屬性說明和實例
class 需要實現(xiàn)接口 TaskListener
expression 定義一個表達(dá)式屎媳,類似于el表達(dá)式 <taskListener event="end" expression="${pojo.method(execution.eventName)}"></activiti:executionListener>
delegateExpression 利用spring代理實現(xiàn)夺溢,<activiti:taskListener event="assignment" delegateExpression="${taskAssignmentListener}" </activiti:taskListener>

好了,activiti理論部門終于告一段落了烛谊,后面都是對這些理論的一些實踐风响。理論確實枯燥了些,可是沒有理論的指導(dǎo)丹禀,也出不了實踐的真知状勤。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市双泪,隨后出現(xiàn)的幾起案子持搜,更是在濱河造成了極大的恐慌,老刑警劉巖焙矛,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葫盼,死亡現(xiàn)場離奇詭異,居然都是意外死亡薄扁,警方通過查閱死者的電腦和手機(jī)剪返,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門废累,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脱盲,你說我怎么就攤上這事邑滨。” “怎么了钱反?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵掖看,是天一觀的道長。 經(jīng)常有香客問我面哥,道長哎壳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任尚卫,我火速辦了婚禮归榕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吱涉。我一直安慰自己刹泄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布怎爵。 她就那樣靜靜地躺著特石,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鳖链。 梳的紋絲不亂的頭發(fā)上姆蘸,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機(jī)與錄音芙委,去河邊找鬼逞敷。 笑死,一個胖子當(dāng)著我的面吹牛题山,可吹牛的內(nèi)容都是我干的兰粉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼顶瞳,長吁一口氣:“原來是場噩夢啊……” “哼玖姑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起慨菱,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤焰络,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后符喝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闪彼,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了畏腕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缴川。...
    茶點(diǎn)故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖描馅,靈堂內(nèi)的尸體忽然破棺而出把夸,到底是詐尸還是另有隱情,我是刑警寧澤铭污,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布恋日,位于F島的核電站,受9級特大地震影響嘹狞,放射性物質(zhì)發(fā)生泄漏岂膳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一磅网、第九天 我趴在偏房一處隱蔽的房頂上張望谈截。 院中可真熱鬧,春花似錦知市、人聲如沸傻盟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至规哲,卻和暖如春跟啤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背唉锌。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工隅肥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人袄简。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓腥放,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绿语。 傳聞我的和親對象是個殘疾皇子秃症,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 類似這種“結(jié)婚就是完成任務(wù)”的話相信大家都聽過。那么究竟是誰給了這個任務(wù)吕粹?又要完成給誰看呢种柑? 作為...
    鮑弘軍閱讀 145評論 0 0
  • 緣聚河工聚请,放飛青春 9月29日晚,田徑場上燈光絢麗華美稳其,舞臺繽紛炫酷驶赏,“紅心向黨炸卑,喜迎十九大;緣聚河工煤傍,放飛青春夢...
    擺渡小魯閱讀 320評論 0 0
  • 學(xué)習(xí)Python爬蟲的第一周矾兜,完成了爬取58同城個人二手列表頁中除轉(zhuǎn)轉(zhuǎn)和推廣商品之外的正常商品數(shù)據(jù)。 最終成果是這...
    littleY閱讀 631評論 0 2
  • 感恩公婆中午來家吃飯患久,中午享受四世同堂的天倫之樂椅寺。二老有自給自足自理的生活,身體沒大毛病蒋失,退休工資足夠生活還有余錢...
    紫晶石鉆閱讀 171評論 0 0