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

Avertissement

Ce composant est disponible dans la Palette du Studio Talend si vous avez souscrit à l'un des produits Talend Platform.

Propriétés du tHMap

Famille du composant

Processing

 

Fonction

Le composant tHMap transforme des données de multiples sources vers de multiples destinations. Si vous souhaitez utiliser différentes entrées et/ou sorties, vous devez utiliser les fonctions I/O de Talend Data Mapper. Pour plus d'informations, consultez le Guide utilisateur de Talend Data Mapper.

Objectif

Le tHMap exécute des transformations (appelées mappings) entre différentes sources et destinations, en tirant parti des fonctionnalités de Talend Data Mapper, disponibles dans la perspective Mapping.

Basic settings

Open Map Editor

Cliquez sur le bouton [...] afin d'ouvrir l'assistant tHMap Structure Generate/Select dans lequel vous pouvez obtenir une structure de mappeur hiérarchique générée automatiquement à partir du schéma ou sélectionner un structure de mappeur hiérarchique existante. Vous devez effectuer cette action pour l'entrée et la sortie du mappeur.

 

Map Path

Spécifiez le mapping à effectuer.

Si le mapping a été créé à partir de l'assistant décrit précédemment, le chemin est automatiquement configuré.

Si vous souhaitez utiliser un mapping existant, cliquez sur le bouton [...] à côté du champ Map Path pour ouvrir une boîte de dialogue. Dans laquelle vous pouvez sélectionner le mapping à utiliser. Cliquez sur le bouton [...] à côté du Open Map Editor pour travailler sur le mapping sélectionné. Notez que ce mapping doit avoir été précédemment créé dans la perspective Mapping.

Read Input As

Sélectionnez le bouton radio correspondant à la manière dont vous souhaitez que l'entrée soit lue. Selon votre mapping, seules certaines options peuvent être disponibles.

  • Data Integration columns (défaut) : utilisez cette option si vous travaillez avec les métadonnées d'intégration de données Talend.

  • Single column : utilisez cette option si vous travaillez avec les métadonnées de Talend Data Mapper.

Write Output As

Sélectionnez le bouton radio correspondant à la manière dont vous souhaitez écrire la sortie. Selon votre mapping, seules certaines options peuvent être disponibles.

  • Data Integration columns (défaut) : utilisez cette option si vous travaillez avec les métadonnées d'intégration de données Talend.

  • String (single column) : utilisez cette option si les données de la colonne de sortie sont de type String.

  • Byte array (single column) : utilisez cette option si les données de la colonne de sortie sont de type Byte array.

  • InputStream (single column) : utilisez cette option si vous travaillez avec les métadonnées de Talend Data Mapper et que les données d'entrée sont un flux.

  • Document (single column) : utilisez cette option si la colonne de sortie est de type Document.

Log Level

Dans la liste déroulante, sélectionnez la fréquence d'enregistrement des événements.

  • Infrequent : enregistre seulement les événements liés au démarrage, à l'arrêt et aux exceptions.

  • Frequent (défaut) : enregistre les événements liés au démarrage, à l'arrêt, aux exceptions, ainsi qu'un événement par exécution de mapping.

  • Info : enregistre tous les événements de niveau info ou supérieur.

  • All : enregistre tous les événements.

  • None : n'enregistre rien.

Advanced settings

Map Variable

Dans ce champ, saisissez une variable de contexte que vous pouvez utiliser pour définir le chemin absolu vers un mapping. Cela peut être utile lorsque vous souhaitez utiliser différents mappings sans avoir à créer un nouveau Job à chaque fois.

Dans l'onglet Contexts, la valeur doit être un chemin absolu et les éléments requis (Structures, Mappings, etc) doivent être présents dans le même projet Talend. Le projet peut être un projet différent de celui dans lequel vous travaillez, mais tous les éléments doivent être dedans.

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

Exception Threshold

Talend Data Mapper retourne un statut d'exécution et une valeur de sévérité pouvant être de niveau OK, Info, Warning, Error ou Fatal. En configurant le seuil d'exception, vous pouvez spécifier le niveau de sévérité auquel est retournée une exception et permettre aux composants suivants de détecter les erreurs dans les cas où la valeur n'est pas celle par défaut, Fatal.

