7 mars 2016

REST WebService avec Informatica - HTTP & Java Transformation


REST est un type de Services Web dont le style d’architecture repose sur le protocole HTTP : On accède à une ressource (par son URI unique) pour procéder à diverses opérations (GET lecture/POST écriture/PUT modification/DELETE suppression), opérations supportées nativement par HTTP.
Informatica PowerCenter dans sa version basique Standard Edition (sans la B2B DataTransformation) permet d'appeler simplement les WebService en utilisant la HTTP Transformation.
Par ailleurs, dans certains cas, l'URL doit être dynamique d'un enregistrement à l'autre, ce type d'appel n'est pas possible avec la HTTP Transformation. Néanmoins, ce type d'appel dynamique peut être effectué par une Java Transformation qui doit être codée pour prendre en entrée une URL et renvoyer la réponse (XML ou JSON).
La Java Transformation est une transformation fournie dans PowerCenter qui permet d'incorporer du code Java (qui peut "tout" faire) dans un mapping Informatica.
Notons que si la réponse du WebService est essentiellement du JSON, la licence Informatica B2B Data Transformation est nécessaire pour parser le retour JSON. La Java Transformation peut être une alternative si pas de licence B2B DT.

Dans cet article, nous allons étudier un exemple de récupération (Méthode GET) des données client depuis un WebService REST sous format XML et formatage de ces données avec Informatica PowerCenter.
L'objectif de l'exemple, avec le jeu de test disponible, est de récupérer la liste des clients et alimenter un fichier CSV avec cette liste.
  • WebService de test :
Le WebService utilisé pour la démo est le service REST en ligne suivant (merci à l'auteur) :
- Récupération de la liste des clients :

- Récupération des attributs d'un client :
Le retour est sous forme de XML.
  • Mapping Informatica :
Le mapping qui permet d'effectuer le job est le suivant :
La source est une source bidon (DUAL dans Oracle).

La première partie du mapping permet de récupérer la liste des identifiants client. La HTTP Transformation est utilisée ici pour récupérer la liste des identifiants clients à partir d'un URL avec CUSTOMER comme élément final :
Le port de sortie HTTPOUT contient la réponse XML (Cf. ci-dessus). Pour parser ce XML et récupérer les identifiants clients, nous utilisons une XML Parser Transformation.

La deuxième partie du mapping permet de construire une URL dynamique pour chaque identifiant client récupéré à l'étape précédente et de rappeler le service REST pour ainsi extraire les attributs du client.
L'URL est construite dans l'Expression Transformation :
Puis, une Java Transformation est utilisée pour appeler l'URL construit :

Vous pouvez vous appuyer sur un développeur Java pour le code (comme on a fait nous même :)).
La réponse RESPONSE étant encore du XML, un XML parser est utilisé :
A la fin du traitement, chaque ligne client est transcrite dans le fichier de sortie sous une forme exploitable comme on l'a souhaité au début :

2 commentaires:

  1. Pouvez vous partarger votre code JAVA (ou meme le project!), je vous en serais tres reconnaissant. Merci D'avance,

    Frank Rojas, Chicago

    RépondreSupprimer
  2. Hello,firstly I would like to thank you for such a informative article and also would like to ask you that do you have some more articles like this on the wide use of Informatica.Thanks.

    RépondreSupprimer