Modifier le fichier

Création d'un script automatisé

Déclaration XML

L'ajout d'un script automatisé nécessite au minimum la définition de deux beans dans le context Spring.

Déclaration d'un bean de type JobModule qui prend plusieurs paramètres :

Nom du paramètreDescriptionValeur possibleValeur par défaut
jobDetailsListe des beans de type JobDetailFactoryBean
typeType de scriptVoir IModule.TYPE_*TYPE_NON_PARAMETRABLE_NON_AFFICHABLE
libelleLibellé du script
descriptionDescription du script
permissionsListe des permissions nécessaires pour le script
etatEtat par défaut du scriptVoir IModule.ETAT_*ETAT_ACTIF

Exemple de définition d'un JobModule :

<bean id="monScriptJobModule" class="com.kportal.scheduling.module.JobModuleImpl">
    <property name="jobDetails">
        <list>
            <ref bean="monScriptJob"/>
        </list>
    </property>
    <property name="type" ref="TYPE_PARAMETRABLE"/>
    <property name="libelle" value="MON_SCRIPT.JOB_LIBELLE"/>
    <property name="permissions">
        <list>
            <bean class="com.kportal.core.autorisation.Permission">
                <property name="code" value="monScriprJob"/>
                <property name="type" value="SCRIPT"/>
                <property name="actions">
                    <list>
                        <bean class="com.kportal.core.autorisation.ActionPermission">
                            <property name="code">
                                <util:constant static-field="com.kportal.scheduling.util.ScriptsAutomatisesUtil.ACTION_LANCEMENT"/>
                            </property>
                        </bean>
                    </list>
                </property>
                <property name="libelle" value="MON_SCRIPT.JOB_LIBELLE"/>
            </bean>
        </list>
    </property>
</bean>

Déclaration du bean de job qui étend JobDetailFactoryBean qui prend plusieurs paramètres :

Nom du paramètreDescriptionValeur possibleValeur par défaut
jobClassLa classe du jobEx : com.kosmos.search.batch.job.IndexerJob
durabilityIndique si le job doit rester disponible dans le job storetrue ou falsefalse
descriptionDescription du job

Exemple de définition d'un JobDetailFactoryBean :

<bean id="monScriptJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    <property name="description" value="Description du job"/>
    <property name="jobClass" value="com.kosmos.toto.batch.job.MonScriptJob"/>
    <property name="durability" value="true"/>
</bean>

Création de la classe du job

La classe d'exécution du job doit étendre LogReportJob et implémenter Runnable. Le traitement du job est effectué dans la méthode run().

Exemple de classe d'exécution du job :

public class MonScriptJob extends LogReportJob implements Runnable {
 
    /**
     * Logger.
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(MonScriptJob.class);
 
    /**
     * Constructeur vide.
     */
    public MonScriptJob() {
        super();
    }
 
    /**
     * {@inheritDoc}
     */
    @Override
    public void run() {
        // Implémentation de l'exécution du job
    }
 
    /**
     * {@inheritDoc}
     */
    @Override
    public void perform() {
        run();
    }
}

Utilisation de paramètres pour l'exécution du job

Il est possible de saisir des paramètres lors du lancement d'un script automatique.

Liste de paramètres

Déclaration des paramètres

Les paramètres du job sont passés sous forme de Map au bean de type JobDetailFactoryBean via la propriété jobDataAsMap.

Exemple pour le job déclaré précédément :

<bean id="monScriptJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    <property name="description" value="Description du job"/>
    <property name="jobClass" value="com.kosmos.toto.batch.job.MonScriptJob"/>
    <property name="durability" value="true"/>
     <property name="jobDataAsMap">
        <map>
            <entry key="parametres">
                <value>param1;param2</value>
            </entry>
        </map>
    </property>
</bean>

Le label du champ de saisie du paramètre est récupéré à partir d'une clé de message portant le nom du paramètre () Il est possible de définir 3 types de paramètre de job différents :

  1. Champ de saisie Si le paramètre du job ne contient qu'une clé et une valeur vide, un champ de saisie de type text sera affiché à l'utilisateur afin de saisir la valeur du paramètre.
  2. Valeur unique non modifiable Si le paramètre du job ne contient qu'une seule valeur non vide, un champ de saisie non modifiable sera présent avec la valeur renseignée.
  3. Liste de valeurs Si le paramètre contient une liste de valeurs, une liste déroulante sera affichée avec la liste des valeurs.

Pour chaque paramètre saisissable une entrée est ajoutée dans la map avec pour clé le nom du paramètre et pour value la liste des valeurs possibles.

Définition de la liste des valeurs

La liste des valeurs pour un paramètre peut être définie de 2 manières : Avec une Map En passant une Map<String, String> en valeur de votre paramètre, la liste déroulante sera alimentée avec pour chaque entrée de la map, la clé en tant que valeur et la value en tant que libellé.

Avec une liste de String Il est possible d'alimenter la liste de valeurs d'un paramètre à partir d'une liste de String, chaque valeur étant séparée par un point virgule :

<map>
	<entry key="parametres">
		<value>param1;param2;param3</value>
	</entry>
</map>

Lors de l'utilisation d'une liste de String, la liste déroulante sera alimentée avec pour valeurs les différentes chaine de caractères séparées par un point virgule et pour libellés une clé de message définie dans les fichiers I18n de l'application.

Les traductions des paramètres sont saisies dans le fichier I18N de l'extension avec la règle de nommage suivante BO.NOM_EXTENSION.JOB_PARAM.NOM_PARAMETRE.

Exemple pour les paramètres déclarés ci-dessus :

# Clé de message pour le label du champ
BO.CORE.JOB_PARAM.PARAMETRES=Paramètre du job

# Clés de message pour les différentes valeurs sélectionnables
BO.CORE.JOB_PARAM.PARAM1=Paramètre 1
BO.CORE.JOB_PARAM.PARAM2=Paramètre 2
BO.CORE.JOB_PARAM.PARAM3=Paramètre 3

Récupération des paramètres saisis

Les paramètres saisis lors du lancement du script peuvent être récupérés via le JobContext, celui-ci est disponible dans les méthodes init() et execute() de LogReportJob.

Exemple de récupération des paramètres pour le job monScriptJob :

public class MonScriptJob extends LogReportJob implements Runnable {
 
    ...

    private String parametre;

    ...


    @Override
    public void init(final JobExecutionContext context) {
        // Récupération du paranètre saisi lors du lancement du script
        // Celui-ci peut ensuite être utilisé dans la méthode run()
        parametre = context.getMergedJobDataMap().getString("parametres");
    }

    ...
}