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 paramètre de père vers fils


Sujet :

Développement de jobs

  1. #1
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 81
    Points : 49
    Points
    49
    Par défaut Passage paramètre de père vers fils
    Bonjour,

    Je sollicite de nouveau votre aide...

    Maintenant que j'ai fait mes traitements sur mon fichier au préalable, je souhaite maintenant l'inserer dans une BDD (aucun souci de ce coté)

    Souhaitant séparer chaque étape, j'ai fait :

    JA00, qui est composé de J01->OnSubjOk->J02
    JA01_traitementFichiers
    JA02_FichierToBdd

    C'est là que ça se "complique".
    Dans JA01 :
    j'ai un composant TFileList qui me récupère le (un seul) fichier (Je pars du principe que je ne connais pas le nom du fichier, mais je connais son extension et son schéma).
    Ensuite il en découle une série de tFileInputDelimited qui a pour Nom de fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((String)globalMap.get("tFileList_1_CURRENT_FILEDIRECTORY"))+"/"+((String)globalMap.get("tFileList_1_CURRENT_FILE"))
    Cette partie là fonctionne.

    Dans JA02 j'ai un TfileInputDelimited qui est en "main", mais comment lui passer le paramètre qui provient du job précédent ?
    Car le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((String)globalMap.get("tFileList_1_CURRENT_FILEDIRECTORY"))+"/"+((String)globalMap.get("tFileList_1_CURRENT_FILE"))
    il ne le connait pas.

    J'ai essayé de mettre ce code dans une globalMap : même problème, en dehors du job elle n'est pas connue.
    Je me suis dit qu'en mettant le résultat dans un context, il pourrait être connu de tous les jobs :
    J'ai fait ceci : Dans un 1er temps j'ai crée mon context "NomFichier" qui est de type string et sans valeur et dans un 2nd temps (cette partie est faite dans JA01):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    context.NomFichier = ((String)globalMap.get("tFileList_1_CURRENT_FILEDIRECTORY"))+"/"+((String)globalMap.get("tFileList_1_CURRENT_FILE"));
    Mais toujours la même problématique dans le J02 le context vaut "null"....

    Au final j'aurais un job "master" qui ressemblera à ça :
    JA00 ->OnSubjOk -> JB00 ->OnSubjOk -> JC00

    Pouvez vous m'aider ?

    Cordialement.

  2. #2
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    N'est-il pas possible de faire le tFileList dans le job principal et de passer ensuite le nom du fichier par context vers les deux jobs fils ?

  3. #3
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 81
    Points : 49
    Points
    49
    Par défaut
    Bonjour MythOnirie,

    Qu'entendez vous par là ? que je fasse mon tFileList dans le Job : JA00 ? ça m'avait traversé l'esprit.

    De ce que j'ai pu lire : en utilisant le tContextLoad / tContextDump cela pouvait solutionner l'affaire.

    Mais jusqu'à présent mes essais sont restés infructueux.

    Avez-vous déjà utilisé ces composants ?

    Cordialement,

  4. #4
    Membre éprouvé
    Avatar de ce.moi7
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Mars 2004
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 164
    Points : 1 023
    Points
    1 023
    Par défaut
    Citation Envoyé par jp_____ Voir le message
    Bonjour MythOnirie,

    Qu'entendez vous par là ? que je fasse mon tFileList dans le Job : JA00 ? ça m'avait traversé l'esprit.

    De ce que j'ai pu lire : en utilisant le tContextLoad / tContextDump cela pouvait solutionner l'affaire.

    Mais jusqu'à présent mes essais sont restés infructueux.

    Avez-vous déjà utilisé ces composants ?

    Cordialement,
    Bonjour,

    Tu peux utiliser une instance de la classe java.util.concurrentHashMap.

    Je m'explique : dans ton job JA00, à l'aide d'un tSetGlobalVar, tu définis une objet appelé "sharedMap" (par exemple) dans ta globalMap.

    Dans un tJava, ça revient à faire cela :
    globalMap.put("sharedMap", new java.util.concurrent.ConcurrentHashMap());

    Dans un tSetGlobalVar, ça revient à ça :
    Nom : 2016-02-10_15h29_29.png
Affichages : 480
Taille : 4,5 Ko

    Ensuite, dans les "paramètres de contexte" de ton tRunJob (onglet "Composant") qui appelle ton programme JA01, tu mets ceci :

    Nom : 2016-02-10_15h19_50.png
Affichages : 465
Taille : 1,5 Ko

    mais juste globalMap.get("sharedMap") devrait fonctionner...

    Ensuite, dans l'onglet "context" de ton JA01, tu déclare une variable "sharedMap" de type "Objet" comme ceci :

    Nom : 2016-02-10_15h22_42.png
Affichages : 475
Taille : 7,1 Ko

    Ensuite, tu peux mettre à jour ton objet de type ConcurrentHashMap de la manière suivante : ((java.util.Map) context.sharedMap).put("controleCoherenceOk", "N");

    De cette manière, tu pourras, dans ton job JA00 et après exécution de ton job JA01, récupérer cette valeur stockée dans ta sharedMap en faisant :

    ((java.util.Map)globalMap.get("sharedMap")).get("controleCoherenceOk");

    Et tu fais passe la valeur à ton job JA02.

    ATTENTION : cette solution n'est pas compatible avec le multi threading.

    N'hésite pas à mettre le statut RESOLU si cette solution te convient.

  5. #5
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 81
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    J'ai fait autrement :

    Dans mon JA00 j'ai :

    TfileList_1 ---Iterate--->Tjava_3---Main---tFlowToIterate_1---Iterate---JA01

    Code tJava
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    System.out.println("*********************************************************************************************");
    context.NomFichierComplet 	= ((String)globalMap.get("tFileList_1_CURRENT_FILEPATH"));
    context.NameFile 		= ((String)globalMap.get("tFileList_1_CURRENT_FILE"));
    System.out.println("				Traitement du fichier ====> "+context.NameFile+" <====");
    System.out.println("*********************************************************************************************");
    Dans le job JA01
    Tous mes tFileInputDelimited ont pour nom de fichier : context.NomFichierComplet

    Ensuite à la fin de tous mes traitements j'appelle le JA02.

    ça ne me plait pas comme solution, mais vu le temps qu'il m'étais imparti j'ai "bricolé".

    Quand j'aurais un peu plus de temps, je reprendrais votre procédure.

    Je mets résolu. Au final il y a deux solutions

    Merci à vous 2 d'avoir consacrer un peu de votre temps pour m'aider.

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passage paramètre depuis VBS vers Hta
    Par papyxy dans le forum VBScript
    Réponses: 2
    Dernier message: 21/02/2013, 18h08
  2. Réponses: 2
    Dernier message: 30/08/2009, 23h56
  3. Passage de paramètre depuis Access vers Excel
    Par funkyjul dans le forum VBA Access
    Réponses: 4
    Dernier message: 07/10/2008, 09h43
  4. Passage paramètres Php vers Vbs
    Par Travailleuuse06 dans le forum VBScript
    Réponses: 1
    Dernier message: 04/09/2006, 20h31
  5. [PHP-JS] Passage de paramètre de Javascript vers fonction Php
    Par winnie82 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/07/2006, 10h06

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