SPRING BATCH
UP ASI
Bureau E204
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 1
PLAN DU COUS
– Introduction
– Spring Batch
– Pourquoi utiliser Spring Batch ?
– Architecture de base
– TP: Mettre en place un job
– Travail à faire
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 2
Introduction
• Le mot Batch fait référence à un traitement sur un gros volume
de données.
• Un Batch a pour objectif de :
1. Lire des données provenant de plusieurs sources homogènes ou
hétérogènes (fichiers, bases de données, etc).
2. Faire les traitements nécessaires sur ces données.
3. Stocker le résultat dans un ou plusieurs conteneurs de destination
(fichiers, bases de données, queue, etc..) dans le but de les
exploiter.
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 3
Introduction
Programme de
Lecture traitement Écriture
par lot
Sources de données potentielles Destinations de données potentielles
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 4
Introduction
• Le batch permet d’automatiser une suite de commandes exécutées en
série (lots) sur un ordinateur sans une intervention d’un employé pour
réaliser cette opération.
• Il est utilisé pour automatiser certaines tâches comme :
– La création de données facilitant l’aide à la décision ( base de données
décisionnelle) Exp : chiffre affaire par mois- année-catégorie Client-région
– L'arrêt planifié des ordinateurs
– La sauvegarde de milliers de lignes dans une table de la BD
– Exécuter des instructions DOS (Création, modification et suppression des
fichiers / Formatage d’un disque /…)
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 5
Introduction
• Spring Batch est un framework sophistiqué open source capable
d'exécuter des tâches par lots dans des environnements d'entreprise.
• Il permet de simplifier la création des jobs grâce à un code modulaire et
facilement maintenable
• Il permet de corriger des problèmes récurrents :
✓ Productivité ( gérer des volumes importants en un minimum de temps)
✓ Gestion de gros volumes de données (temps de traitement très lent)
✓ Fiabilité (problème de pertes d’informations)
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 6
Pourquoi utiliser Spring Batch ?
• Spring Batch facilite le développement de batch à travers des outils
dédiés. Il permet ainsi :
– Une division du code bien défini permettant une maintenabilité
facilitée et une logique commune à la notion des batchs (classes
avec des rôles bien spécifiés à l’avance).
– Le traitement d’un gros volume de données par lots tout en
allégeant les charges des différentes instances sollicitées.
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 7
Architecture de base
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 8
Architecture de base - COMPOSANTS
• Pour gérer les données d'un batch, on utilise principalement les trois outils
suivants:
✓ JobLauncher : Il est chargé d'exécuter un Job. Le déclanchement
peut être automatique (auto-déclenchement) ou manuel (script, web
service,etc..).
✓ Job : C’est le composant qui représente la tâche à qui on délègue la
responsabilité du besoin métier traité dans le programme. Il permet de
lancer un ou plusieurs step ordonnancés ( avec un ordre précis).
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 9
Architecture de base - COMPOSANTS
✓ Step : Il représente une étape au sein du batch. Les Steps sont
généralement stockées dans des beans pour pouvoir y accéder
facilement dans différents Job.
Il est chargé de définir trois sous-composants :
o ItemReader
o ItemProcessor
o ItemWriter
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 10
Architecture de base - COMPOSANTS
• Ces trois composants opèrent avec l’ordre suivant :
1. ItemReader récupère les données d'entrées à traiter. Elles peuvent
provenir de diverses sources (bases de données, csv, xml, xls, …).
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 11
Architecture de base - COMPOSANTS
• Ces trois composants opèrent avec l’ordre suivant :
2. ItemProcessor contient la logique du traitement des données
récupérées par l’ItemReader.
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 12
Architecture de base - COMPOSANTS
• Ces trois composants opèrent avec l’ordre suivant :
3. ItemWriter : Il se charge de sauvegarder les données en sortie de
l’ItemProcessor dans une ou plusieurs destinations désirés (bases de
données, csv, xml, xls, cloud, …).
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 13
Architecture de base - COMPOSANTS
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 14
Architecture de base - COMPOSANTS
JobRepository : Le JobRepository est la classe qui permet le stockage
d’un nombre important de données autour du Job.
Il permet ainsi de récupérer un historique des différents jobs qui ont été
lancés.
La sauvegarde de données faite par cette classe permettra donc de
redémarrer des Jobs plus efficacement ou bien effectuer des pauses
dans le traitement.
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 15
Architecture de base - COMPOSANTS
JobRepository
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 16
Architecture de base - COMPOSANTS
JobRepository
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 17
Architecture de base - COMPOSANTS
JobRepository
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 18
Travail à faire
• Compléter les 8 toDo au niveau du code pour que le projet soit
fonctionnel et que le batch puisse insérer les données
correctement.
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 19
Travail à faire
Créer un batch qui permet de faire les étapes suivantes :
• Lire les id des équipes qui ont des projets terminés
• Modifier le montant de contrats des membres de l’équipe
(augmentation de 10% du montant initial) si le projet auquel ils
sont attachés est fini (terminated = true)
• Sauvegarder le nom de l’étudiant, la date de l’augmentation
du montant du contrat et le nouveau montant du contrat dans
la table log
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 20
TP: METTRE EN PLACE UN JOB
• Importer le projet Spring boot TODO ayant l’arborescence suivante et créer la
base donnée kaddembatch :
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 21
TP: METTRE EN PLACE UN JOB - Dépendances
• Pour utiliser Spring Batch avec Spring Boot, il faut ajouter les
dépendances suivantes (déjà existantes dans le projet toDo):
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-batch-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 22
TP: METTRE EN PLACE UN JOB - Configuration
• Configuration du Job:
- Pour activer le traitement par lots, nous devons annoter la
classe de configuration StockBatchConfig avec
@EnableBatchProcessing.
- Nous devons par la suite créer:
✓ Un reader pour lire notre fichier CSV.
✓ Un processor pour traiter les données d'entrée avant
d'écrire.
✓ Un writer pour écrire dans la base de données.
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 23
TP: METTRE EN PLACE UN JOB – Les classes
• Inspecter en suivant l’ordre les classes suivantes (inspecter le code
source des classes en respectant l’ordre) :
• BatchLauncher : Lancer les jobs
▪ Scheduler : Lancer le batch Launcher à intervalle de temps régulier
pour démarrer les différents jobs (un dans notre cas ou plusieurs).
▪ ProjectProcessor
▪ ProjectReader
▪ ProjectWriter
▪ ProjectBatchConfig
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 24
TP: METTRE EN PLACE UN JOB - Configuration
• Ajouter la ligne suivante dans le fichier de configuration
[Link]:
[Link]-schema=ALWAYS
• Inspecter le fichier excel [Link] qui contient les lignes
ajoutées dans le répertoire src/main/ressources:
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 25
TP: METTRE EN PLACE UN JOB
• Lancer le projet Spring Boot
• En cas d’erreur lors du lancement indiquant qu’une table n’existe pas
(batch_job_execution par exemple), le lancement du script [Link] va
résoudre le problème ( comportement liée au type du SGBD choisi)
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 26
TP: METTRE EN PLACE UN JOB – Les tables
• Lancer le script [Link] pour créer les tables de Spring Batch ( grâce
auxquelles SpringBatch assure le monitoring des données manipulés
dans nos traitements).
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 27
SPRING BATCH
Si vous avez des questions, n’hésitez pas à nous
contacter :
Département Informatique
UP ASI
Bureau E204
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 28
SPRING BATCH
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) 29