Dans la liste déroulante, sélectionnez le niveau de sévérité auquel une exception est retournée durant l'exécution d'un mapping.

  • Fatal (défaut) : une exception est retournée lorsqu'une erreur fatale (Fatal) survient.

  • Error : une exception est retournée lorsqu'une erreur (de niveau Error ou supérieur) survient.

  • Warning : une exception est retournée lorsqu'un avertissement (Warning ou une erreur de niveau supérieur) survient.

Notez que pour vous aider à diagnostiquer les problèmes de votre mapping, lorsque vous testez ce mapping dans votre Studio, chaque erreur de niveau Warning ou supérieur est écrite dans la vue console, peu importe le réglage défini dans l'option Exception Threshold.

Advanced settingstStatCatcher Statistics

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

Global Variables

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.

EXECUTION_STATUS : Récupère le pointeur pointant vers l'objet ExecutionStatus, retourné lorsque le tHMap exécute un mapping Talend Data Mapper. Cette variable est une variable After et retourne une chaîne de caractères.

EXECUTION_SEVERITY : Récupère la valeur numérique de Overall Severity. Cette variable est une variable After et retourne un entier.

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

Le composant tHMap est utilisé pour les Jobs nécessitant un mapping de données complexes provenant de différentes sources.

Les connexions d'entrée et de sortie peuvent utiliser les métadonnées de Talend Data Mapper, de la solution d'intégration de données Talend ou une combinaison des deux. Chaque connexion est indépendante.

Lorsque vous ouvrez l'éditeur de mapping pour la première fois pour chaque connexion, il peut générer une définition de structure Talend Data Mapper basée sur le schéma d'un composant de la solution d'intégration de données Talend, ou vous permettre de sélectionner une structure Talend Data Mapper si vous utilisez les métadonnées de Talend Data Mapper. L'éditeur crée un mapping avec la structure sélectionnée ou générée.

Ce composant peut être utilisé de plusieurs manières :

Limitation

n/a

Note

Pour plus d'informations concernant les transformations à l'aide de Talend Data Mapper, consultez le Guide utilisateur de Talend Data Mapper.

Scénario 1 : Utiliser les métadonnées de Talend Data Mapper

Le scénario suivant crée un Job à trois composants, lisant les données d'un fichier d'entrée transformé à l'aide d'un mapping précédemment créé dans la perspective Mapping et écrit en sortie les données transformées dans un nouveau fichier. Il fonctionne avec les métadonnées de Talend Data Mapper.

Copier une version modifiable des fichiers d'exemple

  1. Dans la perspective Mapping, dans la vue Data Mapper, développez le nœud Hierarchical Mapper et le dossier Other Projects, cliquez-droit sur Examples et sélectionnez Copy dans le menu contextuel.

  2. Dans la vue Data Mapper, cliquez-droit à la racine du nœud Hierarchical Mapper puis sélectionnez Paste dans le menu contextuel.

    Cela copie une version modifiable de tous les fichiers d'exemple en lecture seule dans votre Workspace local.

Ajouter et relier les composants

  1. Dans la perspective Integration, créez un nouveau Job et nommez-le tdm_to_tdm.

  2. Cliquez sur l'emplacement, dans l'espace de modélisation graphique, où vous souhaitez ajouter le premier composant. Commencez à saisir tFileInputRaw puis cliquez sur le nom du composant lorsqu'il apparaît dans la liste proposée, afin de le sélectionner.

  3. Répétez l'opération pour ajouter un composant tHMap et un tFileOutputRaw.

  4. Reliez le tFileInputRaw au composant tHMap à l'aide d'un lien Row > Main. Renommez le lien input puis connectez le composant tHMap au tFileOutputRaw à l'aide d'un lien Row > Main. Nommez ce lien output. Lorsque le Studio vous propose d'obtenir le schéma du composant cible, cliquez sur Yes.

Configurer les propriétés du tFileInputRaw

  1. Sélectionnez le tFileInputRaw afin de configurer ses propriétés.

  2. Dans l'onglet Basic settings, cliquez sur le bouton [...] à côté du champ Filename puis parcourez votre système jusqu'au fichier d'entrée. Vous pouvez également saisir son chemin manuellement entre guillemets doubles. Dans cet exemple, utilisez <PATH_TO_WORKSPACE>/<PROJECT_NAME>/Sample Data/CSV/PurchaseOrderPayPal/PayPalPO.csv.

  3. Dans la zone Mode sélectionnez Read the file as a string et laissez les autres champs tels quels.

