1
Projet boîte à outils
Batch générique
Framework GenericBatch
Spécification DSTI
Historique des modifications
Version
Date
Auteur
Modification
1.1
27/01/2014
G. Weber
1.2
03/02/2014
G. Lannoo
Compléments
1.3
04/02/2014
G. Weber
Compléments
Documentations de référence
Nom
Version
Documentation Log4J v1.2.17
http://logging.apache.org/log4j/1.2/apidocs/index.html
Documentation DBUtils v1.5
http://commons.apache.org/proper/commons-
dbutils/apidocs/index.html
2
TABLE DES MATIERES
1. OBJET ............................................................................................................................................. 3
1. RAPPEL DU BESOIN ........................................................................................................................ 3
2. CHANTIER « BOITES A OUTILS » ...................................................................................................... 3
3. FRAMEWORK GENERICBATCH ........................................................................................................ 3
2. CONCEPTION ................................................................................................................................. 4
1. CLASSES PRINCIPALES ET ELEMENTS REMARQUABLES ..................................................................... 4
2. LECTURE DU FICHIER DE PROPRIETES ............................................................................................. 4
3. UTILISATION DE LOG4J V1.2.17 ...................................................................................................... 4
4. UTILISATION DE DBUTILS V1.5 ET OJDBC14.JAR .............................................................................. 4
5. TRAITEMENT DES EXCEPTIONS ET RENVOI DES CODES DE SORTIE ..................................................... 5
3. UTILISATION .................................................................................................................................. 6
1. RAPPEL SUR LES LIBRAIRIES A INCLURE ........................................................................................... 6
2. EXEMPLE DIMPLEMENTATION ......................................................................................................... 6
3
1. Objet
1. Rappel du besoin
Plusieurs projets logiciels au sein de la Direction Informatique de la Ville de Paris nécessitent
des outils répondant à des besoins similaires.
2. Chantier « Boîtes à outils »
Le chantier « Boîte à outils » a pour finalité de proposer et maintenir plusieurs composants
développés en Java pour répondre à ces besoins de façon standardisée. Certains
composants sont fournis pour répondre à quelques besoins (requêtes SQL).
3. Framework GenericBatch
Le premier besoin identifié correspond à un jeu de composants permettant de concevoir et
mettre en exploitation un traitement de données autonome (traitement par lot ou batch).
Le framework GenericBatch est un package Java (fichier archive .jar) contenant l’ensemble
des classes spécifiquement développées pour son fonctionnement, proposant les
fonctionnalités suivantes :
- Lecture d’un fichier de propriétés, pour standardiser la configuration
- Création et alimentation d’un fichier de trace d’exécution (basé sur la librairie
OpenSource Log4J v1)
- Création et exploitation d’une connexion à une base de données (basé sur la librairie
OpenSource DbUtils)
- Gestion d’exceptions spécifiques pour traiter les cas d’erreur de façon unifiée
- Renvoi de codes de fin d’exécution standardisés aux normes d’exploitation de la Ville
de Paris
Le framework propose une classe centrale (org.paris.gbatch.GenericBatch) qu’il appartient
au développeur d’étendre, le principe recherché étant de décharger le développeur des
tâches spécifiques et répétitives liées à la gestion des logs et des appels à la base de
données, pour concentrer ses travaux sur le développement des fonctionnalités métier
spécifiques au batch à produire.
4
2. Conception
1. Classes principales et éléments remarquables
2. Lecture des fichiers de propriétés
Le constructeur GenericBatch utilise une méthode qui charge les fichiers de propriétés
« query.properties » et « config.properties ».
Le fichier devra se trouver dans le répertoire config qui sera dans le répertoire courant de
l’exécutable pour qu’il soit détecté.
Si le fichier est vide, une exception de type NoPropertiesFoundException est levée. Si la
classe n’arrive pas à charger son fichier de propriétés, une exception de type IOException
est levée.
3. Utilisation de Log4J v1.2.17
Le constructeur GenericBatch instancie un constructeur de type LogBatch. Cette classe
implémente la librairie Log4J. Le constructeur de type LogBatch instancie un logger.
La méthode charge le fichier de propriétés « config.properties » contenant le chemin et le
nom du log : configurationLog().
La méthode permettant d’écrire dans un log est : info(String).
Si le fichier de log ne peut pas être enregistré à l’endroit défini, une exception de type
IOException est levée.
4. Utilisation de DbUtils v1.5 et ojdbc14.jar
Le constructeur GenericBatch instancie un objet de la classe Connection à l’état null.
Log4j v1
DbUtils
ojdbc14.jar
Generic
Batch
Logger
Connexion
Database
Driver
Not
Found
Exception
Database
Connection
Failed
Exception
No
Properties
Found
Exception
5
La classe GenericBatch possède une méthode qui va créer une connexion à la base de
données : getInstance() utilisant le patron de conception « Singleton ». Une méthode permet
de clôturer la connexion à la base de données : closeInstance().
Il y a des méthodes prévues pour chaque type de requête SQL : requête SELECT
(executeSelect(nomRequête)), requête UPDATE (executeUpdate(nomRequête)), requête
INSERT (executeInsert(nomRequête)) et requête DELETE (executeDelete(nomRequête))
Si le driver ojdbc14.jar est absent, une exception de type DatabaseDriverNotFoundException
sera levée. Si la connexion à la base de donnée a echoué, une exception de type
DatabaseConnectionFailedException.
5. Traitement des exceptions et renvoi des codes de sortie
Si une mauvaise requête SQL est exécutée par une méthode de GenericBatch
(executeSelect, executeUpdate, executeInsert ou executeDelete) une exception
SQLException est levée.
Les codes retour sont :
[0] = Normal
[5] = Anomalie non bloquante
[10] = Anomalie bloquante
La classe CodeRetourBatch fournit ces codes de retour dans des variables statiques :
[0] = EXIT_OK
[5] = EXIT_WARNING
[10] = EXIT_ERROR
//On écrit dans le log configuré un code de retour erreur : 10
Batch.logger.getLogBatch().info("Code de retour :"+ CodeRetourBatch.EXIT_ERROR);
1 / 8 100%