Création d'un service de données - 6.3

Talend Data Fabric Studio Guide utilisateur

EnrichVersion
6.3
EnrichProdName
Talend Data Fabric
task
Création et développement
Qualité et préparation de données
EnrichPlatform
Studio Talend

Pour créer un service de données dans la perspective Integration du Studio Talend, vous devez créer un Job de service de données couvrant les différentes sources et cibles requises pour les processus d'intégration de données et les combiner avec des services Web.

La perspective Integration du Studio Talend fournit l'élément Services pour créer un Job de service de données à partir d'un WSDL défini dans la vue Repository.

Les sections suivantes présentent un scénario illustrant la création d'un fichier WSDL et des Jobs de service de données pour fournir et consommer un service Web.

Présentation du scénario

Pour illustrer comment le Studio Talend combine l'intégration de données aux services Web, vous trouverez ci-dessous un scénario reflétant un cas d'utilisation réelle. Dans ce scénario, vous devez configurer un service Web relatif aux aéroports, en créant un fichier WSDL, en envoyant une requête au service Web pour obtenir des codes pays et récupérer la réponse du service Web pour une utilisation ultérieure. Pour ce faire, vous devez créer deux Jobs de services de données :

  • un Job qui permet d'accéder au service Web via un WSDL, pour envoyer une requête et récupérer la réponse - le fournisseur de service de données.

  • un Job qui envoie les données pour interroger le service Web - le consommateur de service de données.

Configuration du service Web

Depuis l'élément Services de la vue Repository, vous pouvez configurer le service Web qui vous intéresse en créant un fichier WSDL ou en important un fichier WSDL existant.

Dans ce scénario, créez un nouveau fichier WSDL pour définir le service Web relatif aux aéroports. Pour plus d'informations concernant la création d'un fichier WSDL à partir de rien, consultez Créer un Service et Editer un fichier WSDL.

Pour définir le service Web relatif aux aéroports, procédez comme suit :

  1. Dans la vue Repository, cliquez-droit sur le nœud Services et, dans le menu contextuel, sélectionnez Create Service.

  2. Dans l'assistant qui s'ouvre, saisissez les informations nécessaires dans les champs correspondants. Dans ce scénario, saisissez airport dans le champ Name. Cliquez sur Next pour passer à l'étape suivante.

  3. Sélectionnez l'option Create new WSDL.

  4. Cliquez sur Finish pour valider la création.

    Le service s'ouvre dans l'espace de modélisation graphique, sur un squelette WSDL simple, contenant un service, un binding et un type de port d'une opération.

  5. Cliquez-droit sur le port airportPort dans le squelette WSDL et sélectionnez Show properties.

    Dans la vue Properties, définissez son nom, dans le champ Name, par exemple, airportSoap.

    Dans le champ Address, spécifiez l'adresse où vous souhaitez publier le service, par exemple, http://localhost:8200/airport.service.

  6. Cliquez sur le binding du squelette WSDL.

    Dans sa vue Properties, définissez le nom du binding, par exemple airportSoap.

  7. Click the portType airportPortType in the WSDL skeleton.

    In its Properties view, define the name of the portType, for example airportSoap.

  8. Cliquez sur l'opération airportOperation dans le squelette WSDL.

    Dans sa vue Properties, configurez son nom comme getAirportInformationByISOCountryCode.

  9. Sauvegardez le fichier WSDL. Vous l'utiliserez pour construire le service Web.

    Le nouveau service Web défini s'affiche sous le nœud Services de la vue Repository avec une icône représentant un point d'exclamation. L'icône exclamative signifie que ce service Web n'est pas encore utilisé.

  10. Sous le nœud Services, cliquez-droit sur airport 0.1 et sélectionnez Import WSDL Schemas.

    Cette option importe la métadonnée WSDL du service vers le Repository, sous Metadata > File xml, ce qui vous permet de partager les détails de l'opération entre les services et d'autres composants.

Création d'un fournisseur de service de données

Dans ce scénario, le fournisseur de service de données utilise les composants tESBProviderRequest et tESBProviderResponse pour créer l'accès au service Web relatif aux aéroports et utilise le composant tXMLMap pour obtenir les données des aéroports, fournies par une base de données MySQL dans le flux principal requête-réponse, pour publication. Les données de la base de données sont chargées par le composant tMysqlInput.

Afin de créer ce fournisseur de service de données, procédez comme suit :

  1. Sous le nœud Services de la vue Repository, cliquez-droit sur l'opération du nouveau service Web concernant les aéroports et dans le menu contextuel, sélectionnez Assign Job. Dans ce scénario, cette opération est getAirportInformationByISOCountryCode.

  2. L'assistant [Assign Job] s'ouvre. Sélectionnez l'opération Create a new Job and Assign it to this Service Operation puis cliquez sur Next.

  3. Dans la vue [New Job] de l'assistant, le Job à créer est déjà nommé automatiquement, cliquez sur Finish.

    Une esquisse de Job s'ouvre dans l'espace de modélisation graphique.

