• Ce blog — désormais archivé — est en lecture seule.

Création d’un WebService avec Talend Open Studio

Talend Open Studio est un ETL (Extract Transform Load). Autrement dit, c’est un middleware qui permet de manipuler des données. C’est une solution d’intégration de données gratuite et très performante.

Son interface reprend l’interface d’Eclipse. Il permet de générer du code Java ou Perl, et cela sans même connaître ces langages. En effet tout se fait à la souris, il suffit de placer les éléments à notre disposition et de les lier entre eux.

Voilà l’environnement à notre disposition :

On manipule un flux avec une ou plusieurs entrées et la même chose pour les sorties. L’interface est agréable, on peut rajouter notre propre code, nos propres librairies et les éléments à notre disposition sont nombreux.

Création d’un WebService

Grâce à Talend Open Studio le développement d’un WebService devient simpliste. Pour exemple, prenons un WebService qui écrit ce qu’il reçoit dans un fichier XML.

On commence par créer un nouveau projet en local, donner le nom WebService et choisir le langage Java. Dans la partie gauche de l’IDE, on clique-droit sur Job Designs pour créer un job. On nomme ce job saveXML.

On commence par créer l’élément d’entrée qui est un tFixedFlowInput. On le glisse dans la zone de dessin :

On crée maintenant notre sortie, un tFileOutputXML. La base de notre WebService est posée, il faut maintenant le configurer.

Dans l’onglet Contexts on ajoute une variable value :

C’est cette variable que nous allons modifier en invoquant le WebService. Maintenant on sélectionne l’élément tFixedFlowInput et on va modifier ses paramètres dans l’onglet Component. Il s’agit d’ajouter l’attribut value de type String à notre schéma en l’éditant (1) puis de lui attribuer la valeur du contexte (2) :

Notre point d’entrée est configuré, il reste à le relier à notre point de sortie. Pour cela :

Clique-droit sur l’élément tFixedFlowInput > Ligne > Principal

Et on sélectionne notre tFileOutputXML. On obtient ceci :

Maintenant il s’agit de configurer le tFileOutputXML. Pour cela, on synchronise les colonnes dans l’onglet Component (1), on indique le chemin du fichier de sortie (2) et on change le row tag (3) qui correspond au nom de la balise qui encadrera notre value :

Le WebService est créé, on peut l’exécuter dans l’onglet prévu à cet effet. On doit obtenir une sortie de ce genre :

Démarrage du jobsaveXML a 18:16 13/04/2009.

Job saveXML terminé à 18:16 13/04/2009. [Code sortie=0]

Cette exécution a généré le fichier XML suivant :

<?xml version="1.0" encoding="ISO-8859-15"?>
<root>
  <Value>
    <value>null</value>
  </Value>
</root>

Pour déployer ce job en WebService, il faut l’exporter :

Clique-droit sur le job > Export Job Scripts

On choisit le type d’export Axis Webservice (WAR), on définit le chemin de l’archive et on clique sur Finish. On obtient une archive WAR que l’on peut déployer sur un serveur Tomcat ou JBoss par exemple.

Le fichier WSDL est disponible à l’adresse saveXML_0.1/wsdl/saveXML.wsdl et le service est disponible à l’adresse saveXML_0.1/services/saveXML.

Invocation du service

Pour créer le client, on peut utiliser Eclipse couplé au plugin WTP, générer un squelette et écrire notre client. Pour information, il faudra invoquer la méthode jobRun() et passer l’argument de la forme : –context_param value=xxxxx.

Aller plus loin

Pour améliorer ce WebService, on peut tenter de passer des objets. Pour cela, on rajoutera une serialisation de l’objet, suivi d’un encodage en base64 côté client, et l’inverse côté WebService. Dans Talend, il suffira d’ajouter un élément tJavaRow entre nos deux éléments.

On travaillera avec deux valeurs :

- un input_row.value qui proviendra du tFixedFlowInput et qui sera de type String.

- un output_row.value qui sera de type Object et qui représentera notre objet désérialisé en sortie.

L’important est d’utiliser le même processus de sérialisation/désérialisation.

Par la suite, on pourra accéder aux propriétés de l’objet avec une tMap. Si l’objet est un objet Java courant, pas de problème. Si l’objet nous est propre il faudra charger une librairie à l’aide de l’élément tLibrairyLoad.

Une tMap permet de transformer notre flux de données. Par exemple, d’un côté nous aurons notre objet, et de l’autre ses propriétés. Sur l’exemple ci-dessous, la tMap prend en entrée un objet value (désérialiser auparavant) et distribue en sortie ses propriétés id et type :

Talend Open Studio offre ainsi de nombreuses possibilités.

Pourquoi utiliser Talend Open Studio

Un WebService comme celui-ci est simple à réaliser sous Eclipse + WTP, alors pourquoi se servir de Talend ?

Une fois le job créé, je décide de changer ma sortie XML en insertion en base de données, rien de plus simple, je supprime l’élément tFileOutputRow et je le remplace par l’élément tMysqlOutput (si le SGBD est MySQL). J’exporte de nouveau et c’est tout. Gain de temps non négligeable, et simplicité indégnable.

Talend Open Studio apporte beaucoup de solutions quant au traitement des données, il est très utilisé, très performant, et en plus il est gratuit ! :-)

  • Print
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • FriendFeed
  • LinkedIn
  • MySpace
  • Netvibes
  • PDF
  • Ping.fm
  • RSS
  • Technorati
  • viadeo FR
  • Wikio
  • Yahoo! Buzz

Related Posts

Cet article a été publié dans Ancien blog avec les mots-clefs : , , , , . Bookmarker le permalien. Les commentaires et les trackbacks sont fermés.