Vous êtes sur la page 1sur 11

Groupe dexpertise Informatica

Informatica
Fiche astuce n2 Rcursivit : loption

Concurrent Execution

INFORMATICA POWERCENTER
Mise en place de la rcursivit avec loption

Concurrent Execution

Dans cette fiche astuce, nous allons mettre en avant une volution dInformatica PowerCenter v8.5, qui permet la mise en place de la notion de rcursivit dans les traitements. [Wikipedia] : En informatique et en logique, une fonction ou plus gnralement un algorithme qui contient un appel elle-mme est dite rcursive. Deux fonctions peuvent s'appeler l'une l'autre, on parle alors de rcursivit croise. Nous allons vous montrer travers cette fiche en quoi cette option vous permettra dindustrialiser vos traitements rcurrents, avec un ROI quasi logique : - gain de temps (conomie dchelle avec une rationalisation du nombre de traitements) - meilleure maintenance - meilleure visibilit, et meilleur comprhension fonctionnelle des traitements - documentation facilite Si vous avez des questions, ou des remarques, nhsitez pas nous les faire parvenir. Pour accder aux fiches : http://www.unovia.fr/Informatica/fiches. Un espace dchange est en cours de construction, mais vous pouvez dores et dj nous joindre ladresse suivante : expert_informatica@unovia.fr Tout le travail accompli par ce groupe est fait de faon bnvole, nhsitez donc pas les remercier et les encourager.

Re-lecteurs: Christophe FOURNEL, Yannick TEMPORAL, Funji MATEMU, Stphane THIA

expert_informatica@unovia.fr

Fiche Astuce n2

Groupe dexpertise Informatica

Informatica
Fiche astuce n2 Rcursivit : loption

Concurrent Execution

SOMMAIRE

PROBLEMATIQUE : LES TRAITEMENTS RECURRENTS ................................................................................. 3 A. Contexte ........................................................................................................................................................... 3 B. Exemple ............................................................................................................................................................ 4 FIN DUN BLOCAGE TECHNIQUE : LA RECURSIVITE ................................................................................... 5 EXEMPLE DE MISE EN UVRE ..................................................................................................................... 6 A. Mise en uvre sans rcursivit ...................................................................................................................... 6 B. Mise en uvre avec rcursivit...................................................................................................................... 8 CONCLUSION ............................................................................................................................................. 10 DOCUMENT DE REFERENCE ...................................................................................................................... 11 GLOSSAIRE ................................................................................................................................................ 11 CONTACTS ET FICHES ................................................................................................................................ 11

expert_informatica@unovia.fr

Fiche Astuce n2

Groupe dexpertise Informatica

Informatica
Fiche astuce n2 Rcursivit : loption

Concurrent Execution

PROBLEMATIQUE : LES TRAITEMENTS RECURRENTS


A. CONTEXTE
Jusqu la version 8.5 de Informatica Power Center, il ntait pas possible de lancer de manire rcursive un workflow ou une worklet sans laide extrieure dun ordonnanceur (ex : Control-M) ou dun script systme (ex : bash/ksh). Pour bien comprendre cette ide dutilisation de la nouvelle fonctionnalit (concurrent execution), on peut prendre le contexte des reprises des donnes, qui peuvent tre quotidiennes, hebdomadaires, mensuelles. Habituellement, pour adresser ces problmatiques, il existe un certain nombre de solutions techniques, dont lefficacit et le cot dpendent de la complexit des donnes reprendre et des rgles fonctionnelles appliques par lETL. Par exemple, on peut : Prparer une requte SQL qui simule le traitement sur une plage de donnes antrieure, Monter un traitement spcifique pour la reprise avec lETL, Piloter le traitement normal de lETL dune manire diffrente pour la premire excution, afin quil traite toutes les donnes depuis un temps donn au lieu de ne traiter que le jour, la semaine, ou le mois en cours, Ou encore faire rpter le traitement normal en visant les donnes du dbut de la priode de reprise, un nombre de fois fini correspondant au nombre ditrations entre le dbut et la fin de la priode.

Mais que se passe-t-il lorsque les donnes dune itration sont dpendantes des rsultats de litration prcdente ?

