Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL > Talend
Talend Forum d'entraide sur Talend (Talend Open Studio, ...). Avant de poster --> FAQ Talend, Tutoriels Talend
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/03/2011, 14h15   #1
Membre habitué
 
Homme Nicolas Vandenbergue
Conseil - Consultant en systèmes d'information
Inscription : janvier 2011
Messages : 88
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vandenbergue
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : Conseil

Informations forums :
Inscription : janvier 2011
Messages : 88
Points : 112
Points : 112
Par défaut Passage de variables de contexte d'un job fils au job père

Bonjour,

Je cherche à récupérer dans un job père les variables de contexte modifiées dans un jobs fils.

Les variables de contexte sont définies au niveau du projet (présents sur le job père et le job fils). J'ai coché 'Transmettre tout le contexte'. Une variable de contexte modifiée par le job père est bien disponible pour le job fils. En revanche, une modification de variable de contexte dans le job fils n'est pas disponible pour une utilisation ultérieure dans le job père.
Y a-t-il une solution?

J'ai vu les composants tContextDump et tContextLoad, mais je ne vois pas comment passer d'un job à l'autre.

Merci,
NicolasTT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 16h13   #2
Membre émérite
 
Homme Nicolas Saumande
Architecte Décisionnel
Inscription : février 2008
Messages : 693
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Saumande
Âge : 36
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Architecte Décisionnel

Informations forums :
Inscription : février 2008
Messages : 693
Points : 879
Points : 879
Bonjour,

Effectivement tu peux utiliser ces composant pour récupérer les mises à jour réalisées sur tes variables de contextes.

Le tContextDump te permettrait dans ton job fils d'exporter le contenu de toutes tes variables de contexte dans un flux, que tu peux ensuite diriger dans un fichier.

Le tContextLoad te permet ensuite dans ton job père de récupérer le contenu d'un flux (par exemple celui généré par le fichier précédent) afin de l'utiliser pour mettre à jour tes variables de contexte.

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 18h04   #3
Rédacteur/Modérateur
 
Avatar de jsd03
 
Jean-Sébastien DARGES
Consultant décisionnel
Inscription : août 2008
Messages : 983
Détails du profil
Informations personnelles :
Nom : Jean-Sébastien DARGES
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Consultant décisionnel

Informations forums :
Inscription : août 2008
Messages : 983
Points : 1 845
Points : 1 845
La méthode est simple :

Job Fils :
une fois les modifications des variables de context fait, ajouter un tpostJob relié à un tContextDump (onComponentOk). Ce tContextDump est, lui, relié à un tBufferOutput (Main).

Job Pere :
tRunJob appelant le job fils avec coche "Transmettre tout le contexte" et relié à un tContextLoad en flux Main. Pour synchroniser le schéma du tRunjob et du tCOntextLoad clique sur "Copier le schéma du job fils"
__________________
Google est ton ami mais ton voisin aussi

Modérateur BI
Mes tutoriels - FAQ Talend - FAQ SQL*Plus

Suivez @Developpez sur twitter !
jsd03 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/03/2011, 20h52   #4
Rédacteur/Modérateur
 
Avatar de CyberChouan
 
Homme Benoît Courtine
Directeur technique
Inscription : janvier 2007
Messages : 2 744
Détails du profil
Informations personnelles :
Nom : Homme Benoît Courtine
Âge : 29
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2007
Messages : 2 744
Points : 4 202
Points : 4 202
Envoyer un message via MSN à CyberChouan
Il y a une alternative : utiliser une variable statique, partagée dans toute l'application. Il y a par exemple la routine "StaticGlobalMap" sur Talend Exchange (version statique et partagée de la globalMap).
__________________
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
CyberChouan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 16h47   #5
Membre habitué
 
Homme Nicolas Vandenbergue
Conseil - Consultant en systèmes d'information
Inscription : janvier 2011
Messages : 88
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vandenbergue
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : Conseil

Informations forums :
Inscription : janvier 2011
Messages : 88
Points : 112
Points : 112
Bonjour,

Merci pour les éléments de réponse.

Avec la piste de jsd03,
Citation:
Envoyé par jsd03 Voir le message
La méthode est simple :

Job Fils :
une fois les modifications des variables de context fait, ajouter un tpostJob relié à un tContextDump (onComponentOk). Ce tContextDump est, lui, relié à un tBufferOutput (Main).