Configurer les propriétés du tFileOutputRaw

  1. Sélectionnez le composant tFileOutputRaw afin de définir ses propriétés.

  2. Dans l'onglet Basic settings, cliquez sur le bouton [...] puis parcourez votre système jusqu'à l'emplacement où se trouvera le fichier de sortie, ou saisissez manuellement le chemin entre guillemets doubles. Laissez les autres paramètres tels qu'ils sont.

Configurer les propriétés du tHMap

  1. Sélectionnez le composant tHMap afin de définir ses propriétés.

  2. Cliquez sur le bouton [...] à côté du champ Map Path pour ouvrir la boîte de dialogue et sélectionnez le mapping à utiliser, Maps/CSV/POPayPalCsv_PO2, puis cliquez sur OK. Ce mapping transforme un fichier CSV en un fichier XML.

  3. Dans la zone Read Input As, vérifiez que l'option Single Column est sélectionnée.

  4. Dans la zone Write Output As, vérifiez que l'option String (single column) est sélectionnée.

Sauvegarder et exécuter le Job

  1. Appuyez sur les touches Ctrl+S afin de sauvegarder votre Job.

  2. Dans l'onglet Run, cliquez sur le bouton Run pour exécuter le Job.

  3. Parcourez votre système jusqu'à l'emplacement où se trouve le fichier de sortie, afin de vérifier qu'un fichier XML contenant les mêmes données que le fichier CSV d'entrée a bien été créé.

Scénario 2 : Utiliser les métadonnées d'intégration de données Talend

Le scénario suivant crée un Job à trois composants, lisant des données d'un fichier d'entrée, transformées via un mapping créé dans la perspective Mapping et écrivant en sortie les données transformées dans un nouveau fichier. Le Job utilise les métadonnées d'intégration de données Talend.

Copier une version modifiable des fichiers d'exemple

  1. Dans la perspective Mapping, dans la vue Data Mapper, développez le nœud Hierarchical Mapper et, dans le dossier Other Projects, cliquez-droit sur Examples et sélectionnez Copy dans le menu contextuel.

  2. Dans la vue Data Mapper, cliquez-droit à la racine du nœud Hierarchical Mapper puis sélectionnez Paste dans le menu contextuel.

    Cela copie une version modifiable de tous les fichiers d'exemple en lecture seule, dans votre Workspace local.

Ajouter et relier les composants

  1. Dans la perspective Integration, créez un nouveau Job standard et nommez-le di_to_di.

  2. Cliquez sur l'emplacement où vous souhaitez ajouter le premier composant, dans l'espace de modélisation graphique, commencez à saisir tFileInputDelimited puis cliquez sur le nom du composant lorsqu'il apparaît dans la liste proposée, afin de le sélectionner.

  3. Répétez l'opération pour ajouter un tHMap et un tFileOutputXML.

  4. Reliez le tFileInputDelimited au tHMap à l'aide d'un lien Row > Main puis reliez le composant tHMap au tFileOutputXML à l'aide d'un lien Row > Main.

Configurer les propriétés du tFileInputDelimited

  1. Sélectionnez le composant tFileInputDelimited pour configurer ses propriétés.

  2. Dans l'onglet Basic settings, cliquez sur le bouton [...] à côté du champ Filename/Stream puis parcourez votre système de fichiers jusqu'à l'emplacement où est stocké le fichier Excel d'entrée, ou saisissez manuellement le chemin entre guillemets doubles. Dans cet exemple, utilisez <PATH_TO_WORKSPACE>/<PROJECT_NAME>/Sample Data/CSV/PurchaseOrderPayPal/PayPalPO.csv.

  3. Cochez la case CSV options.

  4. Dans le champ Field Separator, saisissez une virgule entre guillemets doubles (",").

  5. Dans le champ Header, saisissez 1.

  6. Cliquez sur le bouton [...] à côté du champ Edit schema afin de définir le schéma.

  7. Ajoutez trois colonnes et nommez-les txn_id, payment_date et first_name : ces noms correspondent au nom des trois premières colonnes du fichier d'entrée et sont suffisantes pour l'objectif de cet exemple. Cliquez sur OK.

  8. Laissez les autres paramètres tels qu'ils sont.