expert_informatica@unovia.fr

Fiche Astuce n2

Groupe dexpertise Informatica

Informatica
Fiche astuce n2 Rcursivit : loption

Concurrent Execution

B. E X E M P L E
Une problmatique ncessitant la rcursivit Prenons un exemple : Dans un contexte assurance-vie, une application de gestion source me donne chaque mois pour lensemble des contrats financiers slectionns, une image du stock mensuel, et des mouvements quotidiens. Ces donnes sont transformes et insres dans un Datawarehouse cible. Fonctionnellement, dans le Datawarehouse cible, on doit calculer pour chaque jour ouvr ltat du stock, modifi par les mouvements, mais galement par certaines rgles de calcul et par des actions des gens du mtier, via une application VBA pointant sur le Datawarehouse. Autrement dit, pour chaque chargement mensuel dans le Datawarehouse, je dois travailler avec les donnes de mon application de gestion source du mois en cours, mais galement avec les donnes modifies du mois prcdent sur le Datawarehouse. Imaginons que : Les donnes oprationnelles existent partir de janvier 2010, On soit au mois de mars 2011, Et que la livraison soit prvue pour le mois davril 2011.

Le jour de la mise en production, nous devrons tre capable de faire une reprise de lhistorique, depuis janvier 2010 jusquau mois davril 2011, mais galement, de faire une alimentation mensuelle. Toutes les solutions habituelles de reprise deviennent coteuses et/ou difficiles mettre en place.

expert_informatica@unovia.fr

Fiche Astuce n2

Groupe dexpertise Informatica

Informatica
Fiche astuce n2 Rcursivit : loption

Concurrent Execution

FIN DUN BLOCAGE TECHNIQUE : LA RECURSIVITE


Jusquici, si nous avions voulu rpondre la problmatique prise en exemple via la rcursivit, voici quel blocage nous nous serions confront avec Informatica : Nous avons un workflow wf_RECURSIF qui fait appel la worklet wkl_A, la worklet wkl_A fait elle-mme appel la worklet wkl_B, et enfin la worklet wkl_B ferme la boucle en appelant wkl_A. Si nous lanons le workflow, Informatica arrte le traitement, ds que deux instances dune mme worklet sont en cours dexcution, ce que le produit ne gre pas.. Ci-dessous lillustration :

Workflow wf_RECURSIF

Worklet wkl_A

Rsultat, on a une boucle entre wkl_A (bleue) et wkl_B (orange), avec des accs concurrents qui se traduisent par lexcution suivante, termine ds quon appelle wkl_A la deuxime fois : Rsultat dans le Workflow Monitor

Worklet wkl_B

expert_informatica@unovia.fr

Fiche Astuce n2

Groupe dexpertise Informatica

Informatica
Fiche astuce n2 Rcursivit : loption

Concurrent Execution
Mais partir de la version 8.5, une nouvelle option est apparue dans longlet General des proprits des worklets et workflows :

C'est en activant cette nouvelle option, que l'IS va pouvoir grer l'excution de sessions concurrentes d'un mme workflow ou worklet. A travers cet exemple pratique, je vais vous prsenter lun des avantages de celle-ci.

EXEMPLE DE MISE EN UVRE


Pour expliquer lexemple technique suivant, nous allons reprendre lexemple fonctionnel dcrit en dbut de document : Chaque mois, pour alimenter notre table des stocks, nous avons besoin : 1) De prendre en compte les donnes provenant de lapplication source 2) De prendre en compte et modifier les donnes du mois prcdent sur le Datawarehouse cible Pour cela, nous avons deux traitements :
Un traitement que lon nomme Pilotage, qui nous sert calibrer les donnes ncessaires au traitement mensuel, Un traitement que lon nomme Traitement mensuel, qui nous sert effectuer les traitements de donnes applicatives.

Dans le cadre dune mise en production future, il faut donc prvoir dexcuter ces traitements : soit en mode Normal, soit en mode Reprise de donnes.

A. MISE EN UVRE SANS RECURSIVITE


