tESBProviderRequest - 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 tESBProviderRequest

Famille du composant

ESB/Web Services

 

Fonction

Expose un Job Talend comme un Service Web.

Objectif

Attend un message de requête d'un consommateur et le passe au composant suivant.

Basic settings

Property Type

Peut être Built-in ou Repository.

Depuis la version 5.6, les modes Built-In et Repository sont disponibles dans toutes les solutions de Talend.

  Built-in : Aucun fichier WSDL n'est configuré pour le Job.
  Repository : Sélectionnez le fichier de service Web souhaité depuis le Repository pour sélectionner les paramètres (granularité) du nom du port et de l'opération.
 

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].

 

 

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.

 

Keep listening

Cochez cette case lorsque vous souhaitez assurer que le fournisseur (le Job Talend) continue à écouter les requêtes après traitement de la première requête entrante.

Advanced settings Log messages (Studio only) Cochez cette case pour enregistrer l'échange de messages entre le service et le consommateur. Cette option fonctionne uniquement avec le Studio.

tStatCatcher Statistics

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

Dynamic settings

Cliquez sur le bouton [+] pour ajouter une ligne à la table. Dans le champ Code, saisissez une variable de contexte afin d'activer ou désactiver dynamiquement l'option Keep listening au moment de l'exécution.

Lorsqu'un paramètre dynamique est défini, l'option Keep listening correspondante est désactivée dans la vue Basic settings.

Pour des exemples sur l'usage des paramètres dynamiques, consultez Scénario 3 : Lire des données dans des bases de données MySQL à l'aide de connexions dynamiques basées sur les variables de contexte et Scénario : Lire des données à partir de différentes bases de données MySQL à l'aide de paramètres de connexion chargés dynamiquement. Pour plus d'informations concernant les Dynamic settings et les variables de contexte, consultez le Guide utilisateur du Studio Talend.

Global Variables 

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

CORRELATION_ID : l'ID de corrélation par lequel regrouper les appels de services en chaîne. Cette variable est une variable Flow et retourne une chaîne de caractères.

SECURITY_TOKEN : informations concernant l'identité de l'utilisateur dans l'en-tête de requête. Cette variable est une variable Flow et retourne un nœud XML.

HEADERS_SOAP : en-têtes de la requête SOAP. Cette variable est une variable Flow et retourne tous les en-têtes des requêtes SOAP.

HEADERS_HTTP : en-têtes de la requête HTTP. Cette variable est une variable Flow et retourne tous les en-têtes des requêtes HTTP.

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 couvre la possibilité d'exposer un Job Talend en tant que Service, avec la possibilité d'écrire une requête de service dans un Job et retourne le résultat du Job en tant que réponse.

Le composant tESBProviderResponse peut livrer le payload d'un message SOAP et accéder aux en-têtes HTTP et SOAP d'un service.

Le composant tESBProviderRequest doit être utilisé avec le tESBProviderResponse afin de fournir une réponse à la fin du Job, dans le cas d'une communication de style requête-réponse.

Lorsque SAML Token ou Service Registry est activé dans les options du Runtime et si le jeton SAML existe dans l'en-tête de la requête, le tESBProviderRequest obtient et stocke le jeton SAML dans la variable du composant pour un usage ultérieur dans le flux.

Le tESBProviderRequest obtient une valeur de corrélation (Correlation Value) dans l'en-tête de la requête si la valeur existe et qu'elle est stockée dans la variable du composant. Lorsqu'une corrélation métier (Business Correlation) ou le registre de Service (Service Registry) est activé(e) dans les options du Runtime, la Correlation Value est également ajoutée à la réponse. Dans ce cas, le tESBProviderRequest crée une Correlation Value si elle n'existe pas.

Notez que l'option de Service Registry est disponible uniquement si vous avez souscrit à l'une des solutions Enterprise ESB de Talend. Pour plus d'informations concernant les options du Runtime, consultez la section correspondante dans le Guide utilisateur du Studio Talend.

Limitation

Une JDK est requise pour que ce composant fonctionne.

