最近有个需求,需要实现审批任务超时自动跳过的功能,虽然flowable自带的边缘事件也可以快速的实现,但使用自定义的作业处理器更加灵活方便,能处理更复杂的业务逻辑。
1. 开启定时任务
flowable:
async-executor-activate: true
2. 实现自定义作业处理器
Flowable采用HashMap(<type -> JobHandler>)
维护全局的作业处理器集合jobHandlers
,在ProcessEngineConfigurationImpl.java的initJobHandlers方法
中初始化了8个默认的作业处理器以及自定义作业处理器,源码如下:
public void initJobHandlers() {
jobHandlers = new HashMap<>();
AsyncContinuationJobHandler asyncContinuationJobHandler = new AsyncContinuationJobHandler();
jobHandlers.put(asyncContinuationJobHandler.getType(), asyncContinuationJobHandler);
AsyncTriggerJobHandler asyncTriggerJobHandler = new AsyncTriggerJobHandler();
jobHandlers.put(asyncTriggerJobHandler.getType(), asyncTriggerJobHandler);
TriggerTimerEventJobHandler triggerTimerEventJobHandler = new TriggerTimerEventJobHandler();
jobHandlers.put(triggerTimerEventJobHandler.getType(), triggerTimerEventJobHandler);
TimerStartEventJobHandler timerStartEvent = new TimerStartEventJobHandler();
jobHandlers.put(timerStartEvent.getType(), timerStartEvent);
TimerSuspendProcessDefinitionHandler suspendProcessDefinitionHandler =