Pour rpondre ce type de problmatique, sans la fonctionnalit de rcursivit, traditionnellement, on peut : 1 - Prparer une requte SQL qui simule le traitement et fait la reprise, 2 - Monter un traitement spcifique pour la reprise avec lETL, 3 - Piloter le traitement normal de lETL dune manire diffrente pour la premire excution, afin quil traite toutes les donnes depuis un temps donn au lieu de ne traiter que le jour, la semaine, ou le mois en cours, 4 - Ou encore faire rpter le traitement normal rcurrent en visant les donnes du dbut de la priode de reprise, un nombre de fois fini correspondant au nombre ditrations entre le dbut et la fin de la priode.
expert_informatica@unovia.fr
Fiche Astuce n2

Groupe dexpertise Informatica

Informatica
Fiche astuce n2 Rcursivit : loption

Concurrent Execution
Dans notre contexte, la solution la moins coteuse est srement la 4me : rpter le traitement X fois en visant les plages de donnes correctes par table de pilotage, du dbut la fin de la priode de reprise. Illustration du traitement mode Normal Mode normal : Ce mode correspond notre traitement mensuel. Ce dernier consisterait alimenter la table dit de Pilotage, puis lancer le Traitement mensuel des donnes. Mode reprise de donnes : Ce mode consiste ajuster la table de Pilotage pour le premier mois, lancer le Traitement mensuel, puis ajuster la table de Pilotage pour le deuxime mois, relancer le Traitement mensuel, et ainsi de suite autant de fois quil y a de mois entre le dbut de la reprise et la date prvue de mise en production.

Illustration du traitement en mode Reprise

Remarque : Pour optimiser cet enchainement de traitements (Illustration en mode Reprise), la session s_Pilotage et s_Traitement nont t dveloppes quune seule fois : elles ont t configures en reusable (en cas de modification dun des deux mappings, on ne le fera donc quune seule fois).

expert_informatica@unovia.fr

Fiche Astuce n2

Groupe dexpertise Informatica

Informatica
Fiche astuce n2 Rcursivit : loption

Concurrent Execution

Malgr lutilisation du reusable, et du gain de temps que cela peut procurer, il reste que : Si une option propre chaque mois charg doit tre change, elle doit tre change sur lensemble de la chane, session par session (-> Maintenance risque). On simpose un nombre de mois charger : Si le dploiement en production prend du retard (ou de lavance, mais cest moins courant), ou doit tre relanc cause dune correction des donnes sources, nous sommes obligs de rajouter un (ou des) maillon(s) la chane et relivrer/revalider chaque tape dans chaque environnement ! (->Evolutions coteuses)

Ces problmes nexistent plus si on utilise la nouvelle option, qui nous permet dimplmenter la rcursivit, comme nous allons vous lillustrer :

B. M I S E E N U V R E A V E C R E C U R S I V I T E
Le but de lexemple suivant est de crer un systme rationnalis, qui soit indpendant de la date de dploiement, et qui vite la rptition du code du pilotage ainsi que du traitement des donnes. Cette fois encore, nous avons deux modes dalimentation (Mode Normal, et mode Reprise), qui se traduisent par la mise en place de deux workflows : Le workflow mensuel, (Wf_MENSUEL) et le workflow de reprise (Wf_REPRISE). Bien quils se ressemblent, ce qui les diffrencie, cest lutilisation dune variable de worklet/workflow, que lon nommera dans notre exemple $$CHARGEMENTS (de type integer) et dont la valeur sera initialise diffremment selon quon soit en mode Normal ou en mode REPRISE. Cest cette variable qui va nous permettre de contrler la rcursivit.

Le workflow wf_MENSUEL (Alimentation en mode Normal) il initialise la variable $$CHARGEMENTS NULL, puis lance la worklet wkl_TRAITEMENT en lui passant la variable. Le workflow wf_REPRISE (Alimentation en mode REPRISE) il initialise la variable $$CHARGEMENTS 0, puis lance la worklet wkl_TRAITEMENT en lui passant la variable.

expert_informatica@unovia.fr

Fiche Astuce n2

Groupe dexpertise Informatica

Informatica
Fiche astuce n2 Rcursivit : loption

Concurrent Execution

Workflow wf_MENSUEL

OU

Workflow wf_REPRISE

$$CHARGEMENTS = NULL

$$CHARGEMENTS = 0

