本文主要介紹activiti構建流程定義時使用的基礎構件:須要和Activiti學習(六)——基本事件一塊兒理解java
下圖時idea中actiBPM插件中構件流程圖使用的基本構件:api
構件主要有開始事件、中間事件、邊界事件、結束事件四種 。下面是各類構件的詳細介紹。併發
啓動事件時觸發型的,等待第三方觸發以後才能啓動,可經過activiti的相關api觸發。ide
能夠設置處理用戶、用戶組、表單等屬性,必須由人爲來觸發。學習
腳本任務不須要人爲的觸發,流程輪轉到腳本任務會自動執行,腳本任務能夠運用引擎依賴語言以外的腳本語言,如Groovy、JavaScript,也便可以直接在xml內容插入其餘語言的代碼。idea
能夠不受人工干涉,流轉到自動運行,調用java中的方法。須要把類實現JavaDelegate接口,而且把這個實現類設置到服務事件的class屬性上去。spa
郵件任務能夠經過activiti發送郵件,其中郵件信息經過變量方式傳遞。 .net
手動任務:activiti把手動任務看成一個空任務來處理,當到達此任務時由引擎自動完成並轉向下一個任務。插件
接收任務:接收任務是一個功能簡單且單一的任務,在任務建立後開始等待消息的到來,直到被觸發纔會完成任務。 code
業務規則任務,業務規則任務能夠根據流程變量的值處理預設的業務規則。
當流程執行到callActivity,會建立一個新分支,它是到達調用節點的流程的分支。 這個分支會用來執行子流程,默認建立並行子流程,就像一個普通的流程。 上級流程會等待子流程完成,而後纔會繼續向下執行。
子流程:有嵌入子流程和調用子流程,嵌入子流程時主流程的一部分,只能被主流程調用;調用子流程反之。
並行網關:並行網關用來對併發的任務進行流程建模,它能把單條線路任務拆分紅多個路徑並行執行或將多條路線合併。
分支: 並行後的所有外出順序流,爲每個順序流都建立一個併發分支。
匯聚: 所有到達並行網關。在此等待的進入分支。 直到所有進入順序流的分支都到達之後。 流程就會經過匯聚網關。
排他網關:排他網關用來對流程中的決定進行建模。與單純使用線上的condition有什麼區別呢,單純使用線上condition判斷,全部爲true的流程都會被執行,而使用排他網關就算有多個爲true也只會選擇第一個進行執行,若是沒有符合要求的執行流,那麼排他網關將會拋出一個異常。
分支: 所有外出順序流的條件都會被解析。結果爲true的順序流會以並行方式繼續運行。 會爲每個順序流建立一個分支。
匯聚: 所有並行分支到達包括網關。會進入等待章臺, 直到每個包括流程token的進入順序流的分支都到達。 這是與並行網關的最大不一樣。換句話說,包括網關僅僅會等待被選中運行了的進入順序流。 在匯聚以後,流程會穿過包括網關繼續運行。
事件網關:它容許多個輸出流指向多個不一樣的中間捕獲事件。
基於事件網關贊成依據事件推斷流向。
網關的每個外出順序流都要鏈接到一箇中間捕獲事件。 當流程到達一個基於事件網關,網關會進入等待狀態:會暫停運行。 與此同一時候,會爲每個外出順序流建立相對的事件訂閱。
注意基於事件網關的外出順序流和普通順序流不一樣。這些順序流不會真的"運行"。
相反。它們讓流程引擎去決定運行到基於事件網關的流程需要訂閱哪些事件。
要考慮下面條件:
基於事件網關必須有兩條或以上外出順序流。
基於事件網關後,僅僅能使用intermediateCatchEvent
類型。 (activiti不支持基於事件網關後鏈接ReceiveTask。)
鏈接到基於事件網關的intermediateCatchEvent
僅僅能有一條進入順序流。
邊界事件是綁定在活動上的捕獲事件、會一直監聽處於某種事件的觸發在捕獲到事件以後中斷活動,而後從邊界事件類型的數據流繼續執行。能夠捕獲信號、消息、定時器、錯誤信號
中間捕獲事件,能夠捕獲信號、消息、定時器錯誤。
中間拋出事件:能夠拋出信號事件