activiti总结(三)监听器
activiti总结(三)监听器
activiti监听器有两种,一种是TaskListeners,一种是ExecutionListeners。
一、TaskListener
TaskListener是一个任务监听器接口,拥有一个方法notify
,设置任务监听器时可以选择四种类型的触发事件,分别是create,assigin,delete,all。当一个任务开始执行某个事件时,监听器中的代码就会自动执行而不需要手动调用。
当使用spring整合activiti时,使用监听器要注意一点,那就是监听器的bean并不归spring管理,要正常使用监听器,监听器实现类需要还需要实现activiti的JavaDelegate。代码如下:
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());
}
}
二、ExcutionListener
ExcutinerLister的用法和TaskListener类似,但是他们监听的事件不一样,ExcutionListener监听的时工作流的状态改变,被触发的事件有三种:start,end,take。在spring中使用时同样要实现JavaDelegate接口。代码如下:
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");
}
}
三、使用监听器
- 添加task或者其他结构的listener

- 选择刚刚写好的监听器实现类

- 大功告成
转载自:https://juejin.cn/post/6844903861916827655