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 :

Transmettre le message du TDie d'un job fils vers un job père


Sujet :

Développement de jobs

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Transmettre le message du TDie d'un job fils vers un job père
    Bonjour,

    Je suis débutant en développement Talend et je rencontre un problème.
    J'ai un créé un job père qui exécute un job fils. J'ai ajouté un composant TDie sur chaque job.
    Job père : Tdie = "erreur dans le job père"
    Job fils : Tdie = "erreur dans le job fils"

    Est-il possible de récupérer dans la log du job père le message d'erreur du Tdie du job fils ("erreur dans le job fils") ? Si oui comment ?

    Merci pour votre aide.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    Nativement, il n'est pas possible de faire "remonter" des informations d'un job fils vers son père (exécution descendante).

    Cependant, il existe un moyen de contourner cette problématique (de mémoire car je n'ai pas de studio sous la main pour tester) :
    1- Créer une routine qui contiendra uniquement une variable statique (que l'on peut assimiler à une constante) qui s'appellera tDieMsg, de type public final String.
    2- Dans le job fils, lorsque un tDie est déclenché, il faut initialiser cette variable via le message d'erreur du tDie (variable globale DIE_MESSAGES, toujours de mémoire )
    3- Dans le père, récupérer le contenu de cette variable (nécessite de ne pas cocher la case "Arrêtez en cas d'erreur du job fils dans le composant tRunJob appelant le job fils)

    Cela est possible car une routine est commune à tout les jobs, de fait, la ou les variables déclarées dans cette routine seront accessibles à partir de tout les jobs.
    Une simple initialisation de la variable dans le job fils permet de récupérer la valeur de la variable dans le job père.

    En espérant avoir répondu à votre question.

  3. #3
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Salut,

    Concrètement, tu peux faire comme ça :

    1) créer 2 jobs :
    1.a) le job père n'a rien de particulier
    1.b) le job fils doit avoir une variable de contexte de type "Object" (je l'appelle sharedMap dans mon exemple)

    2) dans le job père :
    2.a) créer (dans un tJava ou autre) une variable globale "spéciale" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    globalMap.put("sharedMap", new java.util.concurrent.ConcurrentHashMap());
    2.b) passer cette variable au fils par la variable de context sharedMap (dans le composant tRunJob, tu l'ajoutes dans la zone paramètre de contexte")

    3) dans le job fils
    3.a) alimenter cette variable de contexte sharedMap (dans du code java ou dans un tLogCatcher) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((java.util.Map) context.sharedMap).put("errorMessage", "blablabla");
    4) dans le job père :
    4.a) récupérer cette valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("error = " + ((String) ((java.util.Map) globalMap.get("sharedMap")).get("errorMessage")));

Discussions similaires

  1. Transmettre en message AUDIO
    Par laurent1 dans le forum Audio
    Réponses: 5
    Dernier message: 23/07/2013, 14h46
  2. Message d'avertissement lors de l'ecécution d'un job
    Par andre94200 dans le forum Exécution et industrialisation
    Réponses: 2
    Dernier message: 08/08/2011, 10h20
  3. [DI 11.7.3.4] message d'erreur lors de l'exécution d'un Job
    Par cubitus77 dans le forum Alimentation
    Réponses: 1
    Dernier message: 03/10/2008, 06h53
  4. Transmettre des messages udp via une page web
    Par DrMaboul dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 02/04/2008, 21h33
  5. [Jobs] Supprimer tous les jobs pour les recreer
    Par yolepro dans le forum Oracle
    Réponses: 3
    Dernier message: 25/11/2005, 16h47

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