Создание триггера, который выполняется в определенные дни недели (API Quartz Scheduler) - PullRequest
0 голосов
/ 25 января 2012

Я пытаюсь создать Trigger в Quartz Scheduler API, который должен выполняться по следующим критериям:

  1. Начало в определенную дату (25 января 2012 г.)
  2. Начало в заранее определенномвремя (08.00.00)
  3. Каждую неделю.
  4. Может быть запланировано на альтернативную неделю или каждые 3 недели (если не каждую неделю)
  5. В эти конкретные дни недели(Понедельник, вторник, пятница и т. Д.)

Я создал следующее выражение

newTrigger().withIdentity(cronTriggerDTO.getTiggerId(), "simpleGroup")
        .startAt(getTriggerExecutionDate(cronTriggerDTO))
        .withSchedule(calendarIntervalSchedule().withIntervalInWeeks 
                  (cronTriggerDTO.getWeeklyInterval())).build();

, но я не совсем понимаю, как добавить условие для выполнения этого триггера в определенные дниНеделя

Любая помощь в этом отношении будет отличной.

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 25 января 2012

Использовать DailyTimeIntervalScheduleBuilder

Set daysOfWeek = new HashSet();
daysOfWeek.add(1);
daysOfWeek.add(2);
daysOfWeek.add(5);

newTrigger().withIdentity(cronTriggerDTO.getTiggerId(), "simpleGroup")
    .startAt(getTriggerExecutionDate(cronTriggerDTO))
    .withSchedule(dailyTimeIntervalSchedule()
       .onDaysOfTheWeek(daysOfWeek)
          .startingDailyAt(new TimeOfDay(8,0)))
    .build();
1 голос
/ 25 января 2012

Я бы использовал CronScheduleBuilder.cronSchedule(String cronExpression), вот так:

newTrigger().withIdentity(cronTriggerDTO.getTiggerId(), "simpleGroup")
    .startAt(getTriggerExecutionDate(cronTriggerDTO))
    .withSchedule(CronScheduleBuilder.cronSchedule("0 0 * * 1,2,5"))
    .build();
0 голосов
/ 25 января 2012

Используйте триггер cron и ниже - простой способ подготовить выражение cron

  int second = 53;//prepare from the time selected from UI(fire time)
  int minute=0;
  int hour=8;
  String dayOfWeek="1,3";//prepare it from the days you get from UI(give check box values as 1 for SUN,....)

  String cronExpression = String.format("%d %d %d ? * %s",second,minute , hour, dayOfWeek);

         newTrigger()
    .withIdentity(cronTriggerDTO.getTiggerId(), "simpleGroup")//
    .withSchedule(cronSchedule(cronExpression)//
    .startAt(getTriggerExecutionDate(cronTriggerDTO))
    .build();

Затем запланируйте работу .., надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...