本文共738字 阅读约需1分钟
前端的处理比较简单,在场景的配置里加一个“定时构建开关”和“cron表达式配置”
对应数据库新增字段 timing_task_switch和cron
关于Springboot接入可动态修改的定时任务可参考《SpringBoot 动态修改定时任务频率》,下面开始讲解平台内接入的具体代码。
在修改集合配置内容的代码内加入定时任务处理的代码
@Override
public ResponseVo updateCollectionInfo(CollectionDetail collectionDetail) {
int i = apiTestCollectionMapper.updateCollection(collectionDetail);
// 定时任务处理
if (future != null){
future.cancel(true);
}
if (collectionDetail.getTimingTaskSwitch()){
String cron = collectionDetail.getCron();
if (!FormatValid.isCron(cron)){
return ResponseVo.isFalse("cron表达式格式错误");
}
timingTaskStart(collectionDetail);
}
if (i != 1){
ResponseVo.isFalse("更新异常,请联系开发人员");
}
return ResponseVo.success("更新成功!");
}
在修改集合配置内容的代码内加入定时任务处理的代码
private void timingTaskStart(CollectionDetail collectionDetail) {
future = threadPoolTaskScheduler.schedule(new MyRunnable(collectionDetail), new Trigger(){
@Override
public Date nextExecutionTime(TriggerContext triggerContext){
return new CronTrigger(collectionDetail.getCron()).nextExecutionTime(triggerContext);
}
});
}
private class MyRunnable implements Runnable {
private CollectionDetail collectionDetail;
public MyRunnable(CollectionDetail collectionDetail){
this.collectionDetail = collectionDetail;
}
@Override
public void run() {
log.info("正在进行定时构建");
// TODO: 定时脚本后续业务
}
}
然后只要在前端开启定时任务开关,就会根据cron表达式的规则去执行后续逻辑。