est it possible de passer des paramètre à des jobs talend en argument ...?
est it possible de passer des paramètre à des jobs talend en argument ...?
Bonsoir,
effectivement tu peux le faire. Voici la méthode :
tu créées des variables de contexte dans ton job fils et dans ton job maitre où tu utilises un tRunJob, cliques sur le tRunJob, va dans l'onglet Component.
Là tu as un tableau "parameters | Values". Il te suffit de cliquer sur la petite croix verte en bas du tableau de choisir ta variable de context avec une valeur et le tour est joué.
merci pour ta réponse mais ca me boude encore ...
j'ai crée 2 variables de contexte dans chaque job mais pour le "+" dans le tRunjob est grisé je ne peux rien ajouter a ce tableau ..... mais j'utilise les variables dans le sub-job en cochant "transmit the whole context"
Ton "plus" est grisé car tu n'as pas du enregistrer ton job avant de revenir sur ton job maitre.
si si ... c'est fait ...
bon une autre question peut un peu hors sujet du forum ... est il possible, de transmettre un argument en utilisant SapagoBI ...
Je viens de faire le texte en utilisant "Transmit whole context" et en chargeant directement la variable.
Tu peux faire un teste en chargeant les jobs dans la pièce jointe.
Tiens moi au courant si cela fonctionne.
Par contre je ne sais pas ce que c'est que c'est que SapagoBI désolé.
Bonjour,
Je me permet de relancer cette discussion pour élargir un peu la réponse.
La solution donnée par jsd03 permet de passer des paramètres d'un job père vers un job fils.
Mais comment faire pour, dans un job père, récupérer un élément d'un job fils (dans mon cas, le pid) et ensuite le passer à un second job fils ?
Merci de vos réponses.
Il n'est pas possible de passer des paramètres depuis un job fils vers son job père.
Tu peux néanmoins utiliser les objets buffers pour récupérer des informations venant du job fils, comme décrit dans ce thread :
http://www.developpez.net/forums/d92...fant-job-pere/
Une petite remarque : est-ce qu'il ne serait pas plus simple d'utiliser le pid du père si tu souhaites que les 2 fils aient la même information ?
Nicolas
Non !
En gros, le second job est un job de supervision qui va aller dans la table des stats talend pour exploiter ce qu'a fait le premier job (durée du job, etc...)
Au début, j'ai essayé d'inclure le second dans le premier avec un composant postJob mais cela ne fonctionne pas car malgré la signification du mot "post" (après), le traitement est inclus dans le premier job et n'a donc pas accès à la ligne de fin.
C'est pour cela que je me retrouve à faire un job père qui lance d'abord le premier puis avec un postjob lance le second qui va récupérer les temps d'exécution du premier pour les exporter vers une console de supervision tierce. Souci, le second attend en entrée le pid du job qu'il doit rechercher dans la table des stats. Voilà tout le problème.
Clair et simple non ?![]()
Bonjour,
J'ai peut être une idée pour t'aider, mais malheureusement, je n'ai pas Talend sous la main pour tester ce que je vais te proposer, alors je m'en excuse par avance si ça ne fonctionne pas.
Tu crées dans ton job père, une variable de contexte pid_fils (par exemple) qui sera alimentée en faisant remonter le pid de ton job fils, dans ton job père, via la fonciton pid et un tBuffer.
Ensuite, tu passes cette variable de contexte à ton second job fils, et ça devrait te permettre de récupérer les informations que tu souhaites.
Bonne continuation.
J'ai rencontré une problématique similaire... pour résoudre celle-ci, j'ai créé un ensemble de routines StaticMap qui sont une extension du concept de le "globalMap".
Ces routines s'appuyant sur une Map statique, les informations sont partagées et accessible par l'ensemble des jobs et sous-jobs.
Si à la fin du sous-job, tu enregistres le temps d'exécution dans cette Map, l'information sera disponible après dans le job parent et dans le deuxième job fils.
Pour info, de mon coté j'ai géré cette problématique en utilisant la sortie du composant tStatCatcher dans un tMap.
Ensuite on peut faire ce qu'on veut des données en sortie de ce composant, notamment récupérer le process_id par exemple pour l'utiliser en paramètre d'un autre traitement.
Il faut gérer le fait que le tStatCatcher génère 2 lignes : une au début du traitement et une à la fin. Il suffit donc de filtrer sur l'info message_type.
Nicolas
Le problème qui me tracasse n'est peut être pas obligé de passer par là.
J'ai donc reformulé la problématique ici
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager