camunda_16_listener
Java 調用方式
對于內置流程引擎的應用, 可以在流程流轉時調用 Java 邏輯, 最主要有三種形式的 Java 調用方式:
-
Java Delegate: Service Task 組件如選擇 Java class, 即是 Java Delegate, 該類需要實現
JavaDelegate接口 -
Execution Listener: 幾乎所有組件可以增加 Execution Listener, 該 Java 類需要實現
ExecutionListner接口- 組件有 start 和 end 兩個觸發點
- Sequence path 有 take 觸發點, 可用來 trace 路徑選擇.
-
Task Listener: 對于 User task 組件可以增加 Task Listener, 常用 create/assignment/complete 幾個觸發點, 該 Java 類需要實現
TaskListener接口, Task Listener 要比 Execution Listener 提供更詳細的 runtime 信息. -
ExecutionListener 和 taskListener 常用event的執行順序圖:

代碼范式
三種 Java 調用方式的代碼實現類似, 都是實現指定的接口, 在代碼中也遵循同樣代碼范式, 常用到的代碼片段有:
- 拋出Bpmn異常
- 在執行過程中為 process設置更有意義的Business Key
- 獲取ProcessEngine和幾個主要的服務, 完成更多操作.
public void execute(DelegateExecution execution) throws Exception {
ProcessEngine engine = execution.getProcessEngine();
RepositoryService repService = engine.getRepositoryService();
RuntimeService runtimeService = engine.getRuntimeService();
FormService formService = engine.getFormService();
HistoryService historyService = engine.getHistoryService();
TaskService taskService = engine.getTaskService();
ManagementService managementService = engine.getManagementService();
execution.setProcessBusinessKey("some key");
throw new BpmnError("some error");
}

浙公網安備 33010602011771號