IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement de jobs Discussion :

Passage de variables de contexte d'un job fils au job père


Sujet :

Développement de jobs

  1. #1
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2011
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 201
    Points : 352
    Points
    352
    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,

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    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

  3. #3
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    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 - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  4. #4
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    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

  5. #5
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2011
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 201
    Points : 352
    Points
    352
    Par défaut
    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 Images attachées   

  6. #6
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    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 - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  7. #7
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2011
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 201
    Points : 352
    Points
    352
    Par défaut
    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 Images attachées  

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 27
    Points : 25
    Points
    25
    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.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    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

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Le composant tContextDump ne prend pas en compte les modifications apportées aux variables du contexte par les composants tJava. Pour que ce soit le cas, il faut ajouter le code suivant : context.synchronizeContext( ) au code de son tJava.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 36
    Points : 38
    Points
    38
    Par défaut
    Salut, qd tu modifies les variables de contexte au sein du job fils je pense que tu les modifies en faisant qq ch du style : context.maVariable= nouvellevaleur;
    Cela ne suffit pas, il faut écrire : context.setProperties(maVariable,nouvellevaleur); ou qqch du genre (j'ai pa tos ouvert ss les yeux)

  12. #12
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 171
    Points : 106
    Points
    106
    Par défaut Talend context Fils vers parent
    Salut, je rouvre ce sujet car j'ai le même souci même après tester vos solutions.

    J'ai un groupe de context qui est fixé dans mon projet avec ce context.
    context.fileNameBAD, ce context est transmis par le parent au job fils.

    Je veux écraser la valeur du context par un résultat du job fil :
    context.fileNameBAD =((String)globalMap.get("tFileList_1_CURRENT_FILE")).toString());

    quand je fais le System.out.println(context.fileNameBAD);

    tout est niquel. mais dans le parent, la récupération du context reste butté sur le context du job transmis auparavant sans avoir écrasé la valeur que donne le job fils.

    J'ai tenté :
    - tCntextDump + tbufferOutput dans un post job dans le fil
    - t contextLoad dans le pere avec le même schéma. rien n'y fait.

    j'ai tenté et pas trouvé comment fonctionne context.synchronizeContext();
    j'ai tenté context.setProperty() mais rien non plus. help me plz je deviens FOU. comme toujorus avec Talend. lOl

    a bientôt

Discussions similaires

  1. Exporter un job/Probleme de variable de context
    Par consultant bi dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 03/07/2014, 15h26
  2. Lancer job talend avec plusieurs variables de contexte dans le script .sh
    Par TheRealWill dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 07/06/2010, 10h07
  3. Transmettre un contexte (ou des variable) d'un job enfant à son job père
    Par TheRealWill dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 21/05/2010, 14h35
  4. [TOS 3.0.2] Variables de contexte dans un job fils
    Par atb dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 03/02/2009, 13h16
  5. [langage] Passage de variables...
    Par martijan dans le forum Langage
    Réponses: 8
    Dernier message: 30/07/2003, 09h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo