mercredi 29 août 2012

Un ordonnanceur EDI à base de Talend



L'été a été bien rempli chez 6 IT.
Nous avons travaillé en parallèle sur 2 projets innovants et sources de performance pour les SI des clients :
  • Pour un client dans le monde du Retail : mise en place d'un Référentiel produits (MDM pour Master Data Management) et des flux d'alimentation des produits en provenance des différents fournisseurs
  • Pour un Prestataire Logistique : mise en place d'un ordonnanceur EDI (automatisation du routage et du traitement des échanges de données entre partenaires)
Le point commun entre ces 2 projets : ils ont tous les deux été réalisés avec l'outil d'intégration de données Talend ( http://fr.talend.com/ )

Cet article est consacré au projet d'ordonnanceur EDI.
Le projet de Référentiel Produits fera l'objet du prochain article.

L'objectif du projet était de doter le client (un prestataire logistique) d'un outil permettant de rationaliser les flux d'échanges de données avec ses clients :
  • un outil commun pour progressivement remplacer les différents outils mis en place au cours du temps avec ses différents clients
  • automatiser les échanges et faciliter leur suivi
  • au passage, définir des formats d'échange standards avec ses clients (beaucoup de petits clients ouverts voire demandeurs de formats d'échanges normalisés)

Après un premier prototype développé pour un de ses clients, le prestataire logistique a été convaincu par l'architecture mise en place, et notamment l'utilisation de Talend comme outil d'intégration de données, il a décidé de lancer le projet d'ordonnanceur EDI qui sera progressivement déployé pour l'ensemble de ses clients (sauf 2 gros clients avec qui une mécanique spécifique a déjà été mise en place).

Le principe est de mettre en place des tables de paramétrage qui vont décrire :
  • les clients avec qui on échange
  • les types de messages échangés (commandes, avis d'expédition, état des stocks, ...)
  • les échanges effectivement définis entre le prestataire logistique et ses clients : un échange est défini pour un client et un type de message, il contient également le type de transfert utilisé (FTP, Mail, ...)

Voici en synthèse l'algorithme des traitements de l'ordonnanceur :


L'ordonnanceur est déclenché à intervalles réguliers, il scrute la table des échanges, récupère les fichiers éventuellement à disposition et si des fichiers sont disponibles, déclenche les jobs de traitement correspondants.
Toutes les exécutions sont tracées dans une table de suivi, les fichiers en entrée et en sortie sont archivés, les logs sont enregistrés dans des fichiers.
Chaque ligne de suivi fait référence aux fichiers en entrée et en sortie ainsi qu'au fichier de log.

Le traitement des fichiers suit toujours la même logique :
  • un job de traitement des données en entrée : il lit le fichier et enregistre les données dans une table de la base de données
  • un job de production du fichier nécessaire en sortie : il lit les données nécessaires à l'aide d'une requête SQL (plus ou moins complexe en fonction des données nécessaires en sortie) et produit le fichier de sortie
Cette méthode possède plusieurs avantages :
  • Les données qui transitent dans les fichiers sont enregistrées en base de données et peuvent être disponibles à des fins de consultation ou de vérification (en cas de litige avec un client) ou pour d'autres traitements éventuels
  • Quelque soit la complexité des données à produire en sortie, une requête SQL permet d'extraire toutes les données nécessaires, de manière relativement simple et performante => la maintenance en est grandement facilité
  • Utilisable quelque soit l'outil d'échange utilisé
    Voir également à ce sujet un article dédié à cette méthode : http://blog.6it.fr/2011/08/gestion-des-echanges-edi-avec-talend.html
Pour illustration, voici une copie du job principal constituant l'ordonnanceur :

La productivité et la puissance de Talend permet de faire évoluer facilement les fonctionnalités de cet ordonnanceur en fonction de vos besoins.
La base de données utilisée dans le cadre de ce projet est SQL Server mais peut être portée facilement sur MySQL ou Oracle.

N'hésitez pas à nous contacter : 04.84.25.17.94  ou  06.24.91.02.03