Presentation is loading. Please wait.

Presentation is loading. Please wait.

TALEND OPEN STUDIO ADVANCED

Similar presentations


Presentation on theme: "TALEND OPEN STUDIO ADVANCED"— Presentation transcript:

1 TALEND OPEN STUDIO ADVANCED
DOCUMENT INTERNE - NE PAS DIFFUSER TALEND OPEN STUDIO ADVANCED Training Material Copyright © 2007 Talend. All rights reserved

2 DOCUMENT INTERNE - NE PAS DIFFUSER
Copyright Any total or partial reproduction without the consent of the author or beneficiary, devisee or legatee is not allowed (law of 11 March 1957, par. 1 of article 40). Representation or reproduction, by any means, would be considered an infringement of copyright under articles 425 et.seq. of the Penal Code. The law of 11 March 1957, par. 2 and 3 of article 41, allows the creation of copies and reproductions exclusively for the private use of the copier and not for collective use on the one hand while on the other it allows analysts to use short quotes for purposes of illustration. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

3 DOCUMENT INTERNE - NE PAS DIFFUSER
Summary Reminders and best practices Context management Mastering complex components Error handling Performance monitoring Monitoring and automating management of log files Deployment and scheduling Exploiting the power of programming languages Routines Debugging Creating components tCiviliteGenerator (no properties view/retrieval of an exercise) tPrintln (properties view) tDecryptRow or tChangeDevise or tAddColumnTotal tPrintOutput to redirect to printer Virtual component (combining tFileInput and tSortRow) Bonjour Laurent, Pour que tu es une vision d'ensemble tu trouveras ci-dessous les évolutions du contenu de formation que j'ai en tête. Le 7 novembre, tu animeras une expertise d'une journée après 2 jours de maitrîse. La demande du client est d'aborder les fonctionnalités avancées de TOS + la théorie sur la création de composant. L'idée est de leur mettre l'eau à la bouche et de reboucler dans peu de temps avec une formation Expertise de plusieurs jours pour leur faire une formation "Création de compo". Je pense que tu pourras consacrer toute l'aprés midi à la création de composant, mais je suis curieux de connaître ton point de vue ! Le matin, il faudrait aborder la gestion d'erreur, le debuggage et le deploiement. Je te laisse prendre connaissance de tout ceci et je me tiens à ta dispo pour en parler par mail ou en direct le 29. Bonne journée à toi, Olivier Dans un premier temps, nous allons créer une courte fiche de présentation pour chaque exercice ainsi que les "corrigés" (sous forme de job java), dans un second temps nous ferrons des fiches plus détaillé (pas à pas) Création d'exos relativement court mais permettant de mettre en avant certains composants. L'objectif est d'identifier les données utilisées + les scénarios pour les compos suivants. tIntervalMatch tDenormalize XML input & validation & XSL MysqlCommit et Co Mysql Slowly Changing Dimension tWaitForFile et tWaitForSqlData consommation Webservices ELT   Gestion des contextes : Le TP permet d'aborder la gestion des Context du repository. Reste à aborder les composants dédiées à la gestion des valeurs de contextes dans un fichier ou dans une base ainsi que l'accès aux variables d'environnement. tContextLoad tContextDump tFixedFlowInput Récupérer une variable d'environnement Gestion d'erreur : utilisation des catcher / tWarn / tDie / (utilisation individuelle à chaque job) ajout d'une colonne au flux de log afin de logger une information propre au contexte client (heure d'une machine distante par exemple) utilisation des Trigger ifOk et ifError déclenchement d'un job de reprise   Suivi des performances : utilisation des catcher (utilisation individuelle à chaque job) utilisation du tFlowMeter Industrialisation de la gestion des logs / Monitoring : paramétrage des préférences pour diriger tous les logs vers une seule base de données exploitation des logs (à travers d'un tMap=>envoi d + présentation de l'AMC dès que possible) Debugage : Créer un scénario permettant de partir d'un job déjà créé et montrer l'utilité de la vue debug. Cas particulier : réaliser une fiche exo en "pas à pas" utilisation des breakpoints modification d'une variable à chaud (tFID modifier le header - nbr de ligne à ignorer en haut de fichier) mode pas à pas pour identifier une erreur (une donnée null dans un flux par exemple) Deploiement : L'idée est ici de définir des jobs simples et de demander aux apprenants de les deployer. Les faire jouer avec le choix des contextes, notamment dans le cas de job imbriqués par un tRunJob + les faire installer un module perl ainsi que le logiciel permettant de faire du externalsort. Il faut donc créér les jobs qui seront utilisés. cas pratiques à manipuler demo d'un deploiement de webservice (pas de manip par les apprenants) rappel des best practice (gestion des contexts, composant indépendant des OS) V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

4 Reminders and best practices
DOCUMENT INTERNE - NE PAS DIFFUSER Reminders Job designs Lookups Best practices Reminders and best practices V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

5 Job Designer: reminders
DOCUMENT INTERNE - NE PAS DIFFUSER Job Designer: reminders A Job: components that are linked to one another Job Réaliser un rappel sur le vocabulaire : Composants Job Sous-job A retenir : L’ordre de lecture : gauche à droite / haut vers le bas Sub-Job V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

6 Job Designer: tMap and Lookup
DOCUMENT INTERNE - NE PAS DIFFUSER Job Designer: tMap and Lookup Main and Lookup links set the order of processing CUSTOMER WITH STATES Rares sont les jobs pouvant se passer des tMap. Ce composant permet en effet de réaliser des jointures complexes, de gérer les filtres, de définir des contraintes et de récupérer les rejets. A retenir : le fichier lookup est placé au dessus du lien main Lors de l’exécution du job, le fichier States sera lu et les données seront stockées en mémoire (puis sur le disque dur si la mémoire est pleine). Le fichier Customer sera lui lu ligne par ligne et envoyé au tMap puis dans le flux out1. Pour optimiser ses jobs, on préférera donc limiter la taille des références en Lookup. Il est aussi possible de monter les références dans une base de données pour réaliser les jointure en SQL. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

