Autres versions

Vous êtes ici : Développer dans K-SupConnecteurs SIConnecteur LDAP

Déclarer et programmer le(s) job(s) de synchronisation LDAP

Documentation de configuration des tâches planifiées pour la synchronisation de vos données LDAP vers votre application

Cette documentation présente comment déclarer les jobs qui serviront à lancer la synchronisation de vos données LDAP, et comment les programmer dans une tâche planifiée.

La configuration des scripts chargés de la synchronisation des données de votre annuaire LDAP vers votre application K-Portal ou K-Sup s'effectue dans le fichier /WEB-INF/ApplicationContext.xml de votre application.

Déclaration des scripts

Si vous avez configuré la synchronisation de vos utilisateurs, vous devrez activer le bean batchSynchroUserFromLdap, ajouter la déclaration suivante (la propriété "lazy-init=true" est indispensable sur ce bean).
! Important "ldap.liste.alias" est la propriété contenant la liste de vos alias LDAP à synchroniser, séparés par des points virgule.
<bean id="batchSynchroUserFromLdapJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean" lazy-init="true">
    <property name="description" value="Synchronisation des utilisateurs LDAP" />
  <property name="jobClass" value="com.kosmos.ldap.batch.BatchSynchroUserFromLdap" />
    <property name="durability" value="true" />
    <property name="jobDataAsMap">
         <map>
          <entry key="alias">
                <value>${ldap.liste.alias}</value>
           </entry>
       </map>
     </property>
</bean>
Si vous avez également prévu de synchroniser les groupes, vous devrez activer le bean batchSynchroGroupFromLdapJob, chargé de la synchronisation des groupes, ajouter la déclaration suivante (la propriété "lazy-init=true" est indispensable sur ce bean).
<bean id="batchSynchroGroupFromLdapJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean" lazy-init="true">
   <property name="description" value="Synchronisation des groupes LDAP" />
   <property name="jobClass" value="com.kosmos.ldap.batch.BatchSynchroGroupFromLdap" />
   <property name="durability" value="true" />
    <property name="jobDataAsMap">
         <map>
          <entry key="alias">
                <value>${ldap.liste.alias}</value>
           </entry>
       </map>
     </property>
</bean>
Si vous avez configuré le connecteur afin de générer des fiches Annuaire et/ou Étudiant, vous devrez activer le bean importXmlJob chargé d'importer les fichiers XML dans l'application (la propriété "lazy-init=true" est indispensable sur ce bean) :
<bean id="importXmlJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean" lazy-init="true">
   <property name="description" value="Import de fichier xml" />
  <property name="jobClass" value="com.univ.batch.imports.ImportXML" />
  <property name="durability" value="true" />
</bean>
Si vous avez activé les groupes dynamiques, vous devrez activer le bean synchroniserGroupesDynamiqueJob chargé de la synchronisation des groupes dynamiques :
<bean id="synchroniserGroupesDynamiqueJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
     <property name="description" value="Synchronisation des groupes dynamiques" />
     <property name="jobClass"
         value="com.univ.batch.process.SynchroniserGroupesDynamique" />
    <property name="durability" value="true" />
</bean>

Activation de la programmation

En règle générale, les scripts de synchronisation sont programmés la nuit en même temps que le batch nocturne de maintenance.
Au préalable, il faut donc ajouter également le bean scanSiteJob pour le reprogrammer dans l'ordre souhaité, ajouter la déclaration
<bean id="scanSiteJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
     <property name="description" value="Mise à jour de l'application" />
   <property name="jobClass" value="com.univ.batch.process.ScanSite" />
   <property name="durability" value="true" />
</bean>
La déclaration de la séquence d'éxecution est à surcharger dans la map sequence du trigger scanSiteTrigger, par exemple pour activer dans l'ordre :
  1. synchronisation des utilisateurs LDAP alias myAlias
  2. synchronisation des utilisateurs LDAP alias myAliasBis (la propriété "ldap.liste.alias" est de la forme "myAlias;myAliasBis;...")
  3. synchronisation des fiches annuaires
  4. le script de maintenance
  5. synchronisation des groupes dynamiques
Ajoutez la déclaration suivante (la propriété du bean "lazy-init=true" est indispensable sur ce bean, la propriété "blocking" de chaque job permet de préciser si la séquence doit s’arrêter en cas de d'erreur sur le job ) :
<bean id="sequenceSurcharge" class="com.kportal.core.context.AttributeToOverrideBean" lazy-init="true">
   <property name="idBeanToMerge" value="scanSiteTrigger" />
 <property name="attributes">
      <map>
         <entry key="sequence">
                <map>
                 <entry key="1">
                       <bean class="com.kportal.scheduling.spring.quartz.SequenceJobDetailDecorator">
                            <property name="decoratedJobDetail" ref="batchSynchroUserFromLdapJob" />
                          <property name="blocking" value="false" />
                            <property name="sequenceJobDataMap">
                              <map>
                                 <entry key="alias">
                                       <value>myAlias</value>
                                  </entry>
                              </map>
                            </property>
                       </bean>
                   </entry>
                  <entry key="2">
                       <bean class="com.kportal.scheduling.spring.quartz.SequenceJobDetailDecorator">
                            <property name="decoratedJobDetail" ref="batchSynchroUserFromLdapJob" />
                          <property name="blocking" value="false" />
                            <property name="sequenceJobDataMap">
                              <map>
                                 <entry key="alias">
                                       <value>myAliasBis</value>
                                   </entry>
                              </map>
                            </property>
                       </bean>
                   </entry>              
                    <entry key="3">
                       <bean class="com.kportal.scheduling.spring.quartz.SequenceJobDetailDecorator">
                            <property name="decoratedJobDetail" ref="importXmlJob" />
                         <property name="blocking" value="false" />
                        </bean>
                   </entry>
 
                  <entry key="4">
                       <bean class="com.kportal.scheduling.spring.quartz.SequenceJobDetailDecorator">
                            <property name="decoratedJobDetail" ref="scanSiteJob" />
                          <property name="blocking" value="false" />
                        </bean>
                   </entry>
               
                    <entry key="5">
                       <bean class="com.kportal.scheduling.spring.quartz.SequenceJobDetailDecorator">
                            <property name="decoratedJobDetail" ref="synchroniserGroupesDynamiqueJob" />
                          <property name="blocking" value="false" />
                        </bean>
                   </entry>
              </map>
            </entry>
      </map>
    </property>
</bean>

Prise en compte de la configuration

Pour que la configuration soit effective, vous devrez relancer Tomcat.



 

Mis à jour le 19 décembre 2017