监听器分为两大类,执行监听器 和 任务监听器,他们非常相似,都是流程执行到某一个环节进行监听,并调用一个java类,运行监听后所需要完成的功能,
他们的不同之处在于:执行监听器可以拿到流程实例的相关数据,比如流程实例Id等,而任务监听器,可以拿到任务的相关数据,例如任务id,任务名称等 ,第二个不同:作为监听器的运行类,执行监听器与任务监听器需要继承 不同的父类。
监听器的主要作用:可以用来指定执行人,如果是指定的环节的执行人,那这个时候就一定要使用任务监听器了,以及发送通知,通知可以是短信通知、微信通知、邮件通知等等,并且还可以处理 任务的时长
如何实现处理任务的时长:我们可以给任务加 两个监听事件,任务的开始监听 和 任务的结束监听,并记录这两个的时间点,相减就是当前任务 在该用户下 的 执行时长
- 执行监听器
- 任务监听器
模拟场景1:短信通知
流程流转到每一个节点的时候,都需要给这个用户发消息提醒执行监听器
执行监听器可以拿到流程实例的相关数据,比如流程实例Id等 ```java package com.imooc.activitiweb.listener;
import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener;
/**
- 任务监听器 需要继承TaskListener
*/
public class TkListener1 implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
} }System.out.println("执行人:"+delegateTask.getAssignee());
//根据用户名查询用户电话并调用发送短信接口
delegateTask.setVariable("delegateAssignee",delegateTask.getAssignee());
```