Déposer et relier les composants

Dans ce Job, les composants tESBProviderRequest et tESBProviderResponse déjà configurés. Le composant tESBProviderRequest envoie une requête au service Web spécifié et le tESBProviderResponse renvoie la réponse correspondant à la requête. Ces deux composants sont dans la famille ESB de la Palette.

Pour créer ce Job fournisseur de service de données, procédez comme sut :

  1. Cliquez-droit sur le composant tESBProviderRequest et glissez jusqu'au tESBProviderResponse pour relier ces deux composants.

  2. Déposez un tXMLMap de la Palette au milieu du lien Row et, dans la fenêtre qui s'ouvre, nommez le lien de sortie, par exemple, airport_response. Ce nom sera également utilisé comme nom de la table de sortie dans le Map Editor du tXMLMap. Pour plus d'informations, consultez Conception d'un Job.

    Votre Job fournisseur de service de données doit ressembler à ceci :

    L'icône rouge vous demande de configurer le composant tXMLMap.

  3. Depuis le nœud Db Connections de la vue Repository, déposez la connexion aux données des aéroports, la table airport de la base de données, dans l'espace de modélisation graphique. L'assistant [Components] s'ouvre.

    Pour plus d'informations concernant la création d'une connexion à une base de données dans la vue Repository, consultez Centraliser des métadonnées de base de données.

  4. Double-cliquez sur le tMysqlInput dans cet assistant pour ajouter le composant correspondant dans l'espace de modélisation graphique et le relier au tXMLMap.

Dans ce scénario, les données relatives aux aéroports sont composées de noms d'aéroports et du code pays correspondant. La capture d'écran montre la table de base de données utilisée.

Il vous reste à configurer le composant tXMLMap, car les autres composants sont automatiquement configurés.

Configurer le tXMLMap

Pour ce faire, effectuez les opérations suivantes :

  1. Dans l'espace de modélisation graphique, double-cliquez sur le composant tXMLMap pour ouvrir son éditeur, qui doit ressembler à ceci :

  2. Dans la table main : row du flux d'entrée (à gauche), cliquez-droit sur le nom de la colonne payload et, dans le menu contextuel, sélectionnez Import from Repository. L'assistant [Metadatas] s'ouvre. Pour plus d'informations, consultez Utiliser le type Document pour créer l'arborescence XML.

  3. Développez le nœud File XML dans l'assistant, sélectionnez le schéma du côté de la requête et cliquez sur OK pour valider cette sélection. Dans cet exemple, le schéma est getAirportInformationByISOCountryCode.

  4. Effectuez la même opération pour importer le schéma hiérarchique pour le côté de la réponse (à droite). Dans cet exemple, le schéma est getAirportInformationByISOCountryCodeResponse.

  5. Pour créer une jointure sur les données de référence, cliquez sur le nœud CountryAbbrviation du côté de l'entrée, maintenez le clic et déposez le nœud sur la colonne Exp.key du flux de référence (lookup) correspondant à la ligne id.

  6. Dans la table représentant le flux de référence, cliquez sur l'icône de clé anglaise dans le coin supérieur droit pour ouvrir le panneau de configuration.

  7. Définissez Lookup Model comme Reload at each row, Match Model comme All matches et Join Model comme Inner join.

    Pour plus d'informations concernant Lookup Model, consultez Gestion des références.

    Pour plus d'informations concernant Match Model, consultez Utiliser les jointures explicites.

    Pour plus d'informations concernant Join Model, consultez Utiliser la fonction Inner Join.

    Un tutoriel étape par étape concernant les jointures est disponible à l'adresse suivante : http://talendforge.org/tutorials/tutorial.php?language=french&idTuto=101.

  8. Répétez l'opération pour ouvrir le panneau de configuration du côté de la sortie (à droite) et configurez l'option All in one sur true. Cela vous assure que seule une réponse est retournée pour chaque requête envoyée, sinon, les données des aéroports de la base de données peuvent fournir plusieurs aéroports, donc plusieurs réponses, pour chaque code pays envoyé comme une requête.

    Pour plus d'informations concernant l'option All in one, consultez Ecrire dans un document les éléments en sortie.

  9. Cliquez sur la ligne name dans le flux de référence (à gauche), maintenez le clic et déposez la ligne sur la colonne Expression correspondante dans le nœud tns:getAirportInformationByISOCountryCodeResult dans l'arborescence XML du flux de sortie (airport_response dans cet exemple).

    L'éditeur de votre tXMLMap doit ressembler à ceci :

    Note

    Dans un cas réel d'utilisation, vous pouvez également ajouter des données hiérarchiques pour référence. Pour plus d'informations, consultez le Guide de référence des Composants Talend.

  10. Cliquez sur OK pour fermer l'éditeur et valider sa configuration.

Exécuter le Job

Appuyez sur F6 pour exécuter le Job. Une fois lancé, la vue Run s'ouvre et vous pouvez lire les résultats d'exécution.