1. 程式人生 > 實用技巧 >ExecutionListener,TaskListener流程監聽 和任務監聽

ExecutionListener,TaskListener流程監聽 和任務監聽

1.ExecutionListener

流程例項的啟動和結束。

選中一條連線。

節點的開始和結束。

閘道器的開始和結束。

中間事件的開始和結束。

開始時間結束或結束事件開始。

2.TaskListener

    任務偵聽器:用於在任務相關的事件發生時執行一段java邏輯或者是表示式

3. 程式碼實現 

@Slf4j
public class MyExecutionListener implements ExecutionListener, TaskListener {
    /**
     * 監聽開始結束
     * ExecutionListener類的實現
     * 
@param execution */ @Override public void notify(DelegateExecution execution) { String eventName = execution.getEventName(); // ActivitiEventType.PROCESS_STARTED if ("start".equals(eventName)) { // 流程開始 log.info("start......"); } else if
("end".equals(eventName)) { // 流程結束 log.info("end......"); } else if ("take".equals(eventName)) { // 連線監聽器 log.info("take......"); } } /** * 任務節點的監聽 * TaskListener類實現 * 說明: usertask2節點配置了處理人所以觸發assignment事件監聽, * 當任務運轉到usertask2的時候觸發了create事件。 這裡我們也可以得出一個結論:assignment事件比create先執行。 * 任務完成的時候,觸發complete事件,因為任務完成之後,要從ACT_RU_TASK中刪除這條記錄,所以觸發delete事件 *
@param delegateTask */ @Override public void notify(DelegateTask delegateTask) { String eventName = delegateTask.getEventName(); // ActivitiEventType.PROCESS_STARTED if ("create".endsWith(eventName)) { log.info("create========="); } else if ("assignment".endsWith(eventName)) { log.info("assignment========"); } else if ("complete".endsWith(eventName)) { log.info("complete==========="); } else if ("delete".endsWith(eventName)) { log.info("delete============="); } // delegateTask 可以操作activiti引擎的一些東西 } } 4. 繫結監聽的類