Job Pere :
tRunJob appelant le job fils avec coche "Transmettre tout le contexte" et relié à un tContextLoad en flux Main. Pour synchroniser le schéma du tRunjob et du tCOntextLoad clique sur "Copier le schéma du job fils"
ma modification dans le job fils n'apparaît pas dans le job père. Dans mon job père, je positionne une valeur (via mon JavaFlex), puis je l'affiche dans une boîte de dialogue dans le job fils (OK). Je modifie cette variable dans le job fils (via mon JavaFlex), cette modification est bien visible (via un logrow ou une boîte de dialogue), mais elle n'est pas visible dans le job père (affichage dans ma boîte de dialogue KO).
Je joins les captures d'écran de mes deux jobs.

CyberChouan,

Citation:
Envoyé par CyberChouan Voir le message
Il y a une alternative : utiliser une variable statique, partagée dans toute l'application. Il y a par exemple la routine "StaticGlobalMap" sur Talend Exchange (version statique et partagée de la globalMap).
j'ai pu importer la routine "StaticMap" sur
http://www.talendforge.org/exchange/...ew.php?eid=277
As-tu des exemples d'utilisation à proposer ou un lien vers un tuto?
Images attachées
Type de fichier : png 01-pere.png (74,6 Ko, 18 affichages)
Type de fichier : png 02-fils.png (78,9 Ko, 19 affichages)
NicolasTT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 17h29   #6
Rédacteur/Modérateur
 
Avatar de jsd03
 
Jean-Sébastien DARGES
Consultant décisionnel
Inscription : août 2008
Messages : 983
Détails du profil
Informations personnelles :
Nom : Jean-Sébastien DARGES
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Consultant décisionnel

Informations forums :
Inscription : août 2008
Messages : 983
Points : 1 845
Points : 1 845
Normalement cette méthode fonctionne car on l'utilise tout les jours sur nos projets Il faut par contre que tes deux jobs utilisent les même variables de context (chargée dans la partie contexte du job)
__________________
Google est ton ami mais ton voisin aussi

Modérateur BI
Mes tutoriels - FAQ Talend - FAQ SQL*Plus

Suivez @Developpez sur twitter !
jsd03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 17h04   #7
Membre habitué
 
Homme Nicolas Vandenbergue
Conseil - Consultant en systèmes d'information
Inscription : janvier 2011
Messages : 88
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vandenbergue
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : Conseil

Informations forums :
Inscription : janvier 2011
Messages : 88
Points : 112
Points : 112
Merci jsd03, mais cela ne fonctionne toujours pas chez moi , même en ayant consulté mon voisin

Citation:
Envoyé par jsd03 Voir le message
Normalement cette méthode fonctionne car on l'utilise tout les jours sur nos projets Il faut par contre que tes deux jobs utilisent les même variables de context (chargée dans la partie contexte du job)
Ma variable est dans un contexte, avec le même nom pour les deux jobs.

Dans mon jobs père, à la sortie du tContextLoad, ma variable a pour valeur la valeur modifiée dans le job père (avant l'appel au job fils), et non pas la valeur modifiée dans le job fils.
Je suis alors remonté au job fils. Dans le job fils, à la sortie du tContextDump, j'ai mis un tlogrow pour voir la valeur de ma variable, et j'obtiens 'null' si je lance le job fils, ou la valeur modifiée dans le job père si je lance le job père. La modification de la variable dans le job fils n'est pas prise en compte dans les variables de contexte.
Pourtant, quand j'affiche cette variable dans une boîte de dialogue dans le job fils, j'ai bien la valeur modifiée dans le job fils.
Images attachées
Type de fichier : png 03-fils.png (66,9 Ko, 15 affichages)
NicolasTT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 23h21   #8
Invité régulier
 
Inscription : octobre 2005
Messages : 27
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 27
Points : 7
Points : 7
Par défaut exactement pareil le tcontextdumpt ne fonctionne pas

J'ai le même problème le fils et le père avec les même variables le fils les modifies dans une tjava et les affiche correctement, le père affiche toujours les ancienne valeurs.
homonxa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 09h34   #9
Membre émérite
 
Homme Nicolas Saumande
Architecte Décisionnel
Inscription : février 2008
Messages : 693
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Saumande
Âge : 36
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Architecte Décisionnel

Informations forums :
Inscription : février 2008
Messages : 693
Points : 879
Points : 879
Citation:
Envoyé par jsd03 Voir le message
La méthode est simple :

Job Fils :
une fois les modifications des variables de context fait, ajouter un tpostJob relié à un tContextDump (onComponentOk). Ce tContextDump est, lui, relié à un tBufferOutput (Main).

Job Pere :
tRunJob appelant le job fils avec coche "Transmettre tout le contexte" et relié à un tContextLoad en flux Main. Pour synchroniser le schéma du tRunjob et du tCOntextLoad clique sur "Copier le schéma du job fils"
Bonjour,

La solution de jsd03 devrait répondre à ton problème.

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h03.


 
 
 
 
Partenaires

Hébergement Web