定时调度
定时调度,主要用于定时任务实现流程提醒超时处理类,可以查看源码
flowlong-spring-boot-example
模块相关配置。
- 业务需实现抽象类
com.aizuda.bpm.engine.FlowLongScheduler
当前内置单机实例处理。 - 分布式框架多实例部署,请重写该类采用分布式调度实现。
调度流程图

定时调度SpringBoot
实现
继承抽象类
FlowLongScheduler
实现SchedulingConfigurer
接口。
java
// 该类为 `SpringBoot` 实现本地实时调度
public class BpmScheduler extends FlowLongScheduler implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(this::remind, triggerContext ->
new CronTrigger(getRemindParam().getCron()).nextExecution(triggerContext));
}
}
配置参数
设置抽象类
FlowLongScheduler
属性remindParam
提醒参数。未配置定时任务提醒参数,默认cron
为5秒钟
执行一次
java
public class RemindParam {
/**
* 提醒时间 cron 表达式
*/
private String cron;
/**
* 工作日设置,格式为 1,2,3...7,表示周一至周日
*/
private String weeks;
/**
* 工作时间设置,格式为 8:00-18:00
*/
private String workTime;
}
调度任务锁
- 避免重复调度执行任务,导致多次执行通知等业务逻辑。
默认注入
ReentrantLock
本地防重入锁,如果是分布式部署可以使用redis
等实现JobLock
接口支持分布式锁。
java
public interface JobLock {
/**
* 进入锁(获取锁),立即返回,不会阻塞等待锁
*
* @return true 获取到锁 false 未获取到锁
*/
boolean tryLock();
/**
* 解除锁
*/
void unlock();
}