7 Job Designer: best practices
DOCUMENT INTERNE - NE PAS DIFFUSER Job Designer: best practices Les bonnes pratiques se retrouve dans cet exemple : Les composants d’un même process sont orientés de gauche à droite Les process sont orientés de haut en bas Les lookup sont au dessus du tMap Au sein d’un même process les flux OUTPUT sont sur le même niveau ou en dessous des flux INPUT V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

8 Job Designer: order of components
DOCUMENT INTERNE - NE PAS DIFFUSER Job Designer: order of components Order of execution of components End Starting End Starting Starting End Point technique à toujours avoir à l’esprit lors de la gestion d’erreur et du suivi des performances. Il faut bien comprendre cela avant d’imaginer se lancer dans la création de composants. A retenir : L’ordre d’exécution des composants correspond à leur représentation graphique (gauche->droite et haut->bas) tel que défini par les bonnes pratiques Les 3 phases d’un composant (starting … loop … end) End Starting Starting End V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

9 Management of Contexts
DOCUMENT INTERNE - NE PAS DIFFUSER Reminders The Context node in the Repository Dedicated components Management of Contexts V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

10 DOCUMENT INTERNE - NE PAS DIFFUSER
Context management A context contains several types (dev/prod) The prompt functionality refers to different types of variables (pathDir, pathFile) A retenir : La fonctionnalité prompt ne s’utilise pas en production mais permet de gagner beaucoup de temps lors du développement. Un défaut : les metadatas sont indépendantes du context, hors on souhaiterai pouvoir définir des strings de connexion dans ces contexts. Une fois le contexte défini, nous pouvons accéder aux variables dans tous les composants et notamment dans toutes les zones de saisies de la vue Properties. La syntaxe à utiliser est précisée sur le panneau « Value as tree » et est facilement accessible grâce à l’auto complétion (CTRL + space). V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

11 Selecting the execution context
DOCUMENT INTERNE - NE PAS DIFFUSER Selecting the execution context When Talend Open Studio starts: During deployment: A retenir : Le context est inclus dans le code généré et ne peut pas être modifié une fois le job déployé. Lors de l’export du job, on peut choisir le context d’exécution du job et des sous-jobs lancés par un tRunJob V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

12 DOCUMENT INTERNE - NE PAS DIFFUSER
Advice F5: Declare a variable The component tRunJob Pour remplacer une valeur de la vue Properties par un paramètre de contexte, sélectionner le champ que vous voulez remplacer (ici le File Name) et pressez la touche F5. Un assistant vous fait alors gagner du temps ! Le composant tRunJob permet d’exécuter un job. Il permet aussi de définir un contexte particulier lors de son exécution. Dans l’exemple suivant les valeurs des variables de contextes sont définies par le composant tRunJob. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

13 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 1 and 2 Objectif : Manipuler et exporter les variables de contexte Ces exos permettent de manipuler la vue Context, les composant tContextDump et tContextLoad. Précisez : l’utilisation du nœud context du Repository Les limites des context du Repository : les metadatas ne sont pas dépendantes d’un context Lorsque l’on utilise des fichiers de conf pour définir son context, le path d’accès au fichier de conf est souvent différent en dev et en prod CONSEIL : utiliser le tContextLoad derrière un tDBInput ! V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

14 Mastering complex components
DOCUMENT INTERNE - NE PAS DIFFUSER Using regular expressions: tFileRegex tIntervalMatch / tDenormalize XML input, validation & XSL Using Webservices Mastering complex components Le projet Demo est utilisé pour montrer les jobs en relation avec les composants. Les apprenants peuvent donc manipuler les jobs sans avoir à les concevoir. Pensez bien à executer le job beforeRunJobs pour lancer l’installation des fichiers d’exemple. Le job nécessitant une connection à Internet, veillez à vous munir du zip sur une clef au cas ou il n’y ai pas d’accès au net ! V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

15 DOCUMENT INTERNE - NE PAS DIFFUSER
Metadata file regexp An example of reading an Apache log file Log apache: Aug 18 06:31:29 cplemon02.d075.cp logger: [18/Aug/2006:07:49: ] "GET /server-status/ HTTP/1.1" "-" "CactiScript/1.0" "-" localhost Aug 18 06:31:30 cplemon02.d075.cp logger: [18/Aug/2006:07:49: ] "GET /portail/accueil.pl HTTP/1.1" "-" "CactiScript/1.0" "-" localhost Aug 18 06:31:32 cplemon01.d075.cp logger: [18/Aug/2006:08:06: ] "GET /server-status/ HTTP/1.1" "-" "CactiScript/1.0" "-" localhost Regexp: '^ (\w{3} \s \d{2} \s \d{2}:\d{2}:\d{2}) # 1st column (date) \s+ ([\w.]+) # 2nd column (dnsname) \s logger: \s (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) # 3rd column (ipadress)' V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

16 DOCUMENT INTERNE - NE PAS DIFFUSER
tFileInputRegexp Define a regexp, example of reading from Apache log Aug 18 06:31:29 cplemon02.d075.cp logger: [18/Aug/2006:07:49: ] "GET /server-status/ HTTP/1.1" "-" "CactiScript/1.0" "-" localhost Aug 18 06:31:30 cplemon02.d075.cp logger: [18/Aug/2006:07:49: ] "GET /portail/accueil.pl HTTP/1.1" "-" "CactiScript/1.0" "-" localhost Aug 18 06:31:32 cplemon01.d075.cp logger: [18/Aug/2006:08:06: ] "GET /server-status/ HTTP/1.1" "-" "CactiScript/1.0" "-" localhost Log apache: Aug 18 06:31:29 cplemon02.d075.cp logger: [18/Aug/2006:07:49: ] "GET /server-status/ HTTP/1.1" "-" "CactiScript/1.0" "-" localhost Aug 18 06:31:30 cplemon02.d075.cp logger: [18/Aug/2006:07:49: ] "GET /portail/accueil.pl HTTP/1.1" "-" "CactiScript/1.0" "-" localhost Aug 18 06:31:32 cplemon01.d075.cp logger: [18/Aug/2006:08:06: ] "GET /server-status/ HTTP/1.1" "-" "CactiScript/1.0" "-" localhost Regexp: '^ (\w{3} \s \d{2} \s \d{2}:\d{2}:\d{2}) # 1st column (date) \s+ ([\w.]+) # 2nd column (dnsname) \s logger: \s (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) # 3rd column (ipadress)' V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

