首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Activiti 5.19 工作流學習筆記(八):開始事件與結束事件詳解

     編輯:Java 綜合教學

Activiti 5.19 工作流學習筆記(八):開始事件與結束事件詳解

8.1 開始事件

流程進入點,永遠處於「捕獲」狀態等待觸發器。圖標內部小圖示區分類型,XML 中以子元素區分。

8.1.1 通用屬性

<startEvent id="request" activiti:initiator="xxx" />

initiator 指定流程發起人,對應程式碼:

try {
    identityService.setAuthenticatedUserId("bono");
    runtimeService.startProcessInstanceByKey("someProcessKey");
} finally {
    identityService.setAuthenticatedUserId(null);
}

8.1.2 None Start Event(無觸發器)

  • 流程定義未指定觸發條件,需程式碼啟動
  • 常用於子流程
  • XML:<startEvent id="start" name="my start event" />
  • 可配置 activiti:formKey 關聯表單

8.1.3 Timer Start Event(定時器)

  • 指定時間或週期啟動,僅支援主流程
  • 部署後自動啟動,新版本部署自動切換
  • XML 範例:
<startEvent id="theStart">
  <timerEventDefinition>
    <timeCycle>R4/2011-03-11T12:13/PT5M</timeCycle> 
  </timerEventDefinition>
</startEvent>

8.1.4 Message Start Event(訊息)

  • 透過命名訊息啟動,支援多開始事件選擇
  • 訊息名稱在流程定義中唯一
  • API:runtimeService.startProcessInstanceByMessage(...)
  • XML 需在 <definitions> 宣告 <message>

8.1.5 Signal Start Event(信號)

  • 廣播式啟動:同名信號會啟動所有匹配流程定義
  • 可由流程中間拋出或 API runtimeService.signalEventReceived() 觸發
  • 支援同步/非同步

8.1.6 Error Start Event(錯誤)

  • 僅用於子流程(Event Sub-Process),不可啟動主流程
  • 屬中斷事件

8.2 結束事件

流程終點,永遠「拋出」結果。

8.2.1 None End Event

  • 無特定結果,單純結束當前路徑
  • XML:<endEvent id="end" name="my end event" />

8.2.2 Error End Event

  • 拋出命名錯誤,由邊界錯誤事件捕獲
  • 未捕獲則拋出異常
  • XML:<errorEventDefinition errorRef="myError" />
  • errorRef 可直接引用 errorCode(Activiti 擴充)

8.2.3 Terminate End Event(終止)

  • 強制結束整個流程實例及所有子流程
  • 多實例活動僅結束當前實例
  • XML:<terminateEventDefinition activiti:terminateAll="true" />

熟悉各類事件適用場景,是設計靈活流程的關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved