package com.stylefeng.guns.modular.system.util.quartz.model;
|
|
import com.stylefeng.guns.core.util.ToolUtil;
|
import lombok.Data;
|
import lombok.Getter;
|
import lombok.extern.slf4j.Slf4j;
|
import org.quartz.Job;
|
import org.quartz.JobDataMap;
|
import org.quartz.JobExecutionContext;
|
import org.quartz.JobExecutionException;
|
|
/**
|
* quartz任务类
|
* @author zhibing.pu
|
* @Date 2024/3/20 11:14
|
*/
|
@Slf4j
|
@Data
|
public abstract class QuartzJob implements Job {
|
/**
|
* 任务名称
|
*/
|
@Getter
|
private String name;
|
/**
|
* 任务分组
|
*/
|
@Getter
|
private String group;
|
/**
|
* 自定义参数
|
*/
|
@Getter
|
private JobDataMap jobDataMap;
|
|
|
/**
|
* 构建QuartzJob对象
|
* @return
|
*/
|
public QuartzJob buildQuartzJob() {
|
return buildQuartzJob(QuartzEnum.JOB_NAME.getValue());
|
}
|
|
|
|
/**
|
* 构建QuartzJob对象
|
* @param name 任务名称
|
* @return
|
*/
|
public QuartzJob buildQuartzJob(String name) {
|
return buildQuartzJob(name, QuartzEnum.DEFAULT_GROUP.getValue());
|
}
|
|
|
|
/**
|
* 构建QuartzJob对象
|
* @param name 任务名称
|
* @param group 任务分组名称
|
* @return
|
*/
|
public QuartzJob buildQuartzJob(String name, String group) {
|
return buildQuartzJob(name, QuartzEnum.DEFAULT_GROUP.getValue(), null);
|
}
|
|
/**
|
* 构建QuartzJob对象
|
* @param name 任务名称
|
* @param group 任务分组名称
|
* @param jobDataMap 自定义参数
|
* @return
|
*/
|
public QuartzJob buildQuartzJob(String name, String group, JobDataMap jobDataMap) {
|
if(ToolUtil.isNotEmpty(name)){
|
this.name = name;
|
}else{
|
this.name = QuartzEnum.JOB_NAME.getValue();
|
}
|
if(ToolUtil.isNotEmpty(group)){
|
this.group = group;
|
}else{
|
this.group = QuartzEnum.DEFAULT_GROUP.getValue();
|
}
|
this.jobDataMap = jobDataMap;
|
return this;
|
}
|
|
/**
|
* 需要执行的任务的业务逻辑方法
|
* @param jobExecutionContext 定时任务上下文对象
|
*/
|
public abstract void run(JobExecutionContext jobExecutionContext);
|
|
/**
|
* 执行器执行任务调用的方式
|
* @param jobExecutionContext 定时任务上下文对象
|
* @throws JobExecutionException
|
*/
|
@Override
|
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
String name = jobExecutionContext.getJobDetail().getKey().getName();
|
log.info(name + " scheduled task start!");
|
run(jobExecutionContext);
|
}
|
|
}
|