Configurer les propriétés du tFileOutputXML

  1. Sélectionnez le composant tFileOutputXML pour paramétrer ses propriétés.

  2. Dans l'onglet Basic settings, cliquez sur le bouton [...] à côté du champ File Name puis parcourez votre système jusqu'à l'emplacement où sera stocké votre fichier de sortie, ou saisissez manuellement le chemin entre guillemets doubles.

  3. Cliquez sur le bouton [...] à côté du champ Edit schema afin de définir le schéma.

  4. Ajoutez trois colonnes dans le schéma d'entrée sur la gauche et nommez-les id, date et name, copiez-les vers le schéma de sortie sur la droite, puis cliquez sur OK.

  5. Laissez les autres éléments tels qu'ils sont.

Configurer le tHMap

  1. Sélectionnez le tHMap pour configurer ses propriétés.

  2. Cliquez sur le bouton [...] à côté du champ Open Map Editor pour créer un nouveau mapping basé sur l'entrée et la sortie du tHMap.

  3. Dans la boîte de dialogue tHMap Structure Generate/Select qui s'ouvre, sélectionnez Generate hierarchical mapper structure based on the schema puis cliquez sur Next afin de générer la structure d'entrée.

  4. Procédez de la même manière pour la structure de sortie.

  5. Dans l'éditeur Map editor qui s'ouvre, glissez l'élément txn_id de Input (map) vers l'élément id de Output (map). Procédez de la même manière afin de mapper payment_date avec date et first_name avec name puis sauvegardez vos modifications.

Sauvegarder et exécuter le Job

  1. Appuyez sur les touches Ctrl+S pour sauvegarder votre Job.

  2. Dans l'onglet Run, cliquez sur le bouton Run pour exécuter le Job.

  3. Parcourez votre système jusqu'à l'emplacement où se trouve le fichier de sortie, afin de vérifier qu'un fichier XML contenant les mêmes données que le fichier CSV d'entrée a bien été créé.

Scénario 3 : Transformer un schéma d'intégration de données en un schéma complexe

Dans le scénario suivant, vous créez un Job de trois composants qui génère des données aléatoires à partir d'un composant d'entrée, transforme ces données à l'aide d'un mapping précédemment créé dans la perspective Mapping puis écrit les données transformées dans un fichier JSON. Ce scénario utilise les métadonnées de intégration de données Talend pour l'entrée et les métadonnées Talend Data Mapper pour la sortie.

Créez une nouvelle structure dans la perspective Mapping

  1. Dans la vue Data Mapper de la perspective Mapping, développez le nœud Hierarchical Mapper, cliquez-droit sur Structures et sélectionnez New > Structure.

  2. Dans la boîte de dialogue [New Structure] qui s'ouvre, sélectionnez Create a new structure where you manually enter elements puis cliquez sur Next.

  3. Nommez votre structure JSON_structure puis cliquez sur Next.

  4. Dans la boîte de dialogue [Select Representation], sélectionnez JSON dans la liste de représentations puis cliquez sur Next.

  5. Sélectionnez Don't select a sample document for now puis cliquez sur Finish.

Ajouter les éléments à la nouvelle structure

  1. Dans la vue Data Mapper de la perspective Mapping, développez le nœud Hierarchical Mapper et le nœud Structures puis ouvrez la structure JSON_structure créée précédemment.

  2. Dans la structure JSON_structure, cliquez-doit afin d'ajouter un nouvel élément. Cliquez sur New element et nommez ce nouvel élément Root.

  3. Procédez de la même manière afin d'ajouter un élément people sous l'élément Root, un élément person sous l'élément people et quatre nouveaux éléments sous l'élément person : firstname, lastname, address et city.

  4. Pour l'élément person, changez la valeur de l'option Occurs Max en -1 (illimité).

  5. Appuyez sur Ctrl + S pour sauvegarder vos changements.

Ajouter et relier les composants

  1. Dans le Repository de la perspective Integration, cliquez-droit sur Job Designs puis cliquez sur Create Standard Job afin de créer un Job. Nommez-le di_to_json. Si vous le souhaitez, ajoutez un objectif dans le champ Purpose et une description dans le camp Description. Cliquez sur Finish.

  2. Cliquez sur un emplacement dans l'espace de modélisation graphique afin d'ajouter le premier composant. Commencez à saisir tRowGenerator puis cliquez sur le nom du composant lorsqu'il s'affiche dans la liste proposée afin de le sélectionner.

  3. Procédez de la même manière afin d'ajouter un composant tHMap et un composant tFileOutputRaw.

  4. Reliez le tRowGenerator au tHMap et le tHMap au tFileOutputRaw à l'aide de liens Row > Main. Lorsque le Studio vous propose de récupérer le schéma du composant cible, cliquez sur Yes.

