feat(admin): 新增任务管理OpenAPI并优化调度状态枚举

- 在官方文档中添加任务管理OpenAPI特性说明
- 引入TriggerStatus枚举类替代硬编码的调度状态值
- 更新XxlJobInfo模型中的调度状态字段类型注释
- 修改JobScheduleHelper中调度状态判断逻辑
- 调整XxlJobServiceImpl中任务启停状态设置方式
- 使用枚举值替换原有的数字常量提高代码可读性
3.3.0-release
xuxueli 1 week ago
parent 6ce8d108ac
commit 2818c28c35

@ -2702,7 +2702,7 @@ b、本次升级针对客户端rollinglog依赖字段做规范约束如不关
- 执行日志新增“执行RollingLog开关”任务维度自定义支持RollingLog、普通日志slf4j输出、关闭不输出
- 21、AccessToken废弃全局配置支持在线管理动态生成、动态启停
- 22、任务执行后分批批量更新提升调度性能
- 23、任务管理OpenAPI;
## 八、其他

@ -0,0 +1,32 @@
package com.xxl.job.admin.constant;
public enum TriggerStatus {
STOPPED(0, "stopped"),
RUNNING(1, "running");
private int value;
private String desc;
TriggerStatus(int value, String desc) {
this.value = value;
this.desc = desc;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}

@ -20,25 +20,25 @@ public class XxlJobInfo {
private String author; // 负责人
private String alarmEmail; // 报警邮件
private String scheduleType; // 调度类型
private String scheduleType; // 调度类型ScheduleTypeEnum
private String scheduleConf; // 调度配置,值含义取决于调度类型
private String misfireStrategy; // 调度过期策略
private String misfireStrategy; // 调度过期策略MisfireStrategyEnum
private String executorRouteStrategy; // 执行器路由策略
private String executorRouteStrategy; // 执行器路由策略ExecutorRouteStrategyEnum
private String executorHandler; // 执行器任务Handler名称
private String executorParam; // 执行器,任务参数
private String executorBlockStrategy; // 阻塞处理策略
private String executorBlockStrategy; // 阻塞处理策略ExecutorBlockStrategyEnum
private int executorTimeout; // 任务执行超时时间,单位秒
private int executorFailRetryCount; // 失败重试次数
private String glueType; // GLUE类型 #com.xxl.job.core.glue.GlueTypeEnum
private String glueType; // GLUE类型GlueTypeEnum
private String glueSource; // GLUE源代码
private String glueRemark; // GLUE备注
private Date glueUpdatetime; // GLUE更新时间
private String childJobId; // 子任务ID多个逗号分隔
private int triggerStatus; // 调度状态:0-停止1-运行
private int triggerStatus; // 调度状态:TriggerStatus
private long triggerLastTime; // 上次调度时间
private long triggerNextTime; // 下次调度时间

@ -1,5 +1,6 @@
package com.xxl.job.admin.scheduler.thread;
import com.xxl.job.admin.constant.TriggerStatus;
import com.xxl.job.admin.model.XxlJobInfo;
import com.xxl.job.admin.scheduler.config.XxlJobAdminBootstrap;
import com.xxl.job.admin.scheduler.misfire.MisfireStrategyEnum;
@ -97,7 +98,7 @@ public class JobScheduleHelper {
refreshNextTriggerTime(jobInfo, new Date());
// next-trigger-time in 5s, pre-read again
if (jobInfo.getTriggerStatus()==1 && nowTime + PRE_READ_MS > jobInfo.getTriggerNextTime()) {
if (jobInfo.getTriggerStatus()== TriggerStatus.RUNNING.getValue() && nowTime + PRE_READ_MS > jobInfo.getTriggerNextTime()) {
// 1、make ring second
int ringSecond = (int)((jobInfo.getTriggerNextTime()/1000)%60);
@ -252,7 +253,7 @@ public class JobScheduleHelper {
jobInfo.setTriggerNextTime(nextTriggerTime.getTime());
} else {
// generate fail, stop job
jobInfo.setTriggerStatus(0);
jobInfo.setTriggerStatus(TriggerStatus.STOPPED.getValue());
jobInfo.setTriggerLastTime(0);
jobInfo.setTriggerNextTime(0);
logger.error(">>>>>>>>>>> xxl-job, refreshNextValidTime fail for job: jobId={}, scheduleType={}, scheduleConf={}",
@ -260,7 +261,7 @@ public class JobScheduleHelper {
}
} catch (Throwable e) {
// generate error, stop job
jobInfo.setTriggerStatus(0);
jobInfo.setTriggerStatus(TriggerStatus.STOPPED.getValue());
jobInfo.setTriggerLastTime(0);
jobInfo.setTriggerNextTime(0);

@ -1,5 +1,6 @@
package com.xxl.job.admin.service.impl;
import com.xxl.job.admin.constant.TriggerStatus;
import com.xxl.job.admin.mapper.*;
import com.xxl.job.admin.model.XxlJobGroup;
import com.xxl.job.admin.model.XxlJobInfo;
@ -273,7 +274,7 @@ public class XxlJobServiceImpl implements XxlJobService {
long nextTriggerTime = exists_jobInfo.getTriggerNextTime();
boolean scheduleDataNotChanged = jobInfo.getScheduleType().equals(exists_jobInfo.getScheduleType())
&& jobInfo.getScheduleConf().equals(exists_jobInfo.getScheduleConf()); // 触发配置如果不变,避免重复计算;
if (exists_jobInfo.getTriggerStatus() == 1 && !scheduleDataNotChanged) {
if (exists_jobInfo.getTriggerStatus() == TriggerStatus.RUNNING.getValue() && !scheduleDataNotChanged) {
try {
// generate next trigger time
Date nextValidTime = scheduleTypeEnum.getScheduleType().generateNextTriggerTime(jobInfo, new Date(System.currentTimeMillis() + JobScheduleHelper.PRE_READ_MS));
@ -372,7 +373,7 @@ public class XxlJobServiceImpl implements XxlJobService {
return Response.ofFail ( (I18nUtil.getString("schedule_type")+I18nUtil.getString("system_unvalid")) );
}
xxlJobInfo.setTriggerStatus(1);
xxlJobInfo.setTriggerStatus(TriggerStatus.RUNNING.getValue());
xxlJobInfo.setTriggerLastTime(0);
xxlJobInfo.setTriggerNextTime(nextTriggerTime);
@ -400,7 +401,7 @@ public class XxlJobServiceImpl implements XxlJobService {
}
// stop
xxlJobInfo.setTriggerStatus(0);
xxlJobInfo.setTriggerStatus(TriggerStatus.STOPPED.getValue());
xxlJobInfo.setTriggerLastTime(0);
xxlJobInfo.setTriggerNextTime(0);

Loading…
Cancel
Save