QuartzJobUtil.java 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package jnpf.flowable.job;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.quartz.*;
  4. import org.quartz.impl.StdSchedulerFactory;
  5. import java.util.Date;
  6. /**
  7. * 类的描述
  8. *
  9. * @author JNPF@YinMai Info. Co., Ltd
  10. * @version 5.0.x
  11. * @since 2024/9/20 16:48
  12. */
  13. @Slf4j
  14. public class QuartzJobUtil {
  15. private static final SchedulerFactory schedulerFactory = new StdSchedulerFactory();
  16. public static void addJob(String jobName, String cron, Class<? extends Job> jobClass, JobDataMap jobDataMap, Date startDate, Date endDate) {
  17. if (jobDataMap == null) {
  18. jobDataMap = new JobDataMap();
  19. }
  20. JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName).setJobData(jobDataMap).build();
  21. Trigger trigger = TriggerBuilder.newTrigger()
  22. .forJob(jobDetail)
  23. .withIdentity(jobName)
  24. .withSchedule(CronScheduleBuilder.cronSchedule(cron))
  25. .startAt(startDate == null ? new Date() : startDate)
  26. .endAt(endDate != null ? endDate : null)
  27. .build();
  28. try {
  29. //获取实例化的 Scheduler。
  30. Scheduler scheduler = getScheduler();
  31. //将任务及其触发器放入调度器
  32. scheduler.scheduleJob(jobDetail, trigger);
  33. //调度器开始调度任务
  34. if (!scheduler.isShutdown()) {
  35. scheduler.start();
  36. }
  37. } catch (SchedulerException e) {
  38. log.error("新增调度失败:" + e.getMessage());
  39. }
  40. }
  41. private static Scheduler getScheduler() {
  42. try {
  43. return schedulerFactory.getScheduler();
  44. } catch (SchedulerException e) {
  45. e.getMessage();
  46. }
  47. return null;
  48. }
  49. public static void deleteJob(String jobName) {
  50. try {
  51. TriggerKey triggerKey = TriggerKey.triggerKey(jobName);
  52. Scheduler scheduler = getScheduler();
  53. scheduler.pauseTrigger(triggerKey);
  54. scheduler.unscheduleJob(triggerKey);
  55. scheduler.deleteJob(JobKey.jobKey(jobName));
  56. } catch (SchedulerException e) {
  57. e.getMessage();
  58. }
  59. }
  60. }