Scénario 2 : Utiliser les paramètres URI Query pour explorer les données d'une base de données - 6.1

Composants Talend Guide de référence

EnrichVersion
6.1
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
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
Talend Real-Time Big Data Platform
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Ce scénario décrit comment utiliser les paramètres URI query dans le tRESTRequest afin d'explorer les données d'une base de données et d'envoyer la réponse via le tRESTResponse.

Pour ce faire, vous devez créer deux sous-jobs connectés à l'aide d'un lien OnSubjobOk. Ainsi, les deux sous-jobs seront exécutés séquentiellement. Pour plus d'informations concernant les connexions Trigger, consultez le Guide utilisateur du Studio Talend. Le premier sous-job crée et alimente la base de données. Le second permet d'explorer la base de données via le service REST.

Créer le premier sous-job

Pour ce faire, procédez comme suit :

  1. Déposez les composants suivants de la Palette dans l'espace de modélisation graphique : tFixedFlowInput de la famille Misc et tMysqlOutput de la famille Databases > Mysql.

  2. Reliez le tFixedFlowInput au tMysqlOutput à l'aide d'un lien Row > Main.

  3. Double-cliquez sur le tFixedFlowInput pour afficher sa vue Basic settings :

  4. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir l'éditeur du schéma.

  5. Dans l'éditeur du schéma, cliquez trois fois sur le bouton [+] afin d'ajouter trois lignes. Paramétrez-les comme dans la capture d'écran.

  6. Cliquez sur OK.

  7. Retournez dans les propriétés du tFixedFlowInput, dans sa vue Basic settings. Dans la zone Mode, sélectionnez l'option Use inline table.

  8. Sous le tableau, cliquez trois fois sur le bouton [+] afin d'ajouter trois lignes.

  9. Dans le tableau, cliquez sur le champ id de la première ligne et saisissez 1.

  10. Cliquez sur le champ firstname de la première ligne, appuyez sur les touches Ctrl+Espace pour afficher la liste d'autocomplétion et sélectionnez la variable TalendDataGenerator.getFirstName() dans la liste.

  11. Cliquez sur le champ lastname de la première ligne, appuyez sur les touches Ctrl+Espace pour afficher la liste d'autocomplétion et sélectionnez la variable TalendDataGenerator.getLastName() dans la liste.

  12. Répétez l'opération pour les lignes suivantes, afin d'obtenir les mêmes paramètres que dans la capture d'écran.

  13. Double-cliquez sur le tMysqlOutput pour afficher sa vue Basic settings.

  14. Dans la liste Property Type, laissez sélectionné le mode Built-in et renseignez les champs Host, Port, Database, Username et Password manuellement. Si vous avez centralisé vos informations de connexion à la base de données dans le nœud Metadata > DB Connections du Repository, vous pouvez sélectionner Repository dans la liste. Les champs seront automatiquement renseignés.

    Pour plsu d'informations concernant le stockage des métadonnées, consultez le Guide utilisateur du Studio Talend.

  15. Dans le champ Table, saisissez le nom de la table dans laquelle les données vont être chargées, par exemple : users.

  16. Dans la liste Action on table, sélectionnez Drop table if exists and create, puis sélectionnez Insert dans la liste Action on data.

  17. Cliquez sur Sync columns pour récupérer le schéma provenant du composant précédent.

Créer le second sous-job

Pour ce faire, procédez comme suit :

  • Glissez-déposez les composants suivants, comme dans la première capture d'écran.

    • Un tRESTRequest et un tRESTResponse de la famille ESB > REST,

    • un tFlowToIterate de la famille Orchestration,

    • un tMysqlInput de la famille Databases > Mysql,

    • un tXMLMap de la famille Processing.

Configurer le composant tRESTRequest

Pour ce faire, procédez comme suit :

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

  2. Renseignez le champ REST Endpoint avec l'emplacement de l'URI où le service Web REST-ful sera accessible pour les requêtes. Par exemple, "http://localhost:8088/users".

  3. Cliquez sur le bouton [+] pour ajouter une ligne dans le tableau REST API Mapping.

  4. Sélectionnez la nouvelle ligne et cliquez sur le bouton [...] dans la colonne Output Flow afin d'ajouter un schéma au flux de sortie.

  5. Dans la boîte de dialogue, nommez le flux de sortie getUsers. Un éditeur de schéma s'ouvre.

  6. Dans l'éditeur de schéma, cliquez deux fois sur le bouton [+] pour ajouter deux lignes et paramétrez-les comme dans la capture d'écran ci-dessus.

  7. Cliquez sur OK.

  8. Retournez dans les propriétés du tRESTRequest, dans sa vue Basic settings, sélectionnez GET dans la liste de la colonne HTTP Verb.

  9. Laissez la colonne URI Pattern telle qu'elle est.

