Utiliser une bifurcation dans les traitements

Dans ce tutoriel, vous allez découvrir un exemple d’utilisation du composant conditionnel de Data Integrator pour réaliser une bifurcation entre deux traitements.

Prérequis :

  • Data Integrator 4.2 SP7 installé avec IPS 4.2 SP3.
  • Référentiel local crée.
  • JOB crée sous le Designer de Data Integrator avec le référentiel local.
  • Fichier Excel source « Financial sample.xlsx » : exemple de source contenant des données financières par pays et produit.
  • Connaître la hiérarchie des objets Data Integrator.
  • Savoir créer un JOB avec un DataFlow et des composants sous le Designer de Data Integrator. Voir le tutoriel suivant.
  • Savoir créer une source et une cible de données. Voir le tutoriel suivant pour l’import d’un fichier Excel et le tutoriel suivant pour éditer un format de fichier.

Contexte :

Dans le cadre du développement d’un projet sous le Designer de Data Integrator vous pouvez avoir besoin de tester différentes versions d’un traitement sur une même source ou bien le même traitement appliqué à différentes versions de la même source. Il peut aussi être intéressant de conserver l’ancienne version d’un traitement qui pourra être exécutée à la place de la nouvelle version avec simple changement d’une variable.

Grâce au composant conditional de Data Integrator vous pouvez créer une bifurcation entre deux traitements, le flux choisi pour exécution dépendra du résultat du test d’entrée dans le composant conditional. Ce composant n’est pas disponible au sein d’un Dataflow, par contre lorsque votre vue est placée au sein d’un JOB ou d’un Workflow vous pouvez trouver ce composant dans la barre des composants à droite de votre fenêtre Designer :

Pour notre exemple le résultat au test réalisé par notre composant conditional déterminera le choix entre les deux flux possibles de notre bifurcation : le premier flux sera celui présenté dans le tutoriel sur gen_row_num_by_group() et le deuxième flux sera une variante, extrayant ses données de la même source, mais calculant pour chaque région les trois meilleurs produits selon la valeur agrégée sur l’année du profit dégagé au lieu du nombre de vente comme dans le tutoriel précédent.

Ajoutez la conditionnelle dans votre Workflow, vous y copierez ensuite votre Dataflow présenté dans le tutoriel sur gen_row_num_by_group() et le renommerez DF_Classement_1 :

La première action à réaliser est la création d’une variable globale pour notre JOB (nous aurions aussi pu utiliser une variable locale à notre Workflow) dont la valeur permettra de choisir le traitement à exécuter au sein de notre conditionnelle. Placez pour celà la vue sur votre JOB puis cliquez sur Outil puis Variable :

Créez ensuite deux variables nommées « $VARExtraction » et « $VARDate_Extraction » par un click droit sur « Variables globales ». Commencez vos variables par « VAR » en lettre capitales signifier que vos variables sont globales donc accessibles partout dans votre JOB, vous écrirez d’éventuelles variables locales en « var » celà apportera de la clarté lors de l’utilisation de l’éditeur de variables.

N’oubliez pas de donner un type (ici varchar 4) et une longueur pour vos variables. Vous pouvez aussi leur donner une valeur par défaut mais dans notre cas nous le ferons ailleurs :

Créez ensuite un script (composant « Init ») :

Puis reliez ce composant « Init » à votre workflow, il va vous servir à initialiser les variables globales de votre JOB dans le cas ou elle n’ont pas déjà une valeur :

Ouvrez ensuite le composant « Init » et cliquez sur l’éditeur pour aller chercher vos variables :

Le test conditionnel vérifie si votre variable est bien dénuée de valeur (« is null ») lorsque l’exécution de votre JOB commence, dans ce cas elle lui attribue une valeur par défaut que vous pourrez directement changer à la main dans le composant Init par la suite. Si le JOB est appelé (par un ordonnanceur par exemple) avec une valeur définie pour ces variables alors leur valeur par défaut ne sera pas utilisée.

Initialisez la valeur de $VARDate_Extraction à « 2013 » puis $VARExtraction à 0 :

Adaptez votre Dataflow DF_Classement_1 pour qu’il utilise dans son filtre la variable $VARDate_Extraction à la place d’une date entrée en dur, pour celà ouvrez le premier Query du flux et utilisez là aussi l’éditeur pour cliquer – glisser votre variable. Vous serez ainsi sûr de ne pas vous tromper dans son nom :

Créez un nouveau Workflow DF_Classement_2 puis copiez – collez le contenu de DF_Classement_1 dans DF_Classement_2. Copiez ensuite le Workflow d’origine dans la case en haut du composant conditional et le nouveau Workflow dans la case du bas. Puis ajoutez en cliquant sur l’éditeur en haut à droite la condition permettant le choix de la branche de la bifurcation à exécuter :

Si $VarExtraction vaut 0 (c’est le cas pour l’instant) alors DF_Classement_1 sera executé, pour toute valeur différente de 0 c’est DF_Classement_2 (le nouveau Dataflow) qui sera exécuté.

Modifiez le traitement de DF_Classement_2 afin qu’il agrège le profit par produit pour chaque région et l’année choisie, voici par exemple la modification du composant Query_GroupBy :

Vous devez propager cette modification tout le long du nouveau Dataflow pour propager le changement.

Lancez ensuite une première exécution en gardant $VARExtraction = 0, puis une deuxième avec par exemple $VARExtraction = 1 car celà permettra l’exécution du nouveau Dataflow modifié.

Pendant l’exécution vous pouvez suivre les étapes du traitement pour voir si le bon Dataflow est exécute :

Résultat avec $VARExtraction = 0 :

Résultat avec $VARExtraction = 1 :

Les résultats sont conformes aux attentes.

Vous savez maintenant comment utiliser le paramétrage avec des variables et le composant conditional pour construire des bifurcations d’exécution sous Data Integrator.

Laisser un commentaire

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

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.