2013-09-16 2 views
0

У меня есть задача, которую нужно выполнять каждый четверг, но если день - это особый праздник, такой как Рождество, задача должна быть изменена на другой день (среда или пятница), поэтому я получаю общее выражение плюс некоторые специальные даты, как я должен объединить все эти выражения в одном выражении cron, которое будет использоваться в Quartz? Благодарю.Как совместить выражения cron?

ответ

0

Я не думаю, что вы можете сделать это только с одним выражением, так как нельзя указывать праздники.

Но вы можете определить два триггера T1 и T2 и "умнее" Job J1:

  • Триггер T1 на J1 что пожары каждый четверг с использованием HolidayCalendar, который исключает произвольные дни от запуска выполнения задания

    //Define an HolidayCalendar and add it to Scheduler 
    HolidayCalendar cal = new HolidayCalendar(); 
    cal.addExcludedDate(someDate); 
    sched.addCalendar("myHolidays", cal, false); 
    
    //Create the trigger T1 to use the holydayCalendar 
    ... 
    triggerT1.setCalendarName("myHolidays"); 
    
    //schedule job with trigger T1 
    
  • Определение триггера T2 на J1, что пожары на alterantive дня вы выбираете (среду или пятницу).

  • Задание J1 должно решить, следует ли начинать свою бизнес-логику или не использовать HolydayCalendar. Есть много способов сделать это, для Exemple:

    //Get Holyday calendar from Scheduler instance 
    HolidayCalendar cal = sched.getCalendar("myHolidays"); 
    
    //Decide here if execute or not 
    if (today is an "alternative" day && lastThursday is an holiday) { 
        //Job real business logic 
    } 
    

Смотрите эту Quartz tutorial для получения дополнительной Exemple о Quartz Календарей.

Также вы можете использовать this tool для создания кварцевых выражений Cron.

Надеюсь, это поможет!

Смежные вопросы