初始化 quartz 模块~

This commit is contained in:
YunaiV
2021-02-13 21:13:09 +08:00
parent 2f66829a41
commit c807de1ff8
29 changed files with 440 additions and 855 deletions

View File

@ -1 +0,0 @@
package cn.iocoder.dashboard.modules.infra.controller;

View File

@ -0,0 +1,97 @@
package cn.iocoder.dashboard.modules.infra.dal.dataobject.job;
import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.dashboard.modules.infra.enums.job.InfJobStatusEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.util.Date;
/**
* 定时任务表
*
* @author 芋道源码
*/
@TableName("inf_job")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class InfJob extends BaseDO {
/**
* 任务编号
*/
@TableId
private Long id;
/**
* 任务名称
*/
private String name;
/**
* 任务分组
*/
@TableField("`group`")
private String group;
/**
* 任务状态
*
* 枚举 {@link InfJobStatusEnum}
*/
private Integer status;
/**
* 处理器的名字
*/
private String handlerName;
/**
* 处理器的参数
*/
private String handlerParam;
// ========== 时间相关字段 ==========
/**
* CRON 表达式
*/
private String cronExpression;
/**
* 最后一次执行的开始时间
*
* 该字段在任务执行结束后,进行记录
*/
private Date executeBeginTime;
/**
* 最后一次执行的结束时间
*
* 该字段在任务执行结束后,进行记录
*/
private Date executeEndTime;
/**
* 上一次触发时间,来自 Quartz SCHE_TRIGGERS 表
*/
private Date firePrevTime;
/**
* 下一次触发时间,来自 Quartz SCHE_TRIGGERS 表
*
* 在触发器状态从 `ACQUIRED` 变成 `BLOCKED` 时,就会更新 PREV_FIRE_TIME、NEXT_FIRE_TIME然后定时任务才正式开始执行
*/
private Date fireNextTime;
// ========== 监控相关字段 ==========
/**
* 监控开关
*/
private Boolean monitorSwitch;
/**
* 监控超时时间,单位:毫秒
*/
private Integer monitorTimeout;
// TODO misfirePolicy
// TODO concurrent
// TODO 失败重试
}

View File

@ -0,0 +1,89 @@
package cn.iocoder.dashboard.modules.infra.dal.dataobject.job;
import cn.iocoder.dashboard.common.pojo.CommonResult;
import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.util.Date;
/**
* 定时任务的执行日志 sys_job_log
*
* @author 芋道源码
*/
@TableName("inf_job_log")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class InfJobLog extends BaseDO {
/**
* 日志编号
*/
private Long id;
/**
* 任务编号
*
* 关联 {@link InfJob#getId()}
*/
private Long jobId;
/**
* 任务名称
*
* 冗余字段 {@link InfJob#getName()}
*/
private String jobName;
/**
* 任务分组
*
* 冗余字段 {@link InfJob#getGroup()}
*/
private String jobGroup;
/**
* 处理器的名字
*
* 冗余字段 {@link InfJob#getHandlerName()}
*/
private String handlerName;
/**
* 处理器的参数
*
* 冗余字段 {@link InfJob#getHandlerParam()}
*/
private String handlerParam;
/**
* 开始执行时间
*/
private Date startTime;
/**
* 结束执行时间
*/
private Date endTime;
/**
* 执行时长,单位:毫秒
*/
private Integer duration;
/**
* 结果码
*
* 目前使用的 {@link CommonResult#getCode()} 属性
*/
private Integer resultCode;
/**
* 结果提示
*
* 目前使用的 {@link CommonResult#getMsg()} 属性
*/
private String resultMsg;
/**
* 结果数据
*
* 如果是对象,则使用 JSON 格式化
*/
private String resultData;
}

View File

@ -1 +0,0 @@
package cn.iocoder.dashboard.modules.infra.dal.dataobject;

View File

@ -0,0 +1,47 @@
package cn.iocoder.dashboard.modules.infra.enums.job;
import com.google.common.collect.Sets;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Collections;
import java.util.Set;
import static org.quartz.impl.jdbcjobstore.Constants.*;
/**
* 任务状态的枚举
*
* @author 芋道源码
*/
@Getter
@AllArgsConstructor
public enum InfJobStatusEnum {
/**
* 初始化中
*/
INIT(0, Collections.emptySet()),
/**
* 开启运行
*/
NORMAL(1, Sets.newHashSet(STATE_WAITING, STATE_ACQUIRED, STATE_BLOCKED)),
/**
* 异常运行
*/
EXCEPTION(2, Sets.newHashSet(STATE_COMPLETE)),
/**
* 暂停运行
*/
STOP(3, Sets.newHashSet(STATE_PAUSED, STATE_PAUSED_BLOCKED));
/**
* 状态
*/
private final Integer status;
/**
* 对应的 Quartz 触发器的状态集合
*/
private final Set<String> quartzStates;
}