添加默认的触发器

This commit is contained in:
wangkang
2017-07-29 10:18:35 +08:00
parent 5befd8287f
commit f3752c1d6c
5 changed files with 185 additions and 1 deletions
@@ -21,4 +21,10 @@ public interface ISchedulerLog {
*/
public void save(String log);
/**
* 描述 : 清理日志
*
*/
public void clearScheduledLog();
}
@@ -30,4 +30,10 @@ public interface ITriggerLog {
*/
public void delete(String fireInstanceId);
/**
* 描述 : 清理日志
*
*/
public void clearScheduledTriggerLog();
}
@@ -11,18 +11,25 @@ import java.util.Properties;
import javax.sql.DataSource;
import org.quartz.JobDetail;
import org.quartz.JobListener;
import org.quartz.SchedulerListener;
import org.quartz.Trigger;
import org.quartz.TriggerListener;
import org.quartz.spi.JobFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.JobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import com.egridcloud.udf.scheduler.job.ClearScheduledLog;
import com.egridcloud.udf.scheduler.job.ClearScheduledTriggerLog;
import com.egridcloud.udf.scheduler.listener.JobDetailListener;
import com.egridcloud.udf.scheduler.listener.SchListener;
import com.egridcloud.udf.scheduler.listener.TriggerDetailListener;
@@ -36,6 +43,11 @@ import com.egridcloud.udf.scheduler.listener.TriggerDetailListener;
@Configuration
public class SchedulerConfig {
/**
* 描述 : DEF_GROUP_NAME
*/
private static final String DEF_GROUP_NAME = "SystemAutoRun";
/**
* 描述 : schedulerProperties
*/
@@ -64,13 +76,19 @@ public class SchedulerConfig {
* @param schListener schListener
* @param jobDetailListener jobDetailListener
* @param triggerDetailListener triggerDetailListener
* @param clearScheduledLogTrigger clearScheduledLogTrigger
* @param clearScheduledTriggerLogTrigger clearScheduledTriggerLogTrigger
* @return SchedulerFactoryBean
* @throws IOException IOException
*/
@Bean
public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource, JobFactory jobFactory,
Properties quartzProperties, SchedulerListener schListener, JobListener jobDetailListener,
TriggerListener triggerDetailListener) throws IOException {
TriggerListener triggerDetailListener,
@Qualifier("clearScheduledLogTrigger") Trigger clearScheduledLogTrigger,
@Qualifier("clearScheduledTriggerLogTrigger") Trigger clearScheduledTriggerLogTrigger)
throws IOException {
//实例化
SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setDataSource(dataSource);
factory.setJobFactory(jobFactory);
@@ -85,6 +103,8 @@ public class SchedulerConfig {
factory.setSchedulerListeners(schListener);
factory.setGlobalJobListeners(jobDetailListener);
factory.setGlobalTriggerListeners(triggerDetailListener);
//添加默认的job
factory.setTriggers(clearScheduledLogTrigger, clearScheduledTriggerLogTrigger);
//返回
return factory;
}
@@ -134,4 +154,72 @@ public class SchedulerConfig {
return new TriggerDetailListener();
}
/**
* 描述 : clearScheduledLogTrigger
*
* @param jobDetail jobDetail
* @return CronTriggerFactoryBean
*/
@Bean(name = "clearScheduledLogTrigger")
public CronTriggerFactoryBean clearScheduledLogTrigger(
@Qualifier("clearScheduledLogJobDetail") JobDetail jobDetail) {
CronTriggerFactoryBean factoryBean = new CronTriggerFactoryBean();
factoryBean.setDescription("清理计划任务日志");
factoryBean.setName("clearScheduledLogTrigger");
factoryBean.setGroup(DEF_GROUP_NAME);
factoryBean.setJobDetail(jobDetail);
factoryBean.setCronExpression("0 0 1 * * ? ");
return factoryBean;
}
/**
* 描述 : clearScheduledLogJobDetail
*
* @return JobDetailFactoryBean
*/
@Bean("clearScheduledLogJobDetail")
public JobDetailFactoryBean clearScheduledLogJobDetail() {
JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
factoryBean.setDescription("清理计划任务日志");
factoryBean.setName("clearScheduledLogJobDetail");
factoryBean.setGroup(DEF_GROUP_NAME);
factoryBean.setJobClass(ClearScheduledLog.class);
factoryBean.setDurability(true);
return factoryBean;
}
/**
* 描述 : clearScheduledTriggerLogTrigger
*
* @param jobDetail jobDetail
* @return CronTriggerFactoryBean
*/
@Bean(name = "clearScheduledTriggerLogTrigger")
public CronTriggerFactoryBean clearScheduledTriggerLogTrigger(
@Qualifier("clearScheduledTriggerLogJobDetail") JobDetail jobDetail) {
CronTriggerFactoryBean factoryBean = new CronTriggerFactoryBean();
factoryBean.setDescription("清理计划任务执行日志");
factoryBean.setName("clearScheduledTriggerLogTrigger");
factoryBean.setGroup(DEF_GROUP_NAME);
factoryBean.setJobDetail(jobDetail);
factoryBean.setCronExpression("0 0 2 * * ? ");
return factoryBean;
}
/**
* 描述 : clearScheduledTriggerLogJobDetail
*
* @return JobDetailFactoryBean
*/
@Bean("clearScheduledTriggerLogJobDetail")
public JobDetailFactoryBean clearScheduledTriggerLogJobDetail() {
JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
factoryBean.setDescription("清理计划任务执行日志");
factoryBean.setName("clearScheduledTriggerLogJobDetail");
factoryBean.setGroup(DEF_GROUP_NAME);
factoryBean.setJobClass(ClearScheduledTriggerLog.class);
factoryBean.setDurability(true);
return factoryBean;
}
}
@@ -0,0 +1,42 @@
/**
* ClearScheduledLog.java
* Created at 2017-06-01
* Created by Administrator
* Copyright (C) 2016 egridcloud.com, All rights reserved.
*/
package com.egridcloud.udf.scheduler.job;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.egridcloud.udf.scheduler.AbstractBaseJob;
import com.egridcloud.udf.scheduler.ISchedulerLog;
/**
* <p>
* ClassName: ClearScheduledLog
* </p>
* <p>
* Description: 清理计划任务日志
* </p>
* <p>
* Author: wangkang
* </p>
* <p>
* Date: 2014年3月7日
* </p>
*/
@DisallowConcurrentExecution
public class ClearScheduledLog extends AbstractBaseJob {
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext)
throws JobExecutionException {
ISchedulerLog schedulerLog = this.getApplicationContext().getBean(ISchedulerLog.class);
if (schedulerLog != null) {
schedulerLog.clearScheduledLog();
}
}
}
@@ -0,0 +1,42 @@
/**
* ClearScheduledTriggerLog.java
* Created at 2017-06-01
* Created by Administrator
* Copyright (C) 2016 egridcloud.com, All rights reserved.
*/
package com.egridcloud.udf.scheduler.job;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.egridcloud.udf.scheduler.AbstractBaseJob;
import com.egridcloud.udf.scheduler.ITriggerLog;
/**
* <p>
* ClassName: ClearScheduledTriggerLog
* </p>
* <p>
* Description: 清理计划任务执行日志
* </p>
* <p>
* Author: wangkang
* </p>
* <p>
* Date: 2014年3月7日
* </p>
*/
@DisallowConcurrentExecution
public class ClearScheduledTriggerLog extends AbstractBaseJob {
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext)
throws JobExecutionException {
ITriggerLog triggerLog = this.getApplicationContext().getBean(ITriggerLog.class);
if (triggerLog != null) {
triggerLog.clearScheduledTriggerLog();
}
}
}