La planification des tâches avec Quartz
Les objets Quartz
Les triggers
Il s'agit de créer des déclencheurs des tâches implémentées préalablement. Il est à noter qu'un job peut être déclenché par plusieurs triggers, mais réciproquement, un trigger ne peut pas déclencher plusieurs Jobs.
Il faut savoir qu'il existe trois types de triggers :
- SimpleTrigger : Ce type de trigger se base sur des intervalles réguliers et sur un nombre de répétitions précis
- CronTrigger : Celui-ci offre plus de liberté sur la planification, puisqu'il se base sur les jours du calendrier
- Calendar (BaseCalendar, MonthlyCalendar, AnnualCalendar, WeeklyCalendar, HolidayCalendar, CalendarBundle) : Cette interface permet d'exclure certaine valeurs calendaires
Utilisons un trigger simple, celui-ci sera lancé 11 fois (lancé une fois et répété 10 fois), toutes les 5 secondes :
//les arguments du SimpleTrigger : son nom, le scheduler, le nombre d'itérations du Job, l'intervalle de temps en ms
SimpleTrigger simpleTrigger = new SimpleTrigger(“FiveSeconds", Scheduler.DEFAULT_GROUP, 10, 5000);
Utilisons un cron trigger, celui-ci sera lancé tous les deuxièmes lundis du mois à 8h20 :
//les arguments du CronTrigger :
//son nom, le scheduler, l'expression cron [seconde/minute/heure/jour du mois/mois/jour de la semaine/annee]
CronTrigger cronTrigger = new CronTrigger("myTrigger", Scheduler.DEFAULT_GROUP, "0 20 8 ? * MON#2");
Utilisons l'interface Calendar, avec deux exemples. Le premier exclu tous les vendredis, le second exclu les jours feriés.
//Classe permettant d'exclure certains jours de la semaine
WeeklyCalendar c = new WeeklyCalendar();
//Exclusion du vendredi
c.setDayExcluded(java.util.Calendar.FRIDAY, true);
//On donne un nom au calendrier
trigger.setCalendarName("weeklyCalendar");
//On ajoute la contrainte au scheduler
sched.addCalendar("weeklyCalendar", c, true, true);
Enfin, il est indispensable d'enregistrer le trigger auprès de l'ordonnanceur avec le job auquel il correspond :
sched.scheduleJob(jobDetail, trigger);