Catégories
Talend

Talend : Faire communiquer mes Jobs

Dans ce post je propose un pattern très pratique qui consiste à créer un job maître capable de lire du flux de données envoyé par ses fils.

Le job principal appelle un autre job :

  • en passant des variables de contexte
  • en récupérant les variables positionnées par le job appelé.
  • le job appelé, même en cas d’erreur ne doit pas planter le job parent.

Ce cas d’utilisation peut être utilisé si le job maître souhaite garder le contrôle sur ces fils.

Personnellement j’utilise ce pattern pour déterminer un code retour de l’exécution du job (0 => OK sinon KO). En cas d’erreur d’un des fils (sous job dont l’option « Arrête en cas d’erreur du fils » est décoché) le job maître récupère son état et réagit en conséquence.

Pour l’exemple, nous allons créer le job Master M_ParentFils_Parent et poser 3 composants : 1 tLoop, 1 tRunJob, 1 tJavaRow (pour afficher le retour du job fils).

faire_com_sous_jobs_1

Paramètres du tLoop :

faire_com_sous_jobs_2

Paramètres du tRunJob :

faire_com_sous_jobs_3

Paramètres du tJavaRow :

faire_com_sous_jobs_4

Créer ensuite un job fils M_ParebtFils_Fils avec 4 composants : 1 tJava, 1 tPostJob, 1 tFixedFlowInput, 1 tBufferOutput et 2 variables de context : Nb_de_Fois (Integer) et Message_Retour (Sring).

faire_com_sous_jobs_5

Paramètres du tJava :

faire_com_sous_jobs_6

Paramètres du tFixedFlowInput :

faire_com_sous_jobs_7

Résultat :

A l’exécution du job, le job Master M_PaentFils_Parent appelle 5 fois le sous job M_ParentFils_Fils en lui passant l’indice de la boucle dans le paramètre nommé Nb_de_Fois.

Le fils calcule si l’indice est pair ou impair et retourne le résultat dans context.Message_Retour. La valeur du context.Message_Retour est enfin affichée par le job Master dans la console.

2 réponses sur « Talend : Faire communiquer mes Jobs »

Excellent exposé… dommage que ça ne fonctionne pas !
dans le tJavaRow du job parent la variable Retour.Retour n’est pas connue !
Où est l’erreur ?

PS : il n’est pas fait mention de la déclaration des variables de contexte dans le sous-job…

Si, dans le tJavaRow du job parent, on met context.Retour à la place de Retour.Retour, il n’y a plus d’erreur… mais la valeur de retour n’est pas affichée !!!
Dommage de ne pas avoir testé le sujet de l’exposé :

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *