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. 綁定監聽的類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章