(Condition de sortie de boucle ici)

Cette fois, le systme de rcursivit peut fonctionner, car les worklets ont loption Configure Concurrent Execution coche !

La worklet wkl_TRAITEMENT reoit la variable $$CHARGEMENTS, lance les sessions de pilotage et traitement des donnes, si la variable $$CHARGEMENTS nest pas NULL, ou nest pas gale au nombre de mois entre le premier mois de reprise et la date daujourdhui, lance la worklet RELANCE. (ainsi, nous avons une condition de sortie de boucle) La worklet wkl_RELANCE reoit la variable $$CHARGEMENTS, incrmente $$CHARGEMENTS de 1, et relance la worklet TRAITEMENT.

expert_informatica@unovia.fr

Fiche Astuce n2

Groupe dexpertise Informatica

Informatica
Fiche astuce n2 Rcursivit : loption

Concurrent Execution
Les avantages dune telle solution sont nombreux : Le mapping de pilotage et de traitement nexistent que dans une seule session dans une seule worklet, Pas de copier-coller des sessions, une configuration unique, Le nombre de lancements du traitement mensuel lors de la reprise ne dpend plus que de la date laquelle on la lance ! Pas besoin de re-livrer si le dploiement est en retard ou si on veut refaire une reprise, Libre vous de rajouter des chemins, par exemple vous pouvez vouloir lancer un mapping spcial la fin de chaque trimestre ? utilisez la variable, avec par exemple une condition sur une division entire par trois ? Limmense plaisir de casser la mise en page du Workflow Monitor chez tous vos voisins branchs sur le mme environnement

Testez vous-mme !

CONCLUSION
Nous pouvons implmenter une forme de rcursivit sous Informatica : sans dpendre dun ordonnanceur externe ou de scripts systme, sans devoir fixer un nombre de boucles, sans copier X fois le code et risquer dautant plus les erreurs de configuration des sessions. Lexploration des avantages de loption Configure Concurrent Execution , selon les situations techniques et/ou fonctionnelles, peut savrer trs gagnante en matire de cots de dveloppement, de livraison et de maintenance des traitements. Elle a galement un potentiel certain dans la rsolution de problmatiques complexes spcifiques, limitant par exemple dventuelles acrobaties dans les mappings, ou lintroduction de procdures stockes et autres overrides de sources/cibles.

expert_informatica@unovia.fr

Fiche Astuce n2

10

Groupe dexpertise Informatica

Informatica
Fiche astuce n2 Rcursivit : loption

Concurrent Execution

DOCUMENT DE REFERENCE
PowerCenter Workflow Administration Guide 8.5 Chapter 20: Running concurrent Workflows

GLOSSAIRE
Rcursivit [Wikipdia] : En informatique et en logique, une fonction ou plus gnralement un algorithme qui contient un appel elle-mme est dite rcursive. Deux fonctions peuvent s'appeler l'une l'autre, on parle alors de rcursivit croise.

CONTACTS ET FICHES
Je fais partie dune communaut regroupant aujourdhui une soixantaine dindpendants spcialiss dans le dcisionnel. Lobjectif de cette communaut est de capitaliser sur les comptences dexperts du mtier et de les diffuser vers lextrieur, afin dy faire connatre notre expertise. Cette reconnaissance, nous souhaitons lobtenir : par des formations (nous sommes nombreux donner des formations pour le compte de grands cabinets des formations), par la diffusion de fiches : o de type fiche produit, o de type best practices (une fiche nest diffuse quaprs validation dune groupe dexperts compos de 4 5 personnes), o de type astuce de dveloppement, par du service (prestations dexpertise, de conseil, darchitecture, daudit) soit directement pour les clients, soit pour le compte des diteurs travers leur ple service. Si vous avez des questions, ou des remarques, nhsitez pas nous les faire parvenir. Pour accder toutes nos fiches (best practices, astuces, ) vous pouvez vous rendre lurl suivante : http://www.unovia.fr/Informatica/fiches. Un espace dchange est en cours de construction, mais vous pouvez dores et dj nous joindre ladresse suivante : expert_informatica@unovia.fr

expert_informatica@unovia.fr

Fiche Astuce n2

11