Scénario : Effectuer une requête sur les nom d'aéroports à partir des codes pays

Composants Talend Open Studio Guide de référence

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

Ce scénario contient deux Jobs, un fournisseur de service de données et un consommateur de service de données. Le premier Job écoute les requêtes du consommateur via le tESBProviderRequest, met en correspondance le code pays contenu dans la requête avec une table d'une base de données MySQL contenant des paires code pays/aéroport via le tMap puis retourne le nom correct de l'aéroport via le tESBProviderResponse. Si aucune correspondance n'est trouvée, un message d'erreur est retourné via le tESBProviderFault. Le consommateur envoie des requêtes au fournisseur et reçoit les informations concernant les aéroports ou les erreurs via le tESBConsumer.

Construire le fournisseur de service de données pour publier un service

Le service de données airport a déjà été configuré sous le nœud Services de la vue Repository. Son schéma contient trois éléments majeurs :

Pour plus d'informations concernant la définition d'un service dans le studio, consultez le Guide utilisateur du Studio Talend.

Assigner un Job au service défini
  1. Cliquez-droit sur getAirportInformationByISOCountryCode sous le service Web airport et, dans le menu contextuel, sélectionnez Assign Job.

  2. Dans la fenêtre [Operation Choice], sélectionnez Create a new Job and Assign it to this Service Operation.

  3. Cliquez sur Next pour ouvrir la fenêtre de description de Job. Le nom du Job airportSoap_getAirportInformationByISOCountryCode est automatiquement renseigné.

  4. Cliquez sur Finish pour créer le Job et l'ouvrir dans l'espace de modélisation graphique. Trois composants sont déjà disponibles.

Déposer et relier les composants
  1. Déposez un tXMLMap et un tMysqlInput de la Palette dans l'espace de modélisation graphique.

  2. Reliez le tESBProviderRequest au tXMLMap à l'aide d'un lien Row > Main.

  3. Reliez le tMysqlInput au tXMLMap à l'aide d'un lien Row > Main.

  4. Reliez le tXMLMap au tESBProviderResponse à l'aide d'un lien Row > *New Output*(Main).

    Dans la fenêtre [new Output name], saisissez le nom de la table de sortie, airport_response.

    Cliquez sur OK dans la fenêtre vous proposant de récupérer le schéma du composant cible.

  5. Reliez le tXMLMap au tESBProviderFault à l'aide d'un lien Row > *New Output*(Main).

    Dans la fenêtre [new Output name] qui s'ouvre, saisissez le nom de la table de sortie, fault_message.

    Cliquez sur OK dans la fenêtre vous proposant de récupérer le schéma du composant suivant.

Configurer les composants
  1. Double-cliquez sur le tMysqlInput pour afficher sa vue Basic settings.

  2. Renseignez les propriétés de base de la connexion MySQL et de la table de base de données.

    Cliquez sur le bouton [...] pour ouvrir l'éditeur de schéma.

  3. Cliquez deux fois sur le bouton [+] pour ajouter deux colonnes de type String. Nommez-les respectivement id et name.

    Cliquez sur OK pour fermer l'éditeur.

    Cliquez sur Guess Query pour récupérer la requête SQL.

  4. Double-cliquez sur le tXMLMap pour ouvrir l'éditeur de mapping.

  5. Dans la table main : row1 du côté de l'entrée (gauche), cliquez-droit sur le nom de la colonne payload et, dans le menu contextuel, sélectionnez Import from Repository. L'assistant [Metadata] s'ouvre.

    Sélectionnez le schéma du message de requête et cliquez sur OK pour valider la sélection. Dans cet exemple, le schéma est getAirportInformationByISOCountryCode.

  6. Répétez l'opération pour importer le schéma hiérarchique pour les messages Response/Fault (droite). Dans cet exemple, les schémas sont respectivement getAirportInformationByISOCountryCodeResponse et getAirportInformationByISOCountryCodeFault.

  7. Pour créer la jointure sur les données de référence, déposez le nœud CountryAbbrviation de la table principale sur la ligne id de la table de référence (lookup).

  8. Dans la table de référence, cliquez sur l'icône de clé anglaise, dans le coin supérieur droit, pour ouvrir le panneau des paramètres.

    Paramétrez Lookup Model à Reload at each row, Match Model à All matches et Join Model à Inner join.

  9. Dans la table du flux de sortie airport_response, cliquez sur l'icône de clé anglaise, dans le coin supérieur droit, pour ouvrir le panneau des paramètres.

    Paramétrez l'option All in one à true. Cela vous assure qu'une seule réponse est retournée pour chaque requête si plusieurs aéroports correspondent dans la base de données.

  10. Dans la table de sortie fault_message, cliquez sur l'icône de clé anglaise, dans le coin supérieur droit, pour ouvrir le panneau des paramètres.

    Paramétrez l'option Catch Lookup Inner Join Reject à true pour monitorer les non-correspondances entre le code pays de la requête et les enregistrements dans la table de base de données. Lorsqu'une telle situation se produit, un message Fault est généré par le tESBConsumer et écrit en sortie par le flux Row > Fault.

    Note

    Le flux Row > Fault du tESBConsumer contient un schéma prédéfini dont la colonne faultString contient les données du champ Fault title du tESBProviderFault.

  11. Déposez la colonne name du flux de référence dans la zone Expression dans la table de sortie airport_response, à côté du nœud tns:getAirportInformationByISOCountryCodeResult.

    Déposez le nœud tns:CountryAbbreviation du flux principal dans la zone Expression à côté du nœud tns:getAirportInformationByISOCountryCodeFaultString dans la table de sortie fault_message. Ainsi, le code pays incorrect de la requête s'affiche dans la colonne faultDetail du flux Row > Fault du tESBConsumer.

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

  12. Double-cliquez sur le tESBProviderFault pour afficher sa vue Basic settings.

  13. Dans le champ Fault title, saisissez la variable de contexte context.fault_message.

    Pour plus d'informations concernant la définition des variables de contexte, consultez le Guide utilisateur du Studio Talend.

Exécuter le Job
  1. Appuyez sur les touches Ctrl +S pour sauvegarder le Job.

  2. Appuyez sur F6 pour exécuter le Job.