activiti--事件監聽


 

一、activiti的監聽器分為:全局監聽、連線監聽、節點監聽。

 

 

 

1、節點監聽

    <userTask id="myTask" name="My Task" >
    <extensionElements>
    <activiti:taskListener event="create" class="org.activiti.MyTaskCreateListener" />
    </extensionElements>
    </userTask>

 

activiti:taskListener 元素屬性說明:

  • event (required): 事件類型.。支持的類型有:

    • create: 任務被創建,並且所有的屬性都被設置好后。

    • assignment: 任務被委派給某人后.。注意: 當流程執行到達一個userTask時,會先觸發一個assignment事件,再觸發create事件。

    • complete:在任務完成后,且被從運行時數據(runtime data)中刪除前觸發。

    • delete: 在任務將要被刪除之前發生。注意,當任務通過completeTask完成任務時,它也會被執行。

  • class: 必須調用的委托類。 一定要實現 org.activiti.engine.delegate.TaskListenerinterface接口。

 
         
public class MyTaskListener implements TaskListener { public void notify(DelegateTask delegateTask) { String eventName = delegateTask.getEventName(); if ("create".endsWith(eventName)) { System.out.println("create========="); }else if ("assignment".endsWith(eventName)) { System.out.println("assignment========"+delegateTask.getAssignee()); }else if ("complete".endsWith(eventName)) { System.out.println("complete==========="); }else if ("delete".endsWith(eventName)) { System.out.println("delete============="); } } }
 

 

2、全局監聽

public class MyExecutionListener implements ExecutionListener {

    public void notify(DelegateExecution delegateExecution) throws Exception {

        String eventName = delegateExecution.getEventName();
        
        if ("start".equals(eventName)) {
            System.out.println("start=========");
        }else if ("end".equals(eventName)) {
            System.out.println("end=========");
        } else if ("take".equals(eventName)) {//連線監聽
            System.out.println("take=========");
        }
    }
}

 

 

package com.example.linster;

import org.activiti.engine.RepositoryService;
import org.activiti.engine.TaskService;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.engine.impl.context.Context;

public class MyTaskLinster implements TaskListener{

    private static final long serialVersionUID = 1L;

    @Override
    public void notify(DelegateTask delegateTask) {
        /**
         * 
            create: 任務被創建,並且所有的屬性都被設置好后。
            assignment: 任務被委派給某人后.。注意: 當流程執行到達一個userTask時,會先觸發一個assignment事件,再觸發create事件。
            complete:在任務完成后,且被從運行時數據(runtime data)中刪除前觸發。
            delete: 在任務將要被刪除之前發生。注意,當任務通過completeTask完成任務時,它也會被執行。
         */
        //獲取流程引擎相關服務
        ProcessEngineConfigurationImpl processEngineConfiguration = Context.getProcessEngineConfiguration();
        RepositoryService repositoryService = processEngineConfiguration.getRepositoryService();
        TaskService taskService = processEngineConfiguration.getTaskService();
        
        System.out.println(repositoryService);
        String eventName = delegateTask.getEventName();
        //String[] empLoyees = {"馮小剛經紀人","范冰冰經紀人","馮小剛"};
        //delegateTask.addCandidateUsers(Arrays.asList(empLoyees));//完成多處理人的指定
        //獲取流程參數
        //Map<String,Object> map = delegateTask.getVariables();
        System.out.println("任務事件--------------------------"+eventName);
        if ("create".endsWith(eventName)) {
            //
            System.out.println(delegateTask.getAssignee());
            //獲取任務ID
            System.out.println(delegateTask.getId());
            //獲取任務key
            //delegateTask.getTaskDefinitionKey()
            System.out.println("create=========");
        }else if ("assignment".endsWith(eventName)) {
            System.out.println("assignment========"+delegateTask.getAssignee());
        }else if ("complete".endsWith(eventName)) {
            System.out.println("complete===========");
        }else if ("delete".endsWith(eventName)) {
            System.out.println("delete=============");
        }
        
    }

}

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM