监听器的使用场景:
- 动态分配节点处理人
通过监听器可以指定下一个任务处理人或者修改当前节点的任务处理人。 - 调用第三方系统
可以在监听器中发送邮件或者调用第三方的业务系统。推荐使用异步方式处理复杂的业务,防止当前监听器阻塞流程实例运转。 - 历史节点信息入库
- 获取Spring中定义的bean
监听器分类
- 从使用范围上分:执行监听器(ExecutionListener)和任务监听器(TaskListener)
- 从功能实现上分:用户自定义监听器以及系统内置监听器(主要操作历史表,如记录活动节点的开始以及结束操作)
监听器用途
1. 任务监听器仅支持作用于任务节点
任务监听器支持的事件类型有如下四种:
- 节点分配处理人(assignment)
- 创建节点(create)
- 任务完成(complete)
- 任务删除(delete)
2. 执行监听器可以作用于流程三大要素(?)等,执行监听器的使用范围比任务监听器广。
执行监听器支持的事件类型有如下三种:
- 开始(start)
- 结束(end)
- 途径连线(take)——“take”事件执行监听器仅支持在连线中进行配置和使用,例如当前节点完成之后途径连线到达目标节点,那么就会触发连线上配置的执行监听器。
Activiti创建监听器的三种方式
- class:指定类路径,指定的类需要实现ExecutionListener接口或者TaskListener接口
- expression:表达式创建。在表达式中指明需要调用的类及方法,且可以为需要调用的方法传人参数。形如${bean.doSomething(execution)}
- delegateExpression:通常与Spring框架配合使用。
设计思想
将运行数据与历史数据完全分开存储——运行表与历史表(ACT_HI_ACTINST)