Scénario : Envoi d'un message via un service sans attente de réponse

Les Jobs suivants, construits sur les composants de la famille ESB/Web Service implémentent des services Web définis dans le nœud Services du Repository. Ils requièrent la création et l'association des services correspondants. Pour plus d'informations concernant les services, consultez le Guide utilisateur du Studio Talend.

Dans ce scénario, un Job fournisseur et un Job consommateur sont nécessaires. Par ailleurs, le service correspondant doit déjà exister sous le nœud Services, avec l'URI http://127.0.0.1.8088/esb/provider/?WSDL, le port TEST_ProviderJobSoapBinding et l'opération invoke(anyType):anyType

Le Job fournisseur comprend les composants suivants : un tESBProviderRequest, un tXMLMap et deux tLogRow.

  • Déposez les composants suivants de la Palette dans l'espace de modélisation graphique : un tESBProviderRequest, un tXMLMap et deux tLogRow.

  • Double-cliquez sur le composant tESBProvider Request afin d'ouvrir sa vue Basic settings.

  • Sélectionnez Repository dans la liste Property Type et cliquez sur le bouton [...] afin de choisir le service, la granularité du port et l'opération.

  • Cliquez sur OK.

  • Cliquez sur le bouton [...] à côté du champ Edit schema pour voir le schéma du composant tESBProvider Request.

  • Cliquez sur OK.

  • Connectez le tESBProviderRequest au composant tLogRow_1.

  • Double-cliquez sur le tLogRow_1 dans l'espace de modélisation graphique afin d'afficher sa vue Basic settings.

  • Cliquez sur le bouton [...] à côté du champ Edit schema et configurez le schéma comme suit.

  • Connectez le tLogRow_1 au tXMLMap.

  • Reliez le tXMLMap et tLogRow_2 et nommez la connexion payload.

  • Dans l'espace de modélisation graphique, double-cliquez sur le tXMLMap afin d'ouvrir le Map Editor.

  • Dans la partie inférieure droite de l'éditeur, cliquez sur le bouton [+] pour ajouter une ligne à la table payload et nommez cette ligne payload.

  • Dans la colonne Type de cette ligne payload, sélectionnez le type de données Document. La racine XML correspondante est ajoutée automatiquement à la table supérieure de droite, représentant le flux de sortie.

  • Dans la table payload, cliquez-droit sur root pour ouvrir son menu contextuel.

  • Dans le menu contextuel, sélectionnez Create Sub-Element et saisissez response dans la boîte de dialogue.

  • Cliquez-droit sur le nœud response et sélectionnez As loop element dans le menu contextuel.

  • Répétez l'opération pour créer un sous-élément request du noeud root dans la table d'entrée et définissez le nœud request comme élément de boucle.

  • Cliquez sur le nœud request dans la table d'entrée et déposez-le dans la colonne Expression de la ligne du nœud response de la table de sortie.

  • Cliquez sur OK pour valider le mapping et fermer l'éditeur.

  • Double-cliquez sur le tLogRow_2 dans l'espace de modélisation graphique afin d'afficher sa vue Basic settings.

  • Cliquez sur le bouton [...] à côté du champ Edit schema et configurez le schéma comme suit.

  • Sauvegardez le Job.