Définir les propriétés du tRowGenerator

  1. Sélectionnez le tRowGenerator afin de définir ses propriétés.

  2. Dans l'onglet Basic settings, cliquez sur le bouton [...] à côté du champ RowGenerator Editor afin de définir les lignes à générer.

  3. Dans la boîte de dialogue qui s'ouvre, cliquez quatre fois sur le bouton [+] afin d'ajouter quatre colonnes au schéma. Nommez ces colonnes firstname, lastname, address et city.

  4. Pour chaque colonne, modifiez la fonction afin qu'elle corresponde à la fonction notée dans le tableau suivant. Pour ce faire, cliquez sur le colonne Functions et parcourez la liste de fonctions disponibles jusqu'à la fonction désirée puis cliquez sur OK afin de valider.

    firstname

    TalendDataGenerator.getFirstName

    lastname

    TalendDataGenerator.getFirstName

    address

    TalendDataGenerator.getUsStreet

    city

    TalendDataGenerator.getUsCity

Définir les propriétés du tFileOutputRaw

  1. Sélectionnez le tFileOutputRaw afin de définir ses propriétés.

  2. Dans l'onglet Basic settings, cliquez sur le bouton [...] puis parcourez votre système jusqu'à l'emplacement où vous souhaitez enregistrer le fichier de sortie ous saisissez manuellement le chemin entre guillemets doubles. Nommez ce fichier output.json

    Laissez les autres champs tels quels.

Définir les propriétés du tHMap

  1. Sélectionnez le tHMap afin de définir ses propriétés.

  2. Cliquez sur le bouton [...] à côté du champ Open Map Editor afin de créer un nouveau mapping.

  3. Dans la boîte de dialogue [tHMap Structure Generate/Select] qui s'ouvre, sélectionnez Generate hierarchical mapper structure based on the schema pour la structure d'entrée, cliquez sur Next puis sur Finish. Cela signifie que le Talend Data Mapper génère automatiquement une structure en se basant sur le schéma du composant d'entrée (tRowGenerator dans ce cas).

  4. Pour la structure de sortie, sélectionnez Select an existing hierarchical mapper structure puis cliquez sur Next.

  5. Sélectionnez la structure JSON_structure créée précédemment, cliquez sur Next puis sur Finish.

  6. Dans l'éditeur Map editor qui s'ouvre, déposez l'élément row de la structure d'entrée Input (Map) sur l'élément person de la structure Output (JSON) afin de faire correspondre chaque élément d'entrée à l'élément de sortie correspondant.

  7. Double-cliquez sur SimpleLoop dans l'onglet Loop puis, dans la boîte de propriétés qui s'ouvre, cochez la case Stream Input puis cliquez sur OK.

  8. Appuyez sur Ctrl+S afin de sauvegarder vos changements.

Sauvegarder et exécuter le Job

  1. Appuyez sur Ctrl+S afin de sauvegarder votre Job.

  2. Dans l'onglet Run, cliquez sur Run afin d'exécuter le Job.

  3. Parcourez votre système jusqu'à l'emplacement où le fichier de sortie est stocké afin de vérifier qu'un fichier JSON contenant les données attendues a été créé.

Scénario 4 : Gestion des erreurs

Le scénario suivant crée un Job à six composants expliquant comment gérer les conditions en erreur à l'aide du tHMap.

Lorqsue le tHMap exécute un mapping Talend Data Mapper, un objet ExecutionStatus est toujours retourné. EXECUTION_STATUS, stocké dans le globalMap, pointe vers cet objet. De plus, la valeur numérique de Overall Severity (les constantes sont définies dans ExecutionStatus) est également stockée dans le globalMap en tant que EXECUTION_SEVERITY. Un paramètre appelé Execution Threshold est défini, spécifiant la sévérité à partir de laquelle retourner une exception, déclenchant ainsi un processus de traitement d'erreurs lié au Job ou aux composants. La valeur par défaut pour ce paramètre est Fatal.

Pour consulter la documentation Java concernant l'objet ExecutionStatus, consultez la documentation de Camel Runtime incluse dans les kits du Runtime de Talend Data Mapper et le Guide utilisateur de Talend Data Mapper.

