|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : novembre 2006 Messages : 226 ![]() |
Bonjour,
Je dois générer un fichier ayant la structure suivante : ENT;NumCde1;DateCde;NumFourn COM;Commentaire 1 COM;Commentaire 2 LIG;NumProduit 1;Qte LIG;NumProduit 2;Qte LIG;NumProduit 3;Qte ... FIN;NumCde1 ENT;NumCde2;DateCde;NumFourn COM;Commentaire 1 COM;Commentaire 2 LIG;NumProduit 1;Qte LIG;NumProduit 2;Qte LIG;NumProduit 3;Qte ... FIN;NumCde2 Les données sont stockées en BDD, j'ai du mail à voir quels composants utiliser et comment les orchestrer. Pour le moment j'ai mes tOracleInput + tMap qui me génèrent les lignes ENT mais ensuite quel composant me permettant de boucler sur mes commandes dois-je enchainer et à quels moments déclencher mes ecritures dans le fichier de sortie ? Toute aide est la bienvenue. |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
Bon alors je connais pas la structure de ta BDD donc j'vais essayer de deviner.
J'imagine que tu as une table pour les ENT, pour les COM , ect Moi je ferais ainsi : -Un job fils dans lequel j'ecrirais des requetes avec un where dynamique (une variable de context qui represente le num de commande) C'est à dire tu ecris l'entête puis les COM ... etc -Un job père qui iterate sur les commande qui tu as a traité et qui passe le num de commande en parametre au job fils |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : novembre 2006 Messages : 226 ![]() |
Bonjour et merci pour ta réponse.
pour le moment j'ai un job qui sait alimenter les lignes d'entete (avec un tflowiterate) comme dans l'image jointe. J'ai effectivement un sous-job qui doit aliment les COM mais je ne sais pas ou poser mon nouveau tflowiterate et comment récupérer dans mon sousjob la valeur pour construire ma clause where dynamique. |
|
|
00
|
|
|
#4 | ||
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
Dans tFlowtoIterate tu peux définir les clé (les valeurs que tu veux garder)
Pour les récupérer il suffit d'utiliser la fonction globalMap.get("NomClé") Cet fonction renvoie un type Objet il faut donc le caster en String pour pouvoir l'utiliser dans une requete Exemple dans un Input tu met en requête Code :
|
||
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : novembre 2006 Messages : 226 ![]() |
L'information est transmise entre le job main et son sous job ?
Si je resume, J'ai mon job parent qui se termine par un tFlowIterate + RunJob Et mon sous job débute par un toracleinput avec clause where dynamique. Que veux-tu dire que ma requete est en mode contexte ? |
|
|
00
|
|
|
#6 | ||
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
alors si tu utilise un Trunjob,
tu dois passer la variable en paramètre c a d : Dans ton sous job tu défini des variables de contexte Par exemple un String NumComande Dans le job pere , dans le tRunJob tu va ajouter dans l'encadrer paramere ton parametre NumComande et à coté dans le champs valeur tu mettera ((String)globalMap.get("NumComande")) Dans le sous job pour avoir une requête dynamique tu mettera : Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : novembre 2006 Messages : 226 ![]() |
Ok
j'ai réussi à créer un fichier correspondant à peu près à ce que je désire. Maintenant, je souhaite imbriquer des boucles (tFlowiterate). A 1 cde, n lignes de produits et a chaque produit n lignes de tailles par exemple. j'ai inséré pour le moment les entetes de commandes, les produits commandés et pour chaque produit je souhaite avoir les tailles commandées Puis-je mettre mon nouveau tflowiterate en sortie d'un tmap ou faut-il qu'il soit en sortie d'un tOracleInput ? |
|
|
00
|
|
|
#8 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
Ca c'est toi qui vois ce qui t'arrange, la seul contrainte c que le tFlowtoIterate prend un flow en entrée ^^
(en sorti d'un t map c un flow aussi ) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com