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 :

Conditionner l'exécution de tOraclesp


Sujet :

Développement de jobs

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 30
    Points : 18
    Points
    18
    Par défaut Conditionner l'exécution de tOraclesp
    Bonjour,
    j'ai un flux de données avec 2 types d'informations (pour faire simple : un champ date est renseigné ou non). Je dois ensuite appeler une api Oracle via le composant tOracleSP. Cela fonctionne bien.

    Je n'ai besoin d'appeler l'api que dans le cas où le champ date est renseigné. Pour gagner du temps je souhaite donc conditionner l'appel : si Date est renseigné j'appelle l'api sinon "je passe à côté".

    Dans tous les cas j'ai besoin en sortie de récupérer l'ensemble des données pour d'autres traitements communs.

    ... ->tbufferOutput -> tOracleSP -> tMap -> ..

    Est-ce qu'il y a moyen de conditionner l'appel du tOracleSP ?

  2. #2
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Nom : Conditionel.png
Affichages : 237
Taille : 106,2 Ko

    J'ai une solution qui consiste à utiliser le code généré par Talend.

    Il faut que tu passes par un tJavaFlex qui appel un composant de début de route !

    Le code main du tJavaFlex de mon exemple est celui-là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if( /* condition  */ ){
    	//Ajout des paramètres
    	// ARG1 sera récupérable dans le tFixedFlowInput_1 en l'insérant dans un champs du chéma de type String comme ceci : (String) globalMap.get("ARG1")
    	globalMap.put("ARG1", "VALUE1");
    	globalMap.put("ARG2", "VALUE2");
     
     
     
    	// tFixedFlowInput_1Process appel le composant tFixedFlowInput_1 
    	tFixedFlowInput_1Process(globalMap);
    }
    Il faut que tu protèges ta route appelée dans le tJavaFlex par un composant tJava avec exécution conditionné à "false".
    L'idée est que Talend ne lance pas le composant lui même, mais que tu le lances uniquement dans le composant.


    C'est tordu mais ça marche très bien.
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  3. #3
    Membre averti

    Homme Profil pro
    informatique
    Inscrit en
    Avril 2013
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 280
    Points : 406
    Points
    406
    Billets dans le blog
    1
    Par défaut
    salut;pour faire plus simple;
    je te conseille de faire la condition du traitement de oraclesp dans ta tmap.
    tu declare une varable dans ta tmap qui test ton toracleSp.donc la sortie de ta tmap,tu auras bien les info que tu souhaites avoir.ça me semble être plus simple nan

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Merci pour ces réponses,
    comment je fais dans le tmap pour conditionner l'exécution du composant tOracleSP ?

    row13.Date_Previsionnelle==null?row13.Date_Previsionnelle:="Appel de tOracleSP(row13.parametre1, row13.parametre2)":row13.Date_Previsionnelle

    est ce l'appel à un sous-job comme le conseil SuperGeoffrey ?


    au final, je ne dois avoir qu'un seul flux sortant. Dans ce fichier il y a des lignes passées par un appel à Oracle et d'autres sans.

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 30
    Points : 18
    Points
    18
    Par défaut ça marche !!!
    Merci supergoffrey,
    je viens de mettre ta solution en œuvre et ça marche nickel !

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

Discussions similaires

  1. Conditionner un clic bouton avec l'exécution de l'action d'un autre bouton
    Par netbjava dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 27/06/2012, 23h56
  2. Conditionner exécution d'un script
    Par GYK dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/01/2011, 10h43
  3. peut-on conditionner les exécutions ?
    Par -=mateo=- dans le forum Maven
    Réponses: 6
    Dernier message: 08/04/2010, 18h15
  4. [ArchiveBuilder][JavaMail] exécution impossible...
    Par Gorthal dans le forum JBuilder
    Réponses: 7
    Dernier message: 10/01/2003, 09h12
  5. Réponses: 2
    Dernier message: 06/07/2002, 12h36

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