package com.app.mvc.schedule;
import com.app.mvc.common.SpringHelper;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* Created by jimin on 16/5/8.
*/
@Slf4j
public abstract class AbstractScheduleJob implements Job {
private static ScheduleExecuteResultDao scheduleExecuteResultDao = SpringHelper.popBean(ScheduleExecuteResultDao.class);
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
String scheduleId = groupId() + "_" + scheduleId();
log.info("定时任务[{}]开始执行", scheduleId);
ScheduleExecuteResult scheduleExecuteResult = ScheduleExecuteResult.builder().scheduleId(scheduleId).status(ScheduleExecuteStatus.RUNNING.getCode())
.build();
scheduleExecuteResultDao.save(scheduleExecuteResult);
try {
schedule(context);
scheduleExecuteResult.setStatus(ScheduleExecuteStatus.FINISHED.getCode());
} catch (Throwable t) {
scheduleExecuteResult.setStatus(ScheduleExecuteStatus.EXCEPTION.getCode());
log.error("定时任务[" + scheduleId + "]执行出现异常", t);
}
scheduleExecuteResultDao.update(scheduleExecuteResult);
log.info("定时任务[{}]执行结束", scheduleId);
}
public abstract void schedule(JobExecutionContext context) throws JobExecutionException;
public abstract String scheduleId();
public abstract String groupId();
}