Vous avez créé le flux de sortie du tRESTRequest, vous pouvez donc utiliser le lien correspondant pour le connecter au composant suivant :

  1. Connectez le tRESTRequest au tFlowToIterate à l'aide d'un lien Row > getUsers.

  2. Laissez les paramètres du tFlowToIterate tels qu'ils sont.

  3. Connectez le tFlowToIterate au tMysqlInput à l'aide d'un lien Row > Iterate.

Configurer le composant tMysqlInput

Pour ce faire, procédez comme suit :

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

  2. Dans la liste Property Type, sélectionnez Built-in et renseignez les champs Host, Port, Database, Username et Password manuellement. Si vous avez centralisé vos informations de connexion dans le nœud Metadata > DB Connections du Repository, vous pouvez sélectionner Repository dans la liste. Les champs seront automatiquement renseignés.

    Pour plus d'informations concernant le stockage des métadonnées, consultez le Guide utilisateur du Studio Talend.

  3. Dans la liste Schema, sélectionnez Built-in et cliquez sur le bouton [...] à côté du champ Edit schema.

  4. Dans l'éditeur de schéma, définissez le schéma exactement comme celui du tFixedFlowInput.

  5. Dans le champ Table Name, renseignez le nom de la table dans laquelle les données sont stockées : users.

  6. Dans la liste Query Type, sélectionnez Built-in et renseignez le champ Query avec la requête SQL suivante, permettant d'explorer les données de la base de données via la requête d'URI définie dans le composant tRESTRequest

    "select * from users where id >= " + globalMap.get("getUsers.from") + " and  id <= " + globalMap.get("getUsers.to")
Configurer le composant tXMLMap
  1. Cliquez-droit sur le composant tMysqlInput, maintenez et déposez sur le tXMLMap afin de connecter les deux composants.

  2. Double-cliquez sur le tXMLMap dans l'espace de modélisation graphique pour ouvrir le Map Editor.

  3. Cliquez sur le bouton [+] dans le coin supérieur droit afin d'ajouter une sortie. Nommez-la ResponseUsers.

  4. Cliquez sur le bouton [+] en bas à droite pour ajouter deux colonnes de sortie.

    Nommez la première colonne body et paramétrez son Type à Document.

    Nommez la seconde colonne string et paramétrez son Type à String.

  5. Cliquez-droit sur le nœud root, sélectionnez Rename dans la liste et renommez-le users

  6. Cliquez-droit sur le nœud users et sélectionnez Create Sub-Element afin de créer un sous-élément. Nommez le sous-élément user dans la boîte de dialogue qui apparaît.

  7. Cliquez-droit sur le nœud user créé à l'étape précédente et sélectionnez As loop element.

  8. Sélectionnez la colonne id de la table row2, à gauche, et déposez-la sur le nœud user de la table ResponseUsers, à droite.

  9. Dans la boîte de dialogue [Selection], sélectionnez l'option Create as attribute of target puis cliquez sur OK.

  10. Sélectionnez les colonnes firstname et lastname de la table row2et déposez-les sur le nœud user de la table ResponseUsers.

  11. Dans la boîte de dialogue [Selection], sélectionnez l'option Create as sub-element of target node et cliquez sur OK.

  12. Cliquez sur l'icône de clé anglaise, en haut de la table ResponseUsers pour ouvrir le panneau de paramétrage.

  13. Paramétrez la fonctionnalité All in one à true. Ainsi, toutes les données XML sont écrites dans un seul flux.

  14. Cliquez sur OK afin de sauvegarder les paramètres.

Configurer le composant tRESTResponse
  1. Connectez le tXMLMap au tRESTResponse à l'aide d'un lien Row > ResponseUsers.

  2. Le schéma défini dans le tXMLMap est automatiquement récupéré par le tRESTResponse. Laissez les autres paramètres tels qu'ils sont.

Connecter les deux sous-jobs

Les deux sous-jobs sont créés, vous pouvez donc les connecter.

  1. Cliquez-droit sur le composant tFixedFlowInput du premier sous-job.

  2. Sélectionnez Trigger > OnSubjobOk dans la liste.

  3. Cliquez sur le composant tRESTRequest du second sous-job.

Ainsi, lors de l'exécution du Job, le second sous-job est exécuté uniquement si l'exécution du premier s'est déroulée correctement.

Sauvegarder et exécuter le Job

  1. Sauvegardez le Job et appuyez sur F6 pour l'exécuter.

  2. Ouvrez votre navigateur si vous souhaitez tester le service.

    Par exemple, utilisez la requête d'URI ?to=2 afin de récupérer les données des deux premiers utilisateurs.

    La requête HTTP pour l'ID d'un utilisateur est acceptée par le service REST et la réponse HTTP est retournée au serveur.

    Pour un cas d'utilisation appelant ce service REST à l'aide de composants ESB de Talend, consultez Scénario 1 : Obtenir des informations sur un utilisateur en interagissant avec un service RESTful.