eCandidat (esup-opi)

Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Migrated to Confluence 4.0

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 :

Bloc de code
<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 :

Bloc de code
<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 à :

Bloc de code
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.

Bloc de code
<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>