17 DOCUMENT INTERNE - NE PAS DIFFUSER
tIntervalMatch V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

18 DOCUMENT INTERNE - NE PAS DIFFUSER
tNormalize V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

19 DOCUMENT INTERNE - NE PAS DIFFUSER
tDenormalize 3 2 V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

20 DOCUMENT INTERNE - NE PAS DIFFUSER
tXSDValidator V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

21 tXSLT: generate documents
DOCUMENT INTERNE - NE PAS DIFFUSER tXSLT: generate documents V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

22 tFileOutputXML: 1 special case
DOCUMENT INTERNE - NE PAS DIFFUSER tFileOutputXML: 1 special case Le cas particulier à évoquer ici est le fait d’avoir pour dans seule source de données plusieurs metadatas. Dans l’illustration on lit un fichier xml afin d’en extraire les livres OU les individus. Il faut déclarer dans le repository 2 metadatas différentes avec 2 xpath totalement différents. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

23 tAdvancedFileOutputXML
DOCUMENT INTERNE - NE PAS DIFFUSER tAdvancedFileOutputXML Le tFileOutputXML ne gère pas les Shemas aux nœuds multiples, le tAdvancedOutputXML est là pour ça ! V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

24 DOCUMENT INTERNE - NE PAS DIFFUSER
tWebServiceInput Cloudy = nuageux ! V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

25 DOCUMENT INTERNE - NE PAS DIFFUSER
Trigger ifOk and ifError Components tLogCatcher / tWarn / tDie Create specific logs Error management V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

26 DOCUMENT INTERNE - NE PAS DIFFUSER
Error handling Each component has its own error handling routine (OnComponentError) Chaque composant possède sa propre gestion des exceptions et donc des erreurs. Les liens OnError sont liés à une gestion d’erreur interne au composant. Les erreurs non prévues par les composants seront des exceptions Java ou des die Perl. Eux sont catché par le tLogCatcher et ne dépendent pas des liens OnError. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

27 DOCUMENT INTERNE - NE PAS DIFFUSER
tLogCatcher schema Default schema Le schema catché n’est pas modifiable. Par contre, les données circulent sous forme de flux … il est donc possible d’utiliser un tMap un tFilterRow ou tout autre composant de manipulation de flux pour adapter le schema par défaut à ces besoins. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

28 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 3: Handling errors Objectif : Générer des logs, monitorer ses jobs Avant cet exo : Manipulez le composant LogCatcher au sein du projet de demo. Faites une demo rapide et assurez vous que chacun a bien compris l’intérêt du composant. Cet exo permet de mettre en pratique la gestion d’erreur. Le tDie a pour action de tuer le job : Si un lien OnSubJobOk existait après le tRowGenerator, celui-ci ne serait pas exécuté Si ce job était exécuté par un tRunJob, le tRunJob renverrai un message d’erreur V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

29 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 4: Customizing error logs Objectif : Compléter les informations loggée par défaut. Insérer des conditions d’exécution ou d’arrêt du job V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

30 Performance monitoring
DOCUMENT INTERNE - NE PAS DIFFUSER tStatCatcher tFlowMeter Performance monitoring V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

31 DOCUMENT INTERNE - NE PAS DIFFUSER
tStatCatcher Monitoring the performance of each component Faites une démo : profitez en pour mettre en évidence l’ordre d’exécution des composants. Le tStatCatcher écoute et capture les opérations Start et End des composants dont l’option tStatCatcher Statistics est activée. Le temps d’exécution de chaque composant est aussi loggé. Le tStatCatcher permet : De réaliser des benchs De logger l’exécution et les performances de chaque composant des jobs Attention le log des performances … nuit aux performances des jobs !! Il ne faut donc logger que ce qui est essentiel. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

32 Monitoring and automation of log file management
DOCUMENT INTERNE - NE PAS DIFFUSER Automating the management of logs Using log files Monitoring and automation of log file management V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

33 DOCUMENT INTERNE - NE PAS DIFFUSER
Log management 3 types of log Manual log management and error management (Java or Perl errors) Management of component execution start, end and duration Management of metrics V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

34 Management of logs/preferences
DOCUMENT INTERNE - NE PAS DIFFUSER Management of logs/preferences In order to collate logs, configure preferences: V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

35 Management of logs/preferences
DOCUMENT INTERNE - NE PAS DIFFUSER Management of logs/preferences In the Properties and Job Designs view, preferences are entered automatically: Concernant la remarque de bas de page : : il faut donc indiquer aux apprenants que bientôt nous pourrons pointer sur une metadata du Repository ;) This is in Built-in mode, which is not great for maintaining preferences! It is better to create metadata in the Repository and specify it in each job. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

36 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 5: Creating the tables that are needed Objectif : Créer les tables permettant de stocker les logs dans une base de données. Les tables sont donc à créer en environnement de prod et de dev. Pour la pratique, n’oubliez pas de définir les tables dans le Repository. L’idée de faire un job réutilisable est judicieuse !! La déclaration des strings de connexion ainsi que le nom des tables pourraient être défini dans un fichier texte, et un tContextLoad permettrai de créer les 3 tables en simultanée. Le job pourrai ainsi s’utiliser sans n’avoir d’autre chose à faire que changer les valeurs de son fichier texte… V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

37 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 6 Objectif : Suivre les statistiques d’exécution de ses jobs Le job createFile est fourni aux participants V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