Le Job consommateur comprend un tFixedFlowInput, un tXMLMap, un tESBConsumer et deux tLogRow.

  • Déposez les composants suivants de la Palette dans l'espace de modélisation graphique : un tFixedFlowInput, un tXMLMap, un tESBConsumer et deux tLogRow.

  • Double-cliquez sur le tFixedFlowInput afin d'afficher sa vue Basic settings.

  • Configurez le schéma du composant tFixedFlowInput.

  • Cliquez sur le bouton [+] pour ajouter une ligne de type String et nommez-la payloadString.

  • Cliquez sur OK.

  • Dans le champ Number of rows, configurez le nombre de lignes à 1.

  • Dans la zone Mode, sélectionnez Use Single Table et saisissez world entre guillemets, dans le champ Value.

  • Connectez le tFixedFlowInput au tXMLMap.

  • Reliez le tXMLMap au tESBConsumer et nommez la connexion payload.

  • Dans l'espace de modélisation graphique, double-cliquez sur le tXMLMap pour ouvrir le Map Editor.

  • Dans la table de sortie, cliquez-droit sur root pour ouvrir son menu contextuel.

  • Dans le menu contextuel, sélectionnez Create Sub-Element et saisissez request dans la boîte de dialogue.

  • Cliquez-droit sur le nœud request et sélectionnez As loop element dans le menu contextuel.

  • Cliquez sur le nœud payloadstring dans la table d'entrée et déposez-le dans la colonne Expression dans la ligne du nœud request de la table de sortie.

  • Cliquez sur OK pour valider le mapping et fermer l'éditeur.

  • Démarrez le Job fournisseur. Dans le log d'exécution, vous pouvez voir :

    ... 
    web service [endpoint: http://127.0.0.1:8088/esb/provider] published 
    ...

  • Dans la vue Component du tESBConsumer, configurez ses propriétés.

  • Cliquez sur le bouton [...] à côté du champ Service Configuration afin d'ouvrir l'éditeur.

  • Dans le champ WSDL, saisissez : http://127.0.0.1:8088/esb/provider?WSDL

  • Cliquez sur le bouton Refresh afin de récupérer le nom du port et de l'opération.

  • Cliquez sur OK.

  • Configurez le schéma d'entrée (Input Schema) du composant tESBConsumer comme suit.

  • Configurez le schéma de réponse (Response Schema) comme suit.

  • Configurez le schéma Fault comme suit.

  • Connectez le composant tESBConsumer au tLogRow_1 et au tLogRow_2.

  • Dans l'espace de modélisation graphique, double-cliquez sur le tLogRow_1 afin d'afficher sa vue Basic settings.

  • Cliquez sur le bouton à côté du champ Edit schema et configurez le schéma comme suit.

  • Dans l'espace de modélisation graphique, double-cliquez sur tLogRow_2 afin d'afficher sa vue Basic settings.

  • Cliquez sur le bouton [...] à côté du champ Edit schema et configurez le schéma comme suit.

  • Sauvegardez le Job.

  • Exécutez le Job fournisseur. Vous pouvez voir dans le log d'exécution :

    INFO: Setting the server's publish address to be http://127.0.0.1:8088/esb/provider

    2011-04-21 14:14:36.793:INFO::jetty-7.2.2.v20101205

    2011-04-21 14:14:37.856:INFO::Started

    SelectChannelConnector@127.0.0.1:8088

    web service [endpoint: http://127.0.0.1:8088/esb/provider] published

  • Exécutez le Job consommateur. Vous pouvez voir dans le log d'exécution du Job :

    Starting job CallProvider at 14:15 21/04/2011.
    
    [statistics] connecting to socket on port 3942
    [statistics] connected
    TEST_ESBProvider2
    TEST_ESBProvider2SoapBingding
    |
    [tLogRow_2] payloadString: <request>world</request>
    {http://talend.org/esb/service/job}TEST_ESBProvider2
    {http://talend.org/esb/service/job}TEST_ESBProvider2SoapBinding
    invoke
    [tLogRow_1] payload: null
    [statistics] disconnected
    Job CallProvider2 ended at 14:16 21/04/2011. [exit code=0]

  • Dans le log du fournisseur vous pouvez voir le log des traces :

    web service [endpoint: http://127.0.0.1:8088/esb/provider]
    published
    [tLogRow_1] payload: <?xml version="1.0" encoding="UTF-8"?>
    <request>world</request>
    ### world
    [tLogRow_2] content: world
    [tLogRow_3] payload: <?xml version="1.0" encoding="UTF-8"?>
    <response xmlns="http://talend.org/esb/service/job">Hello, world!</response>
    web service [endpoint: http://127.0.0.1:8088/esb/provider] unpublished
    [statistics] disconnected
    Job ESBProvider2 ended at 14:16 21/04/2011. [exit code=0]