主要应用场景
- 动态分配处理人,通过监听器指定下一个任务的处理人或者修改当前处理人
- 调用第三方服务,在监听器上发送邮件或者调用第三方的业务系统。调用第三方系统的时候最好使用异步方式处理复杂的业务,以防止当前监听器阻塞流程实例的流转
- 历史节点信息入库
- 获取spring容器的bean,监听器调用spring容器的bean。
监听器分类
- 从监听器使用范围上可以分为执行监听器和任务监听器
- 从功能实现上可以分为自定义监听器和系统内置记录监听器
任务监听器仅支持作用于任务节点,而执行监听器可以作用于流程三大要素等,使用范围更广。
任务监听器的事件类型:
- 节点分配处理人(assignment)
- 创建节点(create)
- 任务完成(complete)
- 任务删除(delete)
执行监听器的事件类型:
- 开始(start)
- 结束(end)
- 途径连线(take) 仅支持在连线中使用
监听器使用需要实现不同的接口:任务监听器使用TaskListener,执行监听器使用ExecutionListener。
Activiti中监听器创建有三种方式:
- class 指定类路径 指定的类需要实现ExecutionListener接口或者TaskListener接口
- expression 表达式方式创建,这种方式在表达式中已经明确指定需要调用的类以及方法、参数。例如 ${bean.doSomething(execution)}
- delegateExpression 该方式通常与Spring框架配合起来使用