38 Activity Monitoring Console /PE
DOCUMENT INTERNE - NE PAS DIFFUSER Activity Monitoring Console /PE Centralize the monitoring of Talend jobs Single user version Harvesting of all execution server reports Functionalities Monitoring of: Events triggered by the jobs Execution time Volumes of processed data Harvest the local and remote server data simultaneously User-definable interface Integrated in Talend Open Studio or independent Benefits Single console for all integration jobs Custom indicators and thresholds Global view Talend propose un logiciel permettant de suivre les performance de ces logs : l’AMC L’AMC se base sur la table des log montées précédemment pour les analyser. Tout utilisateur peut monter sa propre appli pour suivre les stats et logs de ces jobs. Pourquoi souscrire à l’AMC ? Pour gagner du temps Pour bénéficier d’une maintenance de son outil de suivi (si TOS evolue, l’AMC suivra, si l’utilisateur à monté sa propre appli, il devra la maintenir seul) Pour bénéficier d’une offre « tout en un » (offre TIS, déploiement à distance, Grid Computing etc) V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

39 Exploiting the power of programming languages
DOCUMENT INTERNE - NE PAS DIFFUSER tGroovy, tJava* & tPerl* Create specific classes/subs Use jars/ external Perl modules Exploiting the power of programming languages tGroovy permet d’exéxuter du code groovy (langage simplifiant la syntaxe java) HelloWord Script : def name='World'; println "Hello $name!" V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

40 DOCUMENT INTERNE - NE PAS DIFFUSER
GroovyFile component GroovyFile: a simplified syntax The script is simply entered in a text file def name='World'; println "Hello $name"; http//:groovy.codehaus.org tGroovy permet d’exéxuter du code groovy (langage simplifiant la syntaxe java) Actuellement le tGroovy est un composant Begin (et non un composant Row s’exécutant à chaque passage d’une donnée) Prochainement un composant tGroovyFlex (il est déjà dans l’ecosystem) Attention, lors du déploiement, il ne faudra pas oublier de déployer aussi les fichiers textes contenant les scripts groovy V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

41 tPerlFlex/tJavaFlex component
DOCUMENT INTERNE - NE PAS DIFFUSER tPerlFlex/tJavaFlex component Component execution in 3 stages Component tPerlFlex/tJavaFlex: a component in 3 parts Starting Start Main End loop Lorsque le tPerlFlex reçoit un flux de données, il exécute d’abord la partie Start. A chaque ligne de données, la partie Main sera appelée. Enfin, une fois toutes les lignes de données traitées, viendra le tour de la partie End. Pour exemple, on peut imaginer l’utilisation suivante : Start : connection à un espace de stockage de données Main : injection des données ligne par ligne End : fin de la connection Détail linguistique, Start deviendra Begin … un utilisateur nous a en effet indiqué que Start ne pouvait être en opposition avec End alors que Begin pouvait ! End V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

42 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 7 Use tPerlFlex/tJavaFlex to generate the following flow: key value Miss 1 Mrs. 2 Mr. Objectif : Générer un flux de données à partir d’un composant Flex Start : initialise un tableau de variable Main : envoi chaque valeur du tableau End : supprime le tableau en mémoire Le flux créé peut être par exemple utilisé dans un tMap. Cette utilisation n’est pas optimisée, elle simule simplement la génération d’un flux. Les exercices suivant mettrons en avant d’autres solutions. Ce composant est plutôt dédié à la création de composant, aussi nous reviendrons sur son utilisation dans la suite de la formation ! V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

43 tJava / tPerl components
DOCUMENT INTERNE - NE PAS DIFFUSER tJava / tPerl components tJava / tPerl = Start section of a tPerlFlex/tJavaFlex Start Main End A retenir : Un composant Flex est toujours avant ou après un lien ThenRun V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

44 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 8: Create a table and use it in tMap Objectif : Instancier des variables globales (ici un tableau de String) Le tableaux créé peut être par exemple utilisé pour transformer un index en value. $output_row[‘civilite’] = $myArray[$input_row[‘civilite’] ]; Cette syntaxe peut s’utiliser dans un tMap ou dans tout composant permettant d’exprimer une expression. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

45 tJavaRow / tPerlRow components
DOCUMENT INTERNE - NE PAS DIFFUSER tJavaRow / tPerlRow components tJava / tPerl = Main section of a tJavaFlex / tPerlFlex Start Main End A retenir : Ces composants permettent de manipuler les flux de données représentés par des flèches oranges. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

46 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 9: Use a tPerlRow/tJavaRow to modify a flow: INPUT OUTPUT Miss 1 Mrs. 2 Mr. Objectif : Utiliser un composant tJavaRow pour transformer un flux de données. Dans ce job, seules les valeurs des données sont modifiées, le schema reste identique. A savoir : La syntaxe switch n’existe qu’en Java ! En perl, il faudra utiliser le if else V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

47 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 10: Use tPerlRow/tJavaRow to modify the flow: INPUT OUTPUT NSS month year department 03 1970 92 09 1976 91 Objectif : Utiliser un composant tJavaRow pour transformer un flux de données. Dans ce job, le Schema est modifié et les valeurs des nouvelles colonnes sont calculées à partir du flux d’entrée. Il est en effet possible de modifier le schema d’un flux ! Ici nous supprimons la column NSS en input et en créant 3 nouvelles en OUTPUT. Exemple: String myString = "abcdef"; String sample = myString.substring(1, 3); System.out.println("\"abcdef\".substring(1, 3)=" + sample); // console: "abcdef".substring(1, 3)=bc V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

48 Exploiting the power of programming languages
DOCUMENT INTERNE - NE PAS DIFFUSER Master the complex components: tGroovy, tJava & tPerl Create specific classes/subs Use jars/ external Perl modules Exploiting the power of programming languages Les participants doivent saisir eux-mêmes les bouts de codes qui vont être utile au reste de la formation. Ne fournissez pas de fichier texte leur permettant de réaliser du copier coller. Il est important que les personnes manipulent le code, si elles sont réfractaires à cela, faites leur bien comprendre qu’il s’agit d’une formation axés développement et qui nécessite des lignes de codes. Nous avons minimiser au maximum la quantité de ligne à saisir, mais nous ne pouvons totalement les supprimer. On apprend pas un sport en regardant des athlète, mais on l’apprend en le pratiquant. Il ne sera pas toujours évident d’amener les participants à coder. C’est cependant nécessaire, la « dimension d’accompagnement » de votre rôle de formateur/trice est donc ici beaucoup sollicité. N’oubliez pas de montrer l’utilité de l’editeur java (quand un jJetTemplate.java est édité) : il permet d’accéder au CTRL+space et de valider la syntaxe de son code. Coder dans cette vue et copier coller son code dans le JetTemplate.javajet est donc bien plus rapide est agréable que de coder directement dans le .javajet. Si un participant est vraiment réfractaire, prenez son siège quelques instants et saisissez vous-même le code ! Ralentir ainsi la formation et pénaliser toute l’équipe sensibilisera le participant à la nécessité de faire quelques efforts. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

