Flowable 中常见的 监听器接口和抽象类 的详细分类
✅ 一、按监听器类型分类
类型 | 接口/抽象类 | 作用对象 | 是否可配置为全局 | 描述 |
---|
Execution Listener(执行监听器) | org.flowable.engine.delegate.ExecutionListener | 流程实例、执行流(Execution) | ❌ 不支持直接全局配置 | 监听流程生命周期事件,如流程启动、节点进入/离开等 |
Task Listener(任务监听器) | org.flowable.engine.delegate.TaskListener | 用户任务(User Task) | ✅ 支持通过 API 或配置注册为全局监听器 | 监听用户任务的创建、分配、完成等事件 |
Global Event Listener(全局事件监听器) | org.flowable.eventregistry.FlowableEventListener 或 org.flowable.common.engine.api.delegate.event.AbstractFlowableEventListener | 引擎级别事件(如 ACTIVITY_COMPLETED、TASK_CREATED 等) | ✅ 全局生效 | 可以监听任意事件,适用于整个引擎 |
✅ 二、按接口/抽象类功能分类
1. 面向流程执行的监听器
2. 面向用户任务的监听器
3. 通用事件监听器(全局监听器)
✅ 三、按监听事件来源分类
来源 | 示例事件 | 对应监听器 |
---|
流程执行 | 流程启动、结束,节点进入、离开 | ExecutionListener |
用户任务 | 创建、分配、完成、添加评论等 | TaskListener |
引擎事件 | 任何类型的事件(ACTIVITY_STARTED, TASK_ASSIGNED, PROCESS_COMPLETED 等) | AbstractFlowableEventListener |
✅ 四、常见监听事件类型(供参考)
FlowableEngineEventType.PROCESS_STARTED
FlowableEngineEventType.PROCESS_COMPLETED
FlowableEngineEventType.ACTIVITY_STARTED
FlowableEngineEventType.ACTIVITY_COMPLETED
FlowableEngineEventType.TASK_CREATED
FlowableEngineEventType.TASK_ASSIGNED
FlowableEngineEventType.TASK_COMPLETED
这些事件可以在 AbstractFlowableEventListener
中通过 getSupportedEventTypes()
方法指定监听。
✅ 五、总结对比表
分类 | 接口/类 | 作用对象 | 可否全局配置 | 是否需绑定 BPMN | 常用方法 |
---|
执行监听器 | ExecutionListener | DelegateExecution | ❌ 否 | ✅ 是(BPMN 配置) | notify(DelegateExecution) |
任务监听器 | TaskListener | DelegateTask | ✅ 是(API 注册) | ✅ 是(BPMN 配置) | notify(DelegateTask) |
全局事件监听器 | AbstractFlowableEventListener | FlowableEvent | ✅ 是 | ?? 是(BPMN 配置全局选项【事件监听】可选,【执行和任务】监听不可选) | onEvent(FlowableEvent) |
✅ 六、建议使用场景
场景 | 推荐监听器 |
---|
需要对某个服务任务、用户任务做特定处理 | ExecutionListener 或 TaskListener |
需要在所有任务创建时记录日志 | 使用 TaskListener + 全局注册 |
需要统一处理多个流程、任务、历史等事件 | AbstractFlowableEventListener |
需要细粒度控制某个任务的行为(如分配前校验) | TaskListener (局部配置) |