Activiti學習(五)——基礎構件

本文主要介紹activiti構建流程定義時使用的基礎構件:須要和Activiti學習(六)——基本事件一塊兒理解java

下圖時idea中actiBPM插件中構件流程圖使用的基本構件:api

構件主要有開始事件、中間事件、邊界事件、結束事件四種 。下面是各類構件的詳細介紹。併發

  • StartEvent

啓動事件時觸發型的,等待第三方觸發以後才能啓動,可經過activiti的相關api觸發。ide

  1. 空啓動事件:標籤中其餘元素、屬性都沒有定義。
  2. 定時啓動事件:可設置一次性定時啓動、固定時間間隔啓動,timeDate(一次性定時),timeDuration(設置多長時間後啓動流程),timeCycle(固定定時間間隔啓動)。
  3. 異常啓動事件:異常啓動事件能夠觸發一個異常子流程,但不能經過api啓動,只能等待另外一個事件拋出異常結束。
  4. 消息啓動事件 :等待消息來啓動事件
  • EndEvetn

  1. 空結束事件:結束事件是拋出型的,空結束事件不處理拋出結果。
  2. 異常結束事件:異常結束事件定義了異常拋出的錯誤代碼,若是有對應和的異常開始事件,則進入異常開始事件,不然做爲空結束事件。
  3. 終止結束事件:能夠終結一個流程實例的運行。
  4. 取消結束事件:能夠取消一個事務子流程的執行,同時只能在子流程中使用。
  • UserTask

能夠設置處理用戶、用戶組、表單等屬性,必須由人爲來觸發。學習

  • ScriptTask

腳本任務不須要人爲的觸發,流程輪轉到腳本任務會自動執行,腳本任務能夠運用引擎依賴語言以外的腳本語言,如Groovy、JavaScript,也便可以直接在xml內容插入其餘語言的代碼。idea

  • ServiceTask

能夠不受人工干涉,流轉到自動運行,調用java中的方法。須要把類實現JavaDelegate接口,而且把這個實現類設置到服務事件的class屬性上去。spa

  • MailTask

郵件任務能夠經過activiti發送郵件,其中郵件信息經過變量方式傳遞。 .net

  • ManualTask

手動任務:activiti把手動任務看成一個空任務來處理,當到達此任務時由引擎自動完成並轉向下一個任務。插件

  • ReceiveTask

接收任務:接收任務是一個功能簡單且單一的任務,在任務建立後開始等待消息的到來,直到被觸發纔會完成任務。 code

  • BusinessRuleTask

業務規則任務,業務規則任務能夠根據流程變量的值處理預設的業務規則。

  • CallActivitiTask

當流程執行到callActivity,會建立一個新分支,它是到達調用節點的流程的分支。 這個分支會用來執行子流程,默認建立並行子流程,就像一個普通的流程。 上級流程會等待子流程完成,而後纔會繼續向下執行。

  • SubProcess

子流程:有嵌入子流程和調用子流程,嵌入子流程時主流程的一部分,只能被主流程調用;調用子流程反之。

  • Pool

  • Lane

  • ParallelGateway

並行網關:並行網關用來對併發的任務進行流程建模,它能把單條線路任務拆分紅多個路徑並行執行或將多條路線合併。 

分支: 並行後的所有外出順序流,爲每個順序流都建立一個併發分支。

匯聚: 所有到達並行網關。在此等待的進入分支。 直到所有進入順序流的分支都到達之後。 流程就會經過匯聚網關。

  • ExclusiveGateway

排他網關:排他網關用來對流程中的決定進行建模。與單純使用線上的condition有什麼區別呢,單純使用線上condition判斷,全部爲true的流程都會被執行,而使用排他網關就算有多個爲true也只會選擇第一個進行執行,若是沒有符合要求的執行流,那麼排他網關將會拋出一個異常。

  • InclusiveGateway

包容網關:包含網關融合了排它網關和並行網關的特性,排它網關運行在每條線路上設置條件,並行網關能夠同時執行多條線路,包含網關既能夠同時執行多條線路,又容許在網關上設置條件。 

分支: 所有外出順序流的條件都會被解析。結果爲true的順序流會以並行方式繼續運行。 會爲每個順序流建立一個分支。

匯聚: 所有並行分支到達包括網關。會進入等待章臺, 直到每個包括流程token的進入順序流的分支都到達。 這是與並行網關的最大不一樣。換句話說,包括網關僅僅會等待被選中運行了的進入順序流。 在匯聚以後,流程會穿過包括網關繼續運行。

  • EvetntGateway

事件網關:它容許多個輸出流指向多個不一樣的中間捕獲事件。

基於事件網關贊成依據事件推斷流向。

網關的每個外出順序流都要鏈接到一箇中間捕獲事件。 當流程到達一個基於事件網關,網關會進入等待狀態:會暫停運行。 與此同一時候,會爲每個外出順序流建立相對的事件訂閱。

注意基於事件網關的外出順序流和普通順序流不一樣。這些順序流不會真的"運行"。

相反。它們讓流程引擎去決定運行到基於事件網關的流程需要訂閱哪些事件。

要考慮下面條件:

  1. 基於事件網關必須有兩條或以上外出順序流。

     

  2. 基於事件網關後,僅僅能使用intermediateCatchEvent類型。 (activiti不支持基於事件網關後鏈接ReceiveTask。)

  3. 鏈接到基於事件網關的intermediateCatchEvent僅僅能有一條進入順序流。 

  • BoundaryEvent

邊界事件是綁定在活動上的捕獲事件、會一直監聽處於某種事件的觸發在捕獲到事件以後中斷活動,而後從邊界事件類型的數據流繼續執行。能夠捕獲信號、消息、定時器、錯誤信號

  • IntermediateCatchingEvent

中間捕獲事件,能夠捕獲信號、消息、定時器錯誤。

  • IntermediateThrowEvent

中間拋出事件:能夠拋出信號事件

  • Annotion

  • SequenceFlow

  1. 標準順序流:容許添加監聽事件。
  2. 條件順序流:能夠添加條件表達式,只有知足條件才能到達指定目標活動。
相關文章
相關標籤/搜索