<?xml version="1.0" encoding="UTF-8"?>

<!--

 Copyright
   2009 axYus - www.axyus.com
   2009 C.Marchand - christophe.marchand@axyus.com

 This file is part of XEMELIOS.

 XEMELIOS is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.

 XEMELIOS is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with XEMELIOS; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

-->

<batches stop-listen-port="8006" allowedStoppers="127.0.0.1,*" info-listen-port="8007">
    <!--
    stop-listen-port is the TCP-IP port where the batch listens to to be stopped
    info-listen-port is the port where you can ask for informations. Protocol is HTTP. http://server:<info-listen-port> displays detailed informations on running batch tasks
    -->
    <!--
        Periodicity is described by a quantity immediatly followed by a unit.
        Valid units are
          s: second
          m: minute
          h: hour
          d: day

        For example :
          12s starts batch every 12 seconds
          2m starts batch every 2 minutes
          1d starts batch once a day

        Batches always start about 1 second after batch-runner starts
    -->
    <!--
    Ce batch verifie que l'ensemble des informations necessaires à l'import sont bien disponibles.
    Il peut avoir a decompresser les fichiers déposés, éventuellement les parser (au moins le début du fichier).
    Son temps d'exécution est très limité.
    Si des informations sont manquantes, c'est a son initiative que l'utilisateur se verra poser des questions.
    Il est donc important que ce batch tourne régulièrement, pour que l'utilisateur ait l'impression d'une
    bonne interactivité.
    -->
    <batch class="fr.gouv.finances.dgfip.xemelios.batch.imports.ImportChecker" periodicity="2m">
        <parameter name="documents-def.dir">%basedir%/src/carte-achat/conf,%basedir%/src/cfg-paye/conf,%basedir%/src/facture-depense/conf,%basedir%/src/facture-recette/conf,%basedir%/src/pes-aller/conf,%basedir%/src/pes-facture/conf,%basedir%/src/quittancement/conf,%basedir%/src/rapport/conf,%basedir%/src/versement/conf,%basedir%/src/edmn/conf,%basedir%/src/erar/conf,%basedir%/src/cg-colloc/conf</parameter>
        <parameter name="max.concurrent.threads" value="5"/>
    </batch>
    <!--
    Ce batch réalise les imports. Il peut ne tourner que toutes les heures, mais ne doit pas avoir trop d'executions
    concurrentes. Le temps d'execution est strictement proportionnel à la taille des fichiers à importer.
    -->
    <batch class="fr.gouv.finances.dgfip.xemelios.batch.imports.Importer" periodicity="2m">
        <parameter name="documents-def.dir">%basedir%/src/carte-achat/conf,%basedir%/src/cfg-paye/conf,%basedir%/src/facture-depense/conf,%basedir%/src/facture-recette/conf,%basedir%/src/pes-aller/conf,%basedir%/src/pes-facture/conf,%basedir%/src/quittancement/conf,%basedir%/src/rapport/conf,%basedir%/src/versement/conf,%basedir%/src/edmn/conf,%basedir%/src/erar/conf,%basedir%/src/cg-colloc/conf</parameter>
        <parameter name="max.concurrent.threads" value="5"/>
    </batch>
    <!--
    Ce batch est chargé du nettoyage après import. Les fichiers importés sont supprimés, et les demandes d'import
    non satisfaites depuis un délai donné (par exemple si des informations sont manquantes) sont supprimées.
    Ce batch peut ne tourner qu'une fois par jour, et a une durée d'execution faible.
    -->
    <batch class="fr.gouv.finances.dgfip.xemelios.batch.imports.PostImportCleaner" periodicity="1d">
        <parameter name="max.concurrent.threads" value="5"/>
    </batch>

    <!--
    Ce traitement a en charge de réinitialiser les statuts des exports qui ont été interrompus par un arrêt
    des batchs.
    -->
    <batch class="fr.gouv.finances.dgfip.xemelios.batch.exports.ExportInitiator" />
    <!--
    Ce batch a en charge d'évaluer les demandes d'export pour décider de la priorité à leur affecter.
    En fonction de la taille des exports (en nombre d'éléments importés), il affecte la priorité 1, 2 ou 3.
    Il peut aussi annuler un export si le volume a exporter est trop important.
    Ce batch a une duree d'execution très courte, et n'accède à aucun fihcier (uniquement des accès en base de donnée.
    -->
    <batch class="fr.gouv.finances.dgfip.xemelios.batch.exports.ExportEvaluator" periodicity="30s">
        <parameter name="max.concurrent.threads" value="1"/>
        <parameter name="export.p1.max.size" value="2000"/>
        <parameter name="export.p2.max.size" value="17000"/>
        <parameter name="export.max.size" value="65000"/>
    </batch>
    <!--
    Ce batch réalise les exports de priorit 1, c'est à dire les exports avec les plus petits volumes.
    On utilise en général l'exporteur JxlExporter, qui génère directement des fichiers Excel, mais qui
    ne supporte pas les gros volumes de données.
    On peut lui associer un post-traitement, pour Zipper le fichier généré, avant que l'utilisateur ne le télécharge,
    mais cela n'a rien d'obligatoire.
    Etant donné que Excel (l'application) n'est pas sollicité, on peut lancer plusieurs traitements en même temps,
    mais il ne faut pas en lancer trop non plus, car JxlExporter peut être gourmant en mémoire.
    -->
    <batch class="fr.gouv.finances.dgfip.xemelios.batch.exports.ExportRunner" periodicity="5m">
        <parameter name="documents-def.dir">%basedir%/src/carte-achat/conf,%basedir%/src/cfg-paye/conf,%basedir%/src/facture-depense/conf,%basedir%/src/facture-recette/conf,%basedir%/src/pes-aller/conf,%basedir%/src/pes-facture/conf,%basedir%/src/quittancement/conf,%basedir%/src/rapport/conf,%basedir%/src/versement/conf,%basedir%/src/edmn/conf,%basedir%/src/erar/conf,%basedir%/src/cg-colloc/conf</parameter>
        <parameter name="max.concurrent.threads" value="5"/>
        <parameter name="priority.level" value="1"/>
        <parameter name="datalayer.name" value="mysql"/>
        <parameter name="exporter.class.name">fr.gouv.finances.cp.xemelios.export.JxlExporter</parameter>
        <post-processor>fr.gouv.finances.dgfip.xemelios.batch.exports.postProcessors.Zipper</post-processor>
    </batch>
    <!--
    Ce batch réalise les exports de priorité 2.
    Il utilise généralement l'exporteur HtmlTableExporter qui génère un fichier HTML par feuille Excel. Ces
    différents fichiers doivent être ensuite reconstitués en un unique fichier Ewxcel - c'est le rôle de la macro
    contenue dans le fichier Excel associé.
    On peut faire tourner cette macro côté serveur : dans ce cas il faut associer un post-traitement
    ExcelRunner, qui nécessite la présence sur le serveur d'un Excel 2003 minimum, en configurant le niveau de
    sécurité à bas pour l'exécution des macros.
    On peut aussi associer un Zipper pour compresser l'export à envoyer à l'utilisateur.
    Si on ne veut pas que la reconstruction du fichier Excel se fasse côté serveur, il faut alors impérativement
    associer un post-traitement Zipper pour compresser dans une seule archive zip tous les fichiers générés.
    Lorsque l'utilisateur téléchargera son fichier zip, il le décompressera sur son disque local, ouvrira le
    fichier Excel, et la macro de reconstruction s'executera.
    -->
    <batch class="fr.gouv.finances.dgfip.xemelios.batch.exports.ExportRunner" periodicity="1h">
        <parameter name="documents-def.dir">%basedir%/src/carte-achat/conf,%basedir%/src/cfg-paye/conf,%basedir%/src/facture-depense/conf,%basedir%/src/facture-recette/conf,%basedir%/src/pes-aller/conf,%basedir%/src/pes-facture/conf,%basedir%/src/quittancement/conf,%basedir%/src/rapport/conf,%basedir%/src/versement/conf,%basedir%/src/edmn/conf,%basedir%/src/erar/conf,%basedir%/src/cg-colloc/conf</parameter>
        <parameter name="max.concurrent.threads" value="2"/>
        <parameter name="priority.level" value="2"/>
        <parameter name="datalayer.name" value="mysql"/>
        <parameter name="exporter.class.name">fr.gouv.finances.cp.xemelios.export.HtmlTableExporter</parameter>
        <!--post-processor>fr.gouv.finances.dgfip.xemelios.batch.exports.postProcessors.ExcelRunner</post-processor-->
        <post-processor>fr.gouv.finances.dgfip.xemelios.batch.exports.postProcessors.Zipper</post-processor>
    </batch>
    <!--
    cf. ci-dessous, avec une priorité 3
    -->
    <batch class="fr.gouv.finances.dgfip.xemelios.batch.exports.ExportRunner" periodicity="1d" start-time="21:00">
        <parameter name="documents-def.dir">%basedir%/src/carte-achat/conf,%basedir%/src/cfg-paye/conf,%basedir%/src/facture-depense/conf,%basedir%/src/facture-recette/conf,%basedir%/src/pes-aller/conf,%basedir%/src/pes-facture/conf,%basedir%/src/quittancement/conf,%basedir%/src/rapport/conf,%basedir%/src/versement/conf,%basedir%/src/edmn/conf,%basedir%/src/erar/conf,%basedir%/src/cg-colloc/conf</parameter>
        <parameter name="max.concurrent.threads" value="1"/>
        <parameter name="priority.level" value="3"/>
        <parameter name="datalayer.name" value="mysql"/>
        <parameter name="exporter.class.name">fr.gouv.finances.cp.xemelios.export.HtmlTableExporter</parameter>
        <!--post-processor>fr.gouv.finances.dgfip.xemelios.batch.exports.postProcessors.ExcelRunner</post-processor-->
        <post-processor>fr.gouv.finances.dgfip.xemelios.batch.exports.postProcessors.Zipper</post-processor>
    </batch>
    <!--
    Ce batch a en charge le nettoyage des jobs d'export : suppression des fichiers téléchargés. Il est possible
    de paramétrer le temps de conservation des fichiers générés (en jours).
    -->
    <batch class="fr.gouv.finances.dgfip.xemelios.batch.exports.ExportCleaner" periodicity="1d">
        <parameter name="max.concurrent.threads" value="1"/>
        <parameter name="clean.delay" value="20"/>
    </batch>
    <!--
    Ce batch a en charge de déterminer, pour chaque type de document,
    la liste des travaux de génération de PDF
    -->
    <batch class="fr.gouv.finances.dgfip.xemelios.batch.pdf.PdfPreparator" periodicity="1h">
        <parameter name="documents-def.dir">%basedir%/src/cg-etat/conf</parameter>
        <parameter name="max.concurrent.threads" value="1"/>
        <!-- une liste de documentId, séparés par des virgules -->
        <parameter name="documents" value="compteGestionEtat"/>
        <parameter name="datalayer.name" value="mysql"/>
    </batch>
    <!--
    Ce batch a en charge de produire le PDF associé à un type de document
    -->
    <batch class="fr.gouv.finances.dgfip.xemelios.batch.pdf.PdfCreator" periodicity="2h">
        <parameter name="documents-def.dir">%basedir%/src/cg-etat/conf</parameter>
        <parameter name="document.id" value="compteGestionEtat"/>
        <parameter name="datalayer.name" value="mysql"/>
    </batch>

</batches>
