Search code examples
javaquartz-scheduler

Creating a Trigger which execute on particular days of week (Quartz Scheduler API)


I am trying to build a Trigger in Quartz Scheduler API which should get executed with following criteria.

  1. Start on particular date (Jan 25, 2012)
  2. Start at predefined time (08.00.00 AM)
  3. Every Week.
  4. Can be scheduled for alternate week or every 3 week (if not every week)
  5. On these particular days of week (Monday,Tuesday,Friday etc)

I have created the following expression

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

but I am confused how I should add the condition to execute this trigger on particular days of week


Solution

  • Use 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();