tESBProviderFault - 6.1

Composants Talend Open Studio Guide de référence

EnrichVersion
6.1
EnrichProdName
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for ESB
Talend Open Studio for MDM
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Avertissement

Ce composant est adapté pour une utilisation au sein de la perspective Mediation du Studio Talend. Il requiert l'utilisation du nœud du Repository Service et des assistants de création de Services.

Propriétés du tESBProviderFault

Famille du composant

ESB/Web Services

 

Fonction

Génère un message Fault (message d'erreur) provenant du Service Web, à la fin du Job Talend.

Objectif

Retourne un message Fault provenant du Service Web à la fin du cycle du Job Talend.

Basic settings

Schema et Edit Schema

Un schéma est une description de lignes, il définit le nombre de champs (colonnes) qui sont traités et passés au composant suivant. Le schéma est soit local (Built-In), soit distant dans le Repository.

Cliquez sur Edit schema pour modifier le schéma. Si le schéma est en mode Repository, trois options sont disponibles :

  • View schema : sélectionnez cette option afin de voir le schéma.

  • Change to Built-In property : sélectionnez cette option pour passer le schéma en mode Built-In et effectuer des modifications locales.

  • Update repository connection : sélectionnez cette option afin de modifier le schéma stocké dans le référentiel et décider de propager ou non les modifications à tous les Jobs. Si vous souhaitez propager les modifications uniquement au Job courant, sélectionnez No et sélectionnez à nouveau la métadonnée du schéma dans la fenêtre [Repository Content].

Cliquez sur Sync columns afin de récupérer automatiquement les colonnes du composant précédent.

 

 

Built-in : Le schéma sera créé et conservé pour ce composant seulement. Voir également le Guide utilisateur du Studio Talend.

 

 

Repository : Le schéma existe déjà et est stocké dans le Repository. Ainsi, il peut être réutilisé dans divers projets et Jobs. Voir également le Guide utilisateur du Studio Talend.

 

EBS service settings

Fault title : Valeur de la colonne faultString dans le message Fault.

Note

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

Advanced settings

tStatCatcher Statistics

Cochez cette case pour collecter les données de log, aussi bien au niveau du Job qu'au niveau de chaque composant.

Global Variables 

NB_LINE : nombre de lignes traitées. Cette variable est une variable After et retourne un entier.

ERROR_MESSAGE : message d'erreur généré par le composant lorsqu'une erreur survient. Cette variable est une variable After et retourne une chaîne de caractères. Cette variable fonctionne uniquement si la case Die on error est décochée, si le composant a cette option.

Une variable Flow fonctionne durant l'exécution d'un composant. Une variable After fonctionne après l'exécution d'un composant.

Pour renseigner un champ ou une expression à l'aide d'une variable, appuyez sur les touches Ctrl+Espace pour accéder à la liste des variables. A partir de cette liste, vous pouvez choisir la variable que vous souhaitez utiliser.

Pour plus d'informations concernant les variables, consultez le Guide utilisateur du Studio Talend.

Utilisation

Ce composant doit être utilisé uniquement avec le composant tESBProviderRequest.

Limitation

Une JDK est requise pour que ce composant puisse fonctionner.

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

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.

Le service de données est publié et écoute toutes les requêtes jusqu'à ce que vous cliquiez sur le bouton Kill pour l'arrêter, puisque, par défaut, l'option Keep listening du tESBProviderRequest est automatiquement sélectionnée.

Configurez le Job consommateur qui interagit avec le service de données.

Construire le consommateur de service de données pour envoyer une requête au service

Construit autour du tESBConsumer, le Job consommateur envoie deux requêtes contenant des codes pays au service Web pour obtenir le nom des aéroports correspondants. Si un mauvais code pays est contenu dans la requête, un message d'erreur est retourné. Les codes pays et les enregistrements de la base de données MySQL se présentent comme suit :

Déposer et relier les composants
  1. Déposez un tFileInputDelimited, un tXMLMap, un tESBConsumer et deux tLogRow de la Palette dans l'espace de modélisation graphique.

  2. Renommez un tLogRow response et l'autre fault_message.

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

  4. Reliez le tXMLMap au tESBConsumer à 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, par exemple request.

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

  5. Reliez le tESBConsumer au composant response à l'aide d'un lien Row > Response.

  6. Reliez le tESBConsumer au fault_message à l'aide d'un lien Row > Fault.

Configurer les composants
  1. Double-cliquez sur le tFileInputDelimited pour ouvrir sa vue Basic settings.

  2. Dans le champ File name/stream, saisissez la variable de contexte pour le fichier contenant les codes pays, par exemple context.filepath.

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

  4. Cliquez sur le bouton [+] pour ajouter une colonne country_code, de type String.

    Cliquez sur OK pour fermer l'éditeur.

  5. Double-cliquez sur le tXMLMap pour ouvrir son éditeur de mapping.

  6. Dans la table request du flux de sortie, cliquez-droit sur 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.

  7. Déposez la colonne country_code du flux principal dans la zone Expression, à côté du nœud tns:CountryAbbreviation dans le flux de sortie request.

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

  8. Double-cliquez sur le composant tESBConsumer pour ouvrir son assistant de configuration de service.

  9. Cliquez sur le bouton Browse... pour sélectionner le fichier WSDL défini. Les champs Port name et Operation sont automatiquement renseignés, une fois le fichier WSDL sélectionné.

    Cliquez sur OK pour fermer l'assistant.

  10. Double-cliquez sur le composant response pour ouvrir sa vue Basic settings.

  11. Sélectionnez l'option Vertical (each row is a key/value list) puis Print label afin de visualiser les résultats de manière optimale.

    Répétez l'opération pour l'autre tLogRow, fault_message.

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

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

    Comme affiché ci-dessus, deux messages sont retournés, le premier donnant le nom de l'aéroport correspondant au code pays CN et le second donnant les détails de l'erreur causée par le code pays CC.