Arborescence des pages

La librairie Quartz permet de gérer un cron applicatif. On peut ainsi exécuter du code de manière planifiée.

Dans le cadre de l'application eCandidat, Quartz est utilisé pour une scrutation et une exécution des taches d'archivage.

Configuration Spring

Le fichier properties/misc/quartz.xml contient les différents beans Spring permettant la configuration de Quartz.

SchedulerFactoryBean

Le SchedulerFactoryBean permet de définir l'ensemble des tâches (triggers) qui sont gérées par Quartz. Il se définit de la manière suivante :

<bean>
    <property name="triggers">
        <list>
            <ref bean="cronArchiveTasks"/>
        </list>
    </property>
</bean>

CronTriggerBean

Le CronTriggerBean permet de définir une tâche au sens Quartz.

On lui indique quel fonctionnalité (Job) sera exécutée par ce trigger ainsi que l'expression cron qui définit la périodicité d'exécution.

Voici un exemple de trigger définit dans eCandidat :

<bean id="cronArchiveTasks">
    <property name="jobDetail" ref="archiveTaskBatch" />
    <!-- Exécution à minuit et demi -->
    <property name="cronExpression" value="${cron.archiveTask}" />
</bean>

Ici, la valeur "cron.archiveTask" est définit dans le fichier config.properties. Par exemple, on le configure à :

cron.archiveTask=0 30 0 * * ? (soit tous les jours à 0h30)

La documentation officielle expliquant les différents champs est disponible sur le site de Quartz au lien suivant :

http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-06

JobDetailBean

Le JobDetailBean permet de définir la classe qui sera pointée lors de l'exécution du trigger.

On définit la classe pointée dans la propriété jobClass.

On peut injecter des paramètres supplémentaires comme d'autres beans avec la propriété jobDataAsMap.

<bean name="archiveTaskBatch" class="org.springframework.scheduling.quartz.JobDetailBean">
    <property name="jobClass" value="fr.univ.rennes1.cri.opiR1.batch.ArchiveTaskBatch" />
    <property name="jobDataAsMap">
        <map>
            <entry key="regimeInscriptions">
                <list>
                    <ref bean="formationContinue"/>
                    <ref bean="formationInitiale"/>
                </list>
            </entry>
        </map>
    </property>
</bean>
  • Aucune étiquette