From f3752c1d6c2f6780c4c869bcee8088aad367b4b6 Mon Sep 17 00:00:00 2001 From: wangkang Date: Thu, 1 Jun 2017 17:06:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=BB=98=E8=AE=A4=E7=9A=84?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../udf/scheduler/ISchedulerLog.java | 6 ++ .../egridcloud/udf/scheduler/ITriggerLog.java | 6 ++ .../udf/scheduler/SchedulerConfig.java | 90 ++++++++++++++++++- .../udf/scheduler/job/ClearScheduledLog.java | 42 +++++++++ .../job/ClearScheduledTriggerLog.java | 42 +++++++++ 5 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/job/ClearScheduledLog.java create mode 100644 udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/job/ClearScheduledTriggerLog.java diff --git a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/ISchedulerLog.java b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/ISchedulerLog.java index a67569c..1410ce1 100644 --- a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/ISchedulerLog.java +++ b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/ISchedulerLog.java @@ -21,4 +21,10 @@ public interface ISchedulerLog { */ public void save(String log); + /** + * 描述 : 清理日志 + * + */ + public void clearScheduledLog(); + } diff --git a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/ITriggerLog.java b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/ITriggerLog.java index 1df7f65..d9017b5 100644 --- a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/ITriggerLog.java +++ b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/ITriggerLog.java @@ -30,4 +30,10 @@ public interface ITriggerLog { */ public void delete(String fireInstanceId); + /** + * 描述 : 清理日志 + * + */ + public void clearScheduledTriggerLog(); + } diff --git a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/SchedulerConfig.java b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/SchedulerConfig.java index 881daec..0231469 100644 --- a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/SchedulerConfig.java +++ b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/SchedulerConfig.java @@ -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; + } + } diff --git a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/job/ClearScheduledLog.java b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/job/ClearScheduledLog.java new file mode 100644 index 0000000..22cb2be --- /dev/null +++ b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/job/ClearScheduledLog.java @@ -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; + +/** + *

+ * ClassName: ClearScheduledLog + *

+ *

+ * Description: 清理计划任务日志 + *

+ *

+ * Author: wangkang + *

+ *

+ * Date: 2014年3月7日 + *

+ */ +@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(); + } + } + +} diff --git a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/job/ClearScheduledTriggerLog.java b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/job/ClearScheduledTriggerLog.java new file mode 100644 index 0000000..ea7bc91 --- /dev/null +++ b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/job/ClearScheduledTriggerLog.java @@ -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; + +/** + *

+ * ClassName: ClearScheduledTriggerLog + *

+ *

+ * Description: 清理计划任务执行日志 + *

+ *

+ * Author: wangkang + *

+ *

+ * Date: 2014年3月7日 + *

+ */ +@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(); + } + } + +}