监听器分为两大类,执行监听器 和 任务监听器,他们非常相似,都是流程执行到某一个环节进行监听,并调用一个java类,运行监听后所需要完成的功能,
他们的不同之处在于:执行监听器可以拿到流程实例的相关数据,比如流程实例Id等,而任务监听器,可以拿到任务的相关数据,例如任务id,任务名称等 ,第二个不同:作为监听器的运行类,执行监听器与任务监听器需要继承 不同的父类。
监听器的主要作用:可以用来指定执行人,如果是指定的环节的执行人,那这个时候就一定要使用任务监听器了,以及发送通知,通知可以是短信通知、微信通知、邮件通知等等,并且还可以处理 任务的时长
如何实现处理任务的时长:我们可以给任务加 两个监听事件,任务的开始监听 和 任务的结束监听,并记录这两个的时间点,相减就是当前任务 在该用户下 的 执行时长

  • 执行监听器
  • 任务监听器

    模拟场景1:短信通知

    流程流转到每一个节点的时候,都需要给这个用户发消息提醒
    image.png

    执行监听器

    执行监听器可以拿到流程实例的相关数据,比如流程实例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) {
    1. System.out.println("执行人:"+delegateTask.getAssignee());
    2. //根据用户名查询用户电话并调用发送短信接口
    3. delegateTask.setVariable("delegateAssignee",delegateTask.getAssignee());
    } }

```