Ajouter et relier les composants

  1. Dans la perspective Integration, créez un nouveau Job standard et nommez-le error_handling.

  2. Cliquez à l'emplacement, dans l'espace de modélisation graphique, auquel vous souhaitez ajouter le premier composant, commencez à saisir tFixedFlowInput puis cliquez sur le nom du composant lorsqu'il apparaît dans la liste proposée, afin de le sélectionner.

  3. Répétez l'opération pour ajouter un tHMap, un tJavaRow et trois composants tJava.

  4. Reliez le composant tFixedFlowInput au tHMap à l'aide d'un lien Row > Main puis connectez le tHMap au tJavaRow à l'aide d'un lien Row > Main et renommez ce lien out. Si le Studio vous propose d'obtenir le schéma du composant cible, cliquez sur Yes.

  5. Connectez le tFixedFlowInput au premier tJava à l'aide d'un lien Trigger > OnSubjobError et au deuxième tJava à l'aide d'un lien Trigger > OnSubjobOk, puis reliez le composant tHMap au troisième tJava, à l'aide d'un lien Trigger > RunIf.

Définir les propriétés du lien Trigger > RunIf

  1. Sélectionnez le lien Trigger > RunIf afin de définir ses propriétés.

  2. Ajoutez le code suivant dans la section Condition.

    !((org.talend.transform.runtime.api.ExecutionStatus) globalMap.get("tHMap_1_EXECUTION_STATUS")).isOK()

Configurer les propriétés du tFixedFlowInput

  1. Sélectionnez le composant tFixedFlowInput dans l'espace de modélisation graphique afin de configurer ses propriétés.

  2. Dans l'onglet Basic settings, cliquez sur le bouton [...] à côté du champ Edit schema afin de définir le schéma.

  3. Ajoutez une colonne de type String, en cliquant sur le bouton [+] et renommez-la inputKey puis cliquez sur OK.

  4. Dans la zone Mode, sélectionnez le bouton radio Use Inline Table puis ajoutez trois valeurs à la colonne inputKey en cliquant sur le bouton [+] et en saisissant les valeurs entre guillemets doubles. Dans cet exemple, les valeurs utilisées sont value1, value2 et value3.

Configurer les propriétés du tJavaRow

  1. Dans l'espace de modélisation graphique, sélectionnez le composant tJavaRow afin de configurer ses propriétés.

  2. Dans l'onglet Basic settings, cliquez sur le bouton [...] à côté du champ Edit schema afin de définir le schéma.

  3. Cliquez sur le bouton [+] pour ajouter une colonne au schéma d'entrée (à gauche), de type String, renommez-la outputKey, collez-la dans le schéma de sortie (à droite), puis cliquez sur OK.

  4. Ajoutez le code suivant dans le champ Code.

    String actualOutput = out.outputKey;
    
    System.out.println("======" + actualOutput + "======");

Configurer les propriétés du tHMap

  1. Dans l'espace de modélisation graphique, sélectionnez le composant tHMap afin de configurer ses propriétés.

  2. Cliquez sur le bouton [+] à côté du champ Open Map Editor afin de créer un nouveau mapping basé sur l'entrée et la sortie du tHMap.

  3. Dans la boîte de dialogue tHMap Structure Generate/Select qui s'ouvre, sélectionnez Generate hierarchical mapper structure based on the schema puis cliquez sur Next afin de générer la structure d'entrée.

  4. Procédez de la même manière pour la structure de sortie.

  5. Dans l'éditeur Map editor qui s'ouvre, déposez l'élément inputKey de l'entrée Input (map) à l'élément outputKey de la sortie Output (map) et sauvegardez vos modifications.

  6. De retour dans votre Job, dans le composant tHMap, dans la liste Exception Threshold (onglet Advanced settings), laissez le niveau du seuil à Fatal.

  7. Dans l'onglet Basic settings, vérifiez que, dans la zone Read Input As, le bouton radio Data Integration columns est sélectionné.

  8. Dans la zone Write Output As, vérifiez que le bouton radio Data Integration columns est bien sélectionné.