49 Editor with embedded Java/Perl
DOCUMENT INTERNE - NE PAS DIFFUSER Editor with embedded Java/Perl Integrated Java / Perl editor Auto-complete Syntax-based colours Explanation of errors Javadoc / Perldoc More information about the Java editor V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

50 Managing shared code: routines
DOCUMENT INTERNE - NE PAS DIFFUSER Managing shared code: routines Structure your classes and subs Group together existing: Business classes Connectors Le fichier Routines rassemble toutes les classes Java et subs Perl communes au projet. Récupérer l’existant => des packages Java existent souvent (classes métiers) dans l’entreprise. Il s’agit de pouvoir les utiliser au sein de TOS V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

51 Creating a class or a sub
DOCUMENT INTERNE - NE PAS DIFFUSER Creating a class or a sub Example: Java Class The comments allow you to make the method available in Expression Builder and tRowGenerator V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

52 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 11: Create that allows the following to be extracted from an NSS: Month Year Department INPUT OUTPUT NSS month year dept 03 1970 92 09 1976 91 Objectif : Bénéficier d’une classe et de ses méthodes. L’objectif de ces méthodes est de les utiliser au sein d’un tMap grâce à l’Expression Builder. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

53 Exploiting the power of programming languages
DOCUMENT INTERNE - NE PAS DIFFUSER Mastering complex components: tGroovy, tJava & tPerl Create specific classes/subs Use jars/ external Perl modules Exploiting the power of programming languages V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

54 Use a jar file or an external module
DOCUMENT INTERNE - NE PAS DIFFUSER Use a jar file or an external module The external jar files are declared in a routine V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

