activiti總結(三)監聽器

activiti總結(三)監聽器

activiti監聽器有兩種,一種是TaskListeners,一種是ExecutionListeners。java

1、TaskListener

TaskListener是一個任務監聽器接口,擁有一個方法notify ,設置任務監聽器時能夠選擇四種類型的觸發事件,分別是create,assigin,delete,all。當一個任務開始執行某個事件時,監聽器中的代碼就會自動執行而不須要手動調用。spring

當使用spring整合activiti時,使用監聽器要注意一點,那就是監聽器的bean並不歸spring管理,要正常使用監聽器,監聽器實現類須要還須要實現activiti的JavaDelegate。代碼以下:ide

package com.oms.lisener;

import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.JavaDelegate;
import org.activiti.engine.delegate.TaskListener;

import java.util.Map;

/** * 描述: * 提出請假申請監聽器 * * @author Zhouyz * @create 2019-06-05 17:12 */

public class ApplyForRepairImpl implements JavaDelegate, TaskListener {

    @Override
    public void execute(DelegateExecution delegateExecution) {
        System.out.println("---------------------------------------------------維修請求");
    }

    @Override
    public void notify(DelegateTask delegateTask) {
        delegateTask.getOwner();
        System.out.println("----------------------" + delegateTask.getOwner() + "-----------------------------維修請求----------------------notify");
        Map varis = delegateTask.getVariables();
        //這裏要記得作異常處理
        delegateTask.setOwner(varis.get("owner").toString());
        delegateTask.setAssignee(varis.get("assignee").toString());
    }
}
複製代碼

2、ExcutionListener

ExcutinerLister的用法和TaskListener相似,可是他們監聽的事件不同,ExcutionListener監聽的時工做流的狀態改變,被觸發的事件有三種:start,end,take。在spring中使用時一樣要實現JavaDelegate接口。代碼以下:spa

package com.oms.lisener;

import org.activiti.engine.delegate.*;

/** * 描述: * 領導審批任務監聽器 * * @author Zhouyz * @create 2019-06-06 11:11 */

public class LeaderCheck implements JavaDelegate, ExecutionListener {
    @Override
    public void execute(DelegateExecution delegateExecution) {
        System.out.println("------------------do nothing--------------");
    }


    @Override
    public void notify(DelegateExecution delegateExecution) {
        System.out.println("-----------流程實例id" + delegateExecution.getProcessInstanceId() + "-------------notify");
    }
}
複製代碼

3、使用監聽器

  • 添加task或者其餘結構的listener

5cfc840318d5a11549

  • 選擇剛剛寫好的監聽器實現類

5cfc84ab020de88418

  • 大功告成
相關文章
相關標籤/搜索