Как запустить Quartz Scheduler в предыдущий или следующий рабочий день - PullRequest
1 голос
/ 22 марта 2019

В этой статье объясняется, как исключить Quartz из запуска в определенные календарные дни, но мне нужно что-то другое, мне нужно запустить задание в предыдущий или следующий рабочий день, если триггеррезультаты календаря в праздничные дни.

Например, предположим, что задание планируется выполнять ежемесячно, включая пятницу, 29 марта 2019 г., что является выходным.

Это означает, что:

  • Не выходной: четверг, 28 марта 2019 года (когда задание должно выполняться, если оно выполняется до выходного дня)
  • Выходной: пятница, 29 марта 2019 года
  • Выходной: Суббота, 30 марта 2019 года
  • выходной: воскресенье, 31 марта 2019 года
  • не выходной: понедельник, 1 апреля 2019 года (когда задание должно выполняться, если оно выполняется после выходного дня))

Один из способов достижения этого - запускать задание каждый день и анализировать, должно ли оно выполняться в этот день или нет, и при необходимости выполнять повторный запуск, но есть ли лучший способ?

ОБНОВЛЕНИЕ

Если я чВы можете запускать работу каждый день, почему бы не использовать вместо этого Java EE 8 TimerService ?

1 Ответ

0 голосов
/ 22 марта 2019

Я бы предложил запускать его каждый рабочий день, например, с помощью Cron Expression (запускать каждый рабочий день в 17:00)

0 00 17 * * MON-FRI

и внутри функции, которая вызывается выражением Cron, вы можете вызвать holidayService.isHoliday (date), который сообщит, является ли дата выходным днем. Если это праздник, тогда вы можете пропустить запуск отчета.

...