55 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 12: Import the jakarta-oro jar package Create a routine isValide () public static boolean isValide (String ) { Perl5Matcher matcher = new Perl5Matcher(); Perl5Compiler compiler = new Perl5Compiler(); Pattern pattern; try { pattern = if (!matcher.matches( , pattern)) { return false; } } catch (MalformedPatternException e) { throw new RuntimeException(e); return true; Objectif : Développer des Routines utilisant un jar existant Indiquer les fonctionnalités de l’éditeur Java : Coloration Syntaxique Vérification Syntaxique CTRL + SPACE V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

56 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 13: Create a job and name it UseJar Use the function IsValide () Objectif : appeler un jar existant au sein d’un job En demo, montrez le déploiement et insistez sur le fait que le jar est déployé en même temps que le job V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

57 DOCUMENT INTERNE - NE PAS DIFFUSER
Advanced debugging mode Define Breakpoints Learn step-by-step mode (step in, step into, step over) View variables in real time “Hot fix” variables in memory Implementing jobs V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

58 DOCUMENT INTERNE - NE PAS DIFFUSER
Debug view "Step-by-step" mode Hot fix variables JasperETL Les Perspectives sont accessibles par le menu Window / Perspective. Néanmoins, cette perspective s’affiche d’elle-même lorsque vous cliquez sur le bouton DEBUG de la vue Run Job. On-line resources V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

59 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 14: Using the debugger Objectif : Découvrir l’utilisation de la vue Debug V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

60 DOCUMENT INTERNE - NE PAS DIFFUSER
Deploy your jobs to a production system Export your jobs Executable Web services Launch your jobs from the command line Plan execution of your jobs via a scheduler Implementing jobs V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

61 Deployment and optimisation
DOCUMENT INTERNE - NE PAS DIFFUSER Deployment and optimisation Deploy jobs Retrieve the generated code Conditions under which they function Le dossier exporté contient tous les fichiers du projet relatif au job, il y a donc des fichiers inutiles. Déploiement & Scheduling cas pratiques à manipuler demo d'un deploiement de webservice (pas de manip par les apprenants) rappel des best practice  (gestion des contexts, composant indépendant des OS   V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

62 DOCUMENT INTERNE - NE PAS DIFFUSER
Deploy a web service S’appuyer sur le TP réalisé par Laurent pour faire une démo. Exporter le job priceEuro->priceUSD en tant que Webservice Déployer le webservice Créer un job appelant le webservice à partir d’un tWebServiceInput V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

63 Talend products and deployment
DOCUMENT INTERNE - NE PAS DIFFUSER Talend products and deployment Talend Integration Suite Shares Repository Job Conductor Activity Monitoring Console / Dashboard Distant Run Grid Conductor CPU Balancer Enterprise Individual Open Source Subscription Deploy your jobs remotely Talend on Demand Hosted Repository Activity Monitoring Console /Personal Edition Talend Open Studio Business Modeler Job Designer Metadata Manager GPL Evoquer le déploiement à distance nous donnes l’occasion de rappeler les services présents dans TIS. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

64 DOCUMENT INTERNE - NE PAS DIFFUSER
Create your own components: design and implementation Understand the concepts of code generation via a template Understand the 3 template files: start/main/end Understand the XML description of components Internationalize your components Implementing jobs V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

65 Architecture of Talend Open Studio
DOCUMENT INTERNE - NE PAS DIFFUSER Architecture of Talend Open Studio Talend Open Studio Preliminary skills: JAVA 1.5 Preliminary skills: Perl 5.8 GUI Business Model XML Job XML ... Storage Perl Jet Template Java Jet Template C Jet Template Code Generator Le développement des Jet Templates Java est actuellement en cours. L’architecture de Talend est évolutive : elle permet de générer des scripts en tous langages, il suffit pour cela d’implémenter de nouveaux Jet Templates. Generated Program Perl Program Java Program C Program V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

66 Execution of components
DOCUMENT INTERNE - NE PAS DIFFUSER Execution of components Order in which components are executed End Starting End Starting Starting End Point technique à toujours avoir à l’esprit lors de la gestion d’erreur et du suivi des performances. Il faut bien comprendre cela avant d’imaginer se lancer dans la création de composants. A retenir : L’ordre d’exécution des composants correspond à leur représentation graphique (gauche->droite et haut->bas) tel que défini par les bonnes pratiques Les 3 phases d’un composant (starting … loop … end) End Starting Starting End V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

67 Design a specific component
DOCUMENT INTERNE - NE PAS DIFFUSER Design a specific component tJavaFlex / tPerlFlex : Start: action triggered by calling the component Main: action triggered with each line of data End: action triggered at the end of processing Le wiki présente un tutorial permettant de créer un composant spécifique dans la Palette du Job Designer. Créer son propre composant pour : - amener de nouvelles fonctionnalités - gagner du temps en fédérant des manipulations régulières (aggregation de fichiers, contrôle de données) en un unique composant. Qui dans les participants a réalisé ce composant ? V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

68 Module containing components
DOCUMENT INTERNE - NE PAS DIFFUSER Module containing components The module org.talend.designer.components.localprovider Do not modify this file by hand! Ce module contient tous les composants. Sur des versions précédentes, nous indiquions qu’il fallait créer ces propres composants dans ce plugin … la règle à changer, il faut les créer dans un dossier extérieur au logiciel. C’est dans ce plugin que seront ajoutés les composants de l’ecosystem ou ceux que vous allez créer (dans un sous dossier nommé user). V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

69 DOCUMENT INTERNE - NE PAS DIFFUSER
User components Store your components in a specific file Permet d’importer simplement des nouveaux composants. Les modifications sont ainsi apportées en dehors du workspace de TOS et sont réimportées à chaque ouverture du soft. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

70 DOCUMENT INTERNE - NE PAS DIFFUSER
Component’s Designer Your components currently in development V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

71 DOCUMENT INTERNE - NE PAS DIFFUSER
Best practices Differentiate between your development and production environments! Install an instance of TOS to develop your components Install an instance of TOS or of TIS Client to manage your Talend projects Simply separating the storage folders for production and development components is not sufficient. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

72 DOCUMENT INTERNE - NE PAS DIFFUSER
Component files <component>_<language>.xml Description of a component <component>_icon32.png The Palette icon <component>_messages.properties The contents of the properties view <component>_begin.<language>jet The Start part of the code <component>_main.<language>jet The Main part of the code (the loop) <component>_end.<language>jet The End part of the code V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

73 DOCUMENT INTERNE - NE PAS DIFFUSER
Working with files The Component Designer view V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

74 DOCUMENT INTERNE - NE PAS DIFFUSER
<component>_<language>.xml <component>_<language>.xml, description of component The Header tag presents the attributes AUTHOR, VERSION, COMPATIBILITY STARTABLE SCHEMA_AUTO_PROPAGATE DATA_AUTO_PROPAGATE The CONNECTORS tag contains: <CONNECTOR CTYPE="FLOW" MAX_INPUT="0"/> <CONNECTOR CTYPE="ITERATE" MAX_OUTPUT="1" MAX_INPUT="1"/> <CONNECTOR CTYPE="THEN_RUN" MAX_INPUT="1"/> <CONNECTOR CTYPE="RUN_OK"/> <CONNECTOR CTYPE="RUN_ERROR"/> <CONNECTOR CTYPE="RUN_IF"/> <CONNECTOR NAME="UNIQUE" CTYPE="FLOW" COLOR="086438" BASE_SCHEMA="FLOW" /> <CONNECTOR NAME="DUPLICATE" CTYPE="FLOW" LINE_STYLE="2" COLOR="f36300" BASE_SCHEMA="FLOW" /> PARAMETERS...following page ;) Indiquez le sens de chaque paramètre V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

75 DOCUMENT INTERNE - NE PAS DIFFUSER
<component>_<language>.xml <component>_<language>.xml, description of component: parameters <PARAMETER NAME="FILENAME" FIELD="FILE" NUM_ROW="2" REQUIRED="true" > <DEFAULT>'C:\talend_files\in.csv'</DEFAULT> </PARAMETER> The different forms of FIELD CHECK CLOSED_LIST DIRECTORY FILE MEMO MEMO_PERL MEMO_JAVA MEMO_SQL PROCESS_TYPE PROPERTY_TYPE SCHEMA_TYPE TABLE TEXT V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

76 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 15: First component! Objective is to understand the description xml file Objectif : Manipuler la perspective Component Designer, ddéfinir au sein du fichier de description XML les liens sortants et le contenu de la vue Component. Workspace : tDemoComponent1 (les liens sortants lors d’un clic droit sur le composant) Noter bien le warning apparaissant lorsque les champs REQUIRED sont vides Ctrl+Shift+F3 permet de régénérer les JET Templates, mais ne permet pas de rafraîchir les jobs ouverts. Il faut donc fermer votre job design et le re ouvir pour que le logiciel prenne en compte les modifications. Les manipulations à tester dans cet exercices sont les modifications liées aux CONNECTORS et aux PARAMETERS. Le nom des paramètres sont dans le fichier properties. A noter, la propriété REQUIRED qui permet d’activer les messages d’erreurs. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

77 Internationalize these components
DOCUMENT INTERNE - NE PAS DIFFUSER Internationalize these components CompoName_messages_zh.properties Traduction chinoise V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

78 DOCUMENT INTERNE - NE PAS DIFFUSER
JET Templates Eclipse Modeling Framework (EMF) contains a very powerful tool for generating source code: JET (Java Emitter Templates) Ouvrir les templates Java dans TOS permet d’identifier facilement les erreurs de syntaxe ou les import oubliés. Montrez par exemple le composant tFor … qui fait un while et non un for dans tFor_begin.javajet ;) Ne vous attardez pas plus sur le code, nous allons aborder chaque point étape par étape … V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