Définir les propriétés du premier composant tJava (lien OnSubjobError)

  1. Dans l'espace de modélisation graphique, sélectionnez le premier tJava afin de configurer ses propriétés. Ce composant affiche des informations dans la console lorsque le Job contient une erreur.

  2. Ajoutez le code suivant dans le champ Code.

    System.out.println("tJava_1: Subjob ERROR");
    
    org.talend.transform.runtime.api.ExecutionStatus es = (org.talend.transform.runtime.api.ExecutionStatus)globalMap.get("tHMap_1_EXECUTION_STATUS");
    
    System.out.println("Execution result:" + es.getOverallSeverity());
    
    // ExecutionStatus object
    System.out.println(es.toString());
    
    // XML version of ExecutionStatus object
    java.io.StringWriter sw = new java.io.StringWriter();
    es.exportToXml(sw);
    System.out.println("ExecutionStatus as XML");
    System.out.println(sw.toString());

Configurer les propriétés du deuxième composant tJava (OnSubjobOk)

  1. Dans l'espace de modélisation graphique, sélectionnez le deuxième tJava afin de configurer ses propriétés. Ce composant affiche les informations dans la console lorsque le Job est exécuté avec succès.

  2. Ajoutez le code suivant dans le champ Code.

    System.out.println("tJava_2: Subjob OK");
    
    org.talend.transform.runtime.api.ExecutionStatus es = (org.talend.transform.runtime.api.ExecutionStatus)globalMap.get("tHMap_1_EXECUTION_STATUS");
    
    System.out.println("Execution result:" + es.getOverallSeverity());
    
    // ExecutionStatus object
    System.out.println(es.toString());
    
    // XML version of ExecutionStatus object
    java.io.StringWriter sw = new java.io.StringWriter();
    es.exportToXml(sw);
    System.out.println("ExecutionStatus as XML");
    System.out.println(sw.toString());

Configurer les propriétés du troisième tJava (RunIf)

  1. Sélectionnez le troisième tJava afin de configurer ses propriétés. Ce composant s'exécute si des erreurs surviennent dans le mapping lui-même (avec un niveau de sévérité plus important que de simples informations).

  2. Ajoutez le code suivant dans le champ Code.

    System.out.println("tJava_3: Run If");
    
    org.talend.transform.runtime.api.ExecutionStatus es = (org.talend.transform.runtime.api.ExecutionStatus)globalMap.get("tHMap_1_EXECUTION_STATUS");
    
    System.out.println("Execution result:" + es.getOverallSeverity());
    
    // ExecutionStatus object
    System.out.println(es.toString());
    
    // XML version of ExecutionStatus object
    java.io.StringWriter sw = new java.io.StringWriter();
    es.exportToXml(sw);
    System.out.println("ExecutionStatus as XML");
    System.out.println(sw.toString());

Exécuter le Job sous différentes conditions

  1. Appuyez sur les touches Ctrl+S afin de sauvegarder votre Job.

  2. Dans l'onglet Run, cliquez sur le bouton Run pour exécuter le Job.

    Dans ce cas, aucune erreur ne survient, le Job déclenche donc uniquement le deuxième composanttJava.

  3. Double-cliquez sur le composant tHMap afin d'ouvrir l'éditeur Map editor.

  4. Cliquez-droit sur l'élément outputKey et cliquez sur Go to Structure Element.

  5. Passez la structure tHMap_1_output qui s'ouvre du mode Read Only au mode Editable puis changez le type de donnes (Data Type) de l'élément outputkey en Integer (32). Cela signifie que cet élément ne peut être qu'un élément de type Integer. Comme cela ne correspond pas à l'élément en entrée, cela va provoquer une erreur.

  6. Dans l'onglet Run, cliquez sur le bouton Run pour exécuter le Job à nouveau.

    Dans ce cas, le Job déclenche toujours le deuxième composant tJava même s'il y a une erreur, car le seuil au-dessus duquel une exception est retournée (permettant aux composants suivants de détecter les erreurs) est configuré à Fatal. Cependant, le troisième composant tJava est aussi déclenché, car une erreur survient lors de l'exécution du mapping.

  7. Dans le tHMap, modifiez la valeur de la liste Exception Threshold (onglet Advanced settings) à Error. Cela permet de retourner une exception lorsque la sévérité du mapping est Error ou une sévérité supérieure.

  8. Dans l'onglet Run, cliquez sur le bouton Run pour exécuter le Job une troisième fois.

    Dans ce cas, le Job détecte l'erreur et déclenche le premier composant tJava (lien OnSubjobError).