Académique Documents
Professionnel Documents
Culture Documents
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.
expert_informatica@unovia.fr
Fiche Astuce n2
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
Informatica
Fiche astuce n2 Rcursivit : loption
Concurrent Execution
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
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
Informatica
Fiche astuce n2 Rcursivit : loption
Concurrent Execution
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
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.
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.
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.
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
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
Informatica
Fiche astuce n2 Rcursivit : loption
Concurrent Execution
Workflow wf_MENSUEL
OU
Workflow wf_REPRISE
$$CHARGEMENTS = NULL
$$CHARGEMENTS = 0
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
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
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