79 JET Templates: general information
DOCUMENT INTERNE - NE PAS DIFFUSER JET Templates: general information JET Template is made up of several parts: The code to be generated The functional code allowing you to determine the parameters of the code to be generated <% /*Java code which will not be included in the generated code otherwise called the functional code */ %> /* Jave Code constituting the generated code Insistez sur <% %> qui sont les balises utilisées sans les Jet Templates pour entourer le code fonctionnel V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

80 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 16: First JET Templates! Objectif : Découvrir les JET Template Workspace : tDemoComponent3 Créer le JET Template de toute pièce ! V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

81 JET Templates / Start :: imports
DOCUMENT INTERNE - NE PAS DIFFUSER JET Templates / Start :: imports JET Templates header Then provides information according to the functionality of components jet imports="    org.talend.core.model.process.INode org.talend.core.model.process.ElementParameterParser org.talend.core.model.metadata.IMetadataTable org.talend.core.model.metadata.IMetadataColumn org.talend.designer.codegen.config.CodeGeneratorArgument java.util.List " %> Les imports concernants les Metadata ne sont utile que pour les composants de flux. Ces imports ne sont donc pas requis pour le composant tJava, mais sont nécessaires au tJavaRow. Notez <% %> qui sont les balises utilisées dans les Jet Templates V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

82 DOCUMENT INTERNE - NE PAS DIFFUSER
JET Templates / tPrint The tPrint component: jet imports=" org.talend.core.model.process.INode org.talend.core.model.process.ElementParameterParser org.talend.designer.codegen.config.CodeGeneratorArgument " %> <% CodeGeneratorArgument codeGenArgument = (CodeGeneratorArgument) argument; INode node = (INode)codeGenArgument.getArgument(); String msg = ElementParameterParser.getValue(node, "__COMMENTAIRE__"); String msg = <%=msg %>; if(msg.equals("")) { System.out.println("Message is empty"); } else { System.out.println(msg); } Notez la syntaxe <%= qui permet de pousser des strings dans la partie du code générée. Le code généré est colorié en violet Workspace : tDemoComponent4 V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

83 JET Templates/tPrint/generated code
DOCUMENT INTERNE - NE PAS DIFFUSER JET Templates/tPrint/generated code Generated code String msg = "nbrLignes: " + ((Integer)globalMap.get("tLogRow_1_NB_LINE")) ; if(msg.equals("")) { System.out.println("Message is empty"); } else { System.out.println(msg); } Vérifier que tout le monde comprend bien l’importance des double-quote utilisées dans les champs properties : l’intérêt est de pouvoir utiliser la syntaxe java (appel à des variables, des fonctions voir des jar externes) Lorsqu’un champ de la vue properties est vide, le code généré est incorrect voire ne peux pas être généré ! V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

84 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 17: Create the component tPrint A single parameter: Comments Use it in a job! Objectif : Utiliser la valeur d’un paramètre pour générer son code Workspace : tDemoComponent3 Pour les apprenants partir du compo précédent et créer le JetTemplate begin Ctrl+Shift+F3 permet de régénérer les JET Templates, mais ne permet pas de rafraîchir la description du composant. A tester : l’utilisation de variables dans le champs Msg2Print :"Le tLogRow affiche 3 lignes "+((Integer)globalMap.get("tLogRow_1_NB_LINE")) V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

85 JET Templates/error management
DOCUMENT INTERNE - NE PAS DIFFUSER JET Templates/error management Native handling: when a Java exception occurs The OnError link is triggered instead of the OnOk link The variable compoName_ERROR_MESSAGE is instantiated The error message is sent to tLogCatcher Manual handling: compoName_ERROR_MESSAGE must be instantiated throw new Exception("myErrorMessage"); System.err.println("myErrorMessage"); compoName_ERROR_MESSAGE doit préciser le message d’erreur System.err.println("myErrorMessage"); permet d’afficher une trace rouge dans la console throw new Exception("myErrorMessage"); déclenche une exception, et la gestion native des erreurs et alors déclenchée V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

86 DOCUMENT INTERNE - NE PAS DIFFUSER
JET Templates / tPrint Handling an error in the tPrint component: jet imports=" org.talend.core.model.process.INode org.talend.core.model.process.ElementParameterParser org.talend.designer.codegen.config.CodeGeneratorArgument " %> <% CodeGeneratorArgument codeGenArgument = (CodeGeneratorArgument) argument; INode node = (INode)codeGenArgument.getArgument(); String msg = ElementParameterParser.getValue(node, "__MSG2PRINT__"); String cid = node.getUniqueName(); String msg = <%=msg %>; if(msg.equals("")) { String errMsg = "<%=cid %>: message is empty"; globalMap.put("<%=cid %>_ERROR_MESSAGE", errMsg); System.err.println(errMsg); throw new Exception(errMsg); } else { System.out.println(msg); } Notez la syntaxe String cid = node.getUniqueName(); qui permet de récupérer le nom du composant. La variable <%=cid %>_ERROR_MESSAGE sera récupérée par le tLogCatcher Facultatif : System.err.println(errMsg); affiche un message rouge dans la console Le code généré est colorié en violet V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

87 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 18: Manage errors from within a component Create the component tPrint Display an alert in the case of an empty message Trigger the OnError link Objectif : Gérer les erreurs au sein du composant : Workspace : tPrint Ctrl+Shift+F3 permet de régénérer les JET Templates, mais ne permet pas de rafraîchir la description du composant. Il faut donc fermer TOS et le re ouvir pour que le logiciel prenne en compte les modifications. Les manipulations à tester dans cet exercices sont les modifications liées aux CONNECTORS et aux PARAMETERS. Le nom des paramètres sont dans le fichier properties. A noter, la propriété REQUIRED qui permet d’activer les messages d’erreurs. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

88 DOCUMENT INTERNE - NE PAS DIFFUSER
JET Templates Eclipse Modeling Framework (EMF) contains a very powerful tool for generating source code: JET (Java Emitter Templates) In Talend, the JET Templates are split into 3 parts: Start Main End V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

89 DOCUMENT INTERNE - NE PAS DIFFUSER
tInputCivilite Le tPrint est utilisé pour afficher le nombre de lignes reçues par le tLogRow Le code Java est inspirer d’un exos précédent sur le tJavaFlex V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

90 Define a schema by default
DOCUMENT INTERNE - NE PAS DIFFUSER Define a schema by default <PARAMETERS> <PARAMETER NAME="SCHEMA" FIELD="SCHEMA_TYPE"   REQUIRED="true" NUM_ROW="1" READONLY="true"> <TABLE> <COLUMN NAME="id" TYPE="id_Integer" LENGTH="1"/> <COLUMN NAME="value" TYPE="id_String" LENGTH="30"/> </TABLE> </PARAMETER> </PARAMETERS> V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

91 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 19: Create the tInputCivilite (or tInputtitle) component Configure the xml file and properties Create the 3 JET Templates Objectif : Créer un composant Input générant un seul flux output. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

92 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 20: Manipulate multiple flows Modify the xml file in order to allow multiple outputs Modify the main Jet Template Objectif : Manipuler les flux multiples. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

93 Mode Row: Propagation of the schema
DOCUMENT INTERNE - NE PAS DIFFUSER Mode Row: Propagation of the schema Let's pass to the Row components V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

94 Propagation of the schema/ the code
DOCUMENT INTERNE - NE PAS DIFFUSER Propagation of the schema/ the code Ne détaillez pas le code, l’exercice suivant va nous permettre de l’aborder bout par bout ! V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

95 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 21: Create a tDemoRow component Objectif : Créer un composant de type Row V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

96 tInt2StringCiviliteRow
DOCUMENT INTERNE - NE PAS DIFFUSER tInt2StringCiviliteRow Pour cet exercice, le tRowGenerator génère 3 champs dont un est nommé id et un autre est vide. La propriété du tInt2StringCiviliteRow à utiliser est une String correspondant au nom de la colonne à peupler V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

97 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 22: Produce the tInt2StringCivilite component Begin: initialize the String [] valueArray table Main: loop on the columns and determine the content of the column __CIVILITEOUT__ Avant de lancer cet exercice, prenez le temps de réaliser cette modification dans un tJava et un tJavaRow - tJava : initialisation d’un tableau de String : String [] valueArray = {"mademoiselle", "madame", "monsieur"}; - tJavaRow : output_row.newColumn=valueArray[input_row.id] Le shema est figé (id, newColum et newColum2) car les terme newColum et id sont en dur dans le code. Objectif : Manipuler les données au sein d’un composant Row V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

98 DOCUMENT INTERNE - NE PAS DIFFUSER
tReplaceCiviliteRow <PARAMETERS> <PARAMETER NAME="CIVILITEOUT"  FIELD="TEXT" REQUIRED="true"  NUM_ROW="1" NB_LINES="1"> <DEFAULT>"newColumn"</DEFAULT> </PARAMETER> </PARAMETERS> Choix de la clef en tant que paramètre Ajout d'une colonne dans le flux de données Gestion d'erreur, warning et déclenchement d'Exception (selon les cases cochées dans IMPLICATION) V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

99 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 23: Produce the tRowCivility component Objectif : Manipuler les Schemas au sein d’un composant Row, initier une réflexion sur l’ergonomie des composants V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

100 DOCUMENT INTERNE - NE PAS DIFFUSER
Reject Case where the key is superior to 2 V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

101 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 24: Manage a reject flow Objectif : Gérer un flux de rejet V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

102 Load a jar into a component
DOCUMENT INTERNE - NE PAS DIFFUSER Load a jar into a component V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

103 DOCUMENT INTERNE - NE PAS DIFFUSER
Practice area Exercise 25: Import a Jar into a component Objectif : Embarquer un jar dans un composant V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

104 Improve the created components
DOCUMENT INTERNE - NE PAS DIFFUSER Improve the created components The Java editor allows you to identify unused imports Passer par l’éditeur Java permet d’observer le code java des JetTemplates et d’identifier (grâce au warning) les améliorations possibles. Il est par exemple conseillé de supprimer les imports inutiles ! V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

105 DOCUMENT INTERNE - NE PAS DIFFUSER
Virtual component Certain components can use other components in a transparent manner <CODEGENERATION> <TEMPLATES INPUT="AGGOUT" OUTPUT="AI"> <TEMPLATE NAME="AGGOUT" COMPONENT="tAggregateOut"> <LINK_TO NAME="AI" CTYPE="THEN_RUN"/> </TEMPLATE> <TEMPLATE NAME="AI" COMPONENT="tArrayIn"/> <TEMPLATE_PARAM SOURCE="self.OPERATIONS" <TEMPLATE_PARAM SOURCE="self.GROUPBYS"  TARGET="AGGOUT.GROUPBYS"/> <TEMPLATE_PARAM SOURCE="self.SCHEMA" TARGET="AGGOUT.SCHEMA"/> <TEMPLATE_PARAM SOURCE="self.SCHEMA " TARGET="AI.SCHEMA"/> <TEMPLATE_PARAM SOURCE="self.UNIQUE_NAME" TARGET="AGGOUT.DESTINATION"/> <TEMPLATE_PARAM SOURCE="self.UNIQUE_NAME "   TARGET="AI.ORIGIN" /> </TEMPLATES> </CODEGENERATION> Abordez le fonctionnement du tAggregateRow V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

106 Component and graphic interface
DOCUMENT INTERNE - NE PAS DIFFUSER Component and graphic interface The use of the graphic user interface by a component requires the creation of a dedicated plugin Donc si besoin de développer des composants graphique, nous conseillons de faire intervenir Talend afin : d’être accompagné dans ces développements de confier sa maintenance à Talend V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

107 Rely on the Talend community
DOCUMENT INTERNE - NE PAS DIFFUSER Rely on the Talend community Exchange with the community: Forum Ecosystem Your tools: Wiki BugTracker Visitez talendforge.org et présenter chaque outils en insistant sur le BugTracker. V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved

108 DOCUMENT INTERNE - NE PAS DIFFUSER
Your turn to play! Contact : Contact : V080424 Copyright © 2008 Talend. All rights reserved Copyright © 2007 Talend. All rights reserved


Download ppt "TALEND OPEN STUDIO ADVANCED"

Similar presentations


Ads by Google