天天看點

Flowable入門系列文章32 - Activity解讀 08

1、計時器邊界事件

描述

定時器邊界事件充當秒表和鬧鐘。當執行到達邊界事件附加的活動時,計時器啟動。當定時器觸發時(例如,在指定的時間間隔之後),活動被中斷,順序流出邊界事件。

圖形表示法

定時器邊界事件可視化為一個典型的邊界事件(邊界上的圓形),内部有計時器圖示。

Flowable入門系列文章32 - Activity解讀 08

XML表示

定時器邊界事件定義為正常邊界事件。在這種情況下,特定類型的子元素是一個timerEventDefinition元素。

<boundaryEvent id="escalationTimer" cancelActivity="true" attachedToRef="firstLineSupport">
<timerEventDefinition>
<timeDuration>PT4H</timeDuration>
</timerEventDefinition>
</boundaryEvent>
           

有關定時器配置的詳細資訊,請參閱定時器事件定義。

在圖形表示中,如上例所示,圓的線條為點狀:

Flowable入門系列文章32 - Activity解讀 08

一個典型的用例是在一段時間後發送更新電子郵件,但不會影響正常的流程。

中斷和不中斷計時器事件之間有一個關鍵的差別。不中斷意味着原始活動不會中斷,而是保持原樣。中斷行為是預設行為。在XML表示中,cancelActivity屬性設定為false:

注意:啟用作業或異步執行時邊界計時器事件僅燃煤(jobExecutorActivate或asyncExecutorActivate需要被設定為true在

flowable.cfg.xml,因為工作和異步執行預設情況下禁用)。

已知的邊界事件問題

在使用任何類型的邊界事件時,有一個關于并發性的已知問題。目前,不可能将多個外發序列流附加到邊界事件。解決這個問題的方法是使用一個去往并行網關的流出序列流。

Flowable入門系列文章32 - Activity解讀 08

2、錯誤邊界事件

描述

活動邊界上的中間捕獲錯誤或簡稱為邊界錯誤事件,會捕獲在其所定義的活動範圍内抛出的錯誤。

定義邊界錯誤事件對嵌入式子流程或調用活動最有意義,因為子流程會為子流程内的所有活動建立一個範圍。錯誤結束事件引發錯誤。這樣的錯誤會向上傳播其父作用域,直到找到一個與錯誤事件定義比對的邊界錯誤事件被定義的作用域。

當捕獲到錯誤事件時,定義邊界事件的活動将被銷毀,同時也會銷毀(并發活動,嵌套子程序等等)内的所有目前執行。在邊界事件的流出順序流程之後,流程繼續執行。

圖形表示法

邊界錯誤事件可視化為邊界上典型的中間事件(内部具有較小圓圈的圓),并在内部顯示錯誤圖示。錯誤圖示是白色的,表示它的catch語義。

Flowable入門系列文章32 - Activity解讀 08

XML表示

邊界錯誤事件被定義為典型的邊界事件:

<boundaryEvent id="catchError" attachedToRef="mySubProcess">
<errorEventDefinition errorRef="myError"/>
</boundaryEvent>
           

與錯誤結束事件一樣,errorRef引用在process元素之外定義的錯誤:

<error id="myError" errorCode="123" />
...
<process id="myProcess">
...
           

該的errorCode用來比對被發現的錯誤:

  • 如果errorRef被省略,邊界錯誤事件将捕獲任何錯誤事件,而不管的的errorCode的錯誤。
  • 如果提供了errorRef并且引用了現有的錯誤,則邊界事件将隻捕獲具有相同錯誤代碼的錯誤。
  • 如果提供了errorRef,但在BPMN 2.0檔案中沒有定義錯誤,那麼errorRef被用作errorCode(類似于錯誤結束事件)。

以下示例過程顯示了如何使用錯誤結束事件。當“稽核盈利能力”使用者任務完成時,如果提供的資訊不足,則會引發錯誤。當在子流程的邊界上發現該錯誤時,“稽核銷售主管”子流程中的所有活動活動都将被銷毀(即使“稽核客戶評級”尚未完成),以及“提供其他詳細資訊’使用者任務被建立。

Flowable入門系列文章32 - Activity解讀 08

此過程作為示範設定中的示例發貨。流程XML和單元測試可以在org.flowable.examples.bpmn.event.error包中找到。

上面文章來自盤古BPM研究院:http://vue.pangubpm.com/

文章翻譯送出:https://github.com/qiudaoke/flowable-userguide

了解更多文章可以關注微信公衆号:

Flowable入門系列文章32 - Activity解讀 08