38 Travaux sur la gestion de la Qualité de Servicepour leur plateforme.Mise en oeuvre Selon le Transparent shaping, des hooks sont insérées dans le codede base afin d’appeler du code adaptatif. Les auteurs définissent une application avecdes indirections comme une application adapt-ready. Cette adaptation est transparentecar elle préserve les fonctionnalités liées au comportement original de l’application etne mélange pas le code fournissant un nouveau comportement avec le code de base.Dans le cadre de la prise en charge de l’adaptation des processus BPEL, les auteursont développé un framework, appelé TRAP/BPEL, qui permet de générer des processusBPEL adapt-ready. De tels processus sont alors capables d’observer les invocationsvers les services Web partenaires et sont augmentés par des invocations vers un proxygénérique qui a pour rôle de fournir la logique d’adaptation. Ce proxy redirige alorsdes messages SOAP vers d’autres services lorsqu’un service Web échoue. Il est utilisépar tous les partenaires du processus et contient la logique de sélection des services.Pour cela, les politiques spécifiées dans le document de configuration sont chargées statiquement(au déploiement) dans le proxy. Les auteurs envisagent de pouvoir modifierces politiques dynamiquement. Une politique s’applique à une activité d’invocation, cequi permet au proxy de faire le lien entre une politique et un message SOAP losqu’ilreçoit un appel. Ces politiques permettent de spécifier trois types d’action : invoquerun service particulier, rechercher et invoquer un autre service, et réessayer l’invocationen cas d’échec. Le listing 3.4 exhibe une politique effectuant des rappels à un serviceen cas d’erreur.2 < InvokeName value ="WS - Invoke "/>< WsdlUrl preferred =" true " value =" http ://.../ WS - Description . wsdl "/>< Timeout seconds ="2"/>< MaxRetry value ="2"/>7 < RetryInterval seconds ="5"/> ... Listing 3.4: Exemple de politique TRAPPar ailleurs, des indirections sont insérées aux endroits sensibles du processus BPELoriginal. Lors de leur premier prototype, RobustBPEL, les auteurs avaient introduit desactivités scope autour des activités d’invocations de manière à pouvoir récupérer leserreurs dans un « fault handler » lorsqu’une invocation échouait, comme décrit dans lelisting BPEL 3.5. Un service du proxy était alors appelé pour informer le comportementlié à cet événement.< faultHandlers >< invoke name =" InvokeProxy " ../ >5 < eventHandlers >< onAlarm for =" PT15S ">< invoke name =" InvokeProxy " ../ >10 < invoke name =" invokeApprover " .."/>Listing 3.5: Modification du BPEL en fonction de la politiquePour la nouvelle version de leur prototype, les auteurs ont choisi d’intégrer davantagela logique d’adaptation dans le proxy et donc les activités d’invocations sont
3.2. Plateformes adaptatives pour la composition de services 39remplacées par un appel au proxy qui s’occupe intégralement de la prise en charge dela politique. Le monitoring est donc intégralement effectué dans le proxy qui devientune machine virtuelle pour l’exécution des politiques.Evaluation Bien que le domaine de préoccupations couvertes par les travaux autourde TRAP/BPEL soit encore restreint, la conception de son approche vers une meilleureséparation des préoccupations ainsi que de son processus de composition de préoccupationsprésentent de nombreux attraits. Tout d’abord, TRAP/BPEL cherche à resternon intrusif vis à vis du langage et de la plateforme BPEL, et vise à séparer clairementla logique d’adaptation de la logique de workflow afin de maximiser la réutilisabilitéde chaque logique. Cette approche peut ainsi être réutilisée sur tous les moteurs BPELsans que l’utilisateur ne se préoccupe de la manière de lier les diverses plateformes.Par ailleurs, la composition des préoccupations utilise une approche mixte qui consisted’une part à tisser des indirections vers la logique d’adaptation aux endroits pertinentsdans le code BPEL et d’autre part à intercepter les messages SOAP pour effectuer destraitements. Cette manière de procéder permet de lier les logiques de manière implicitepour l’utilisateur des politiques. L’utilisateur n’a dont pas à développer d’expertisepour apprendre à introduire ses préoccupations non fonctionnelles dans le code BPEL(à l’opposée de travaux comme AO4BPEL [CM04]).En revanche ce travail ne prend pas en compte ni le traitement statique, ni une gestionavancée de la QdS. Par ailleurs, le langage de politique reste relativement resteintet son ouverture à d’autres préoccupations de QdS n’est pas clairement identifiée.3.2.5 eFlowIntroduction Développé par HP, eFlow [CS01, CIjJ + 00, CIjJ + 00] est une plateformepour spécifier, établir et observer la QdS de services composites, tout en fournissantégalement un certain nombre de fonctionnalités telles que la gestion des événements,des exceptions, des transactions ou de la sécurité. Etant une approche plus ancienne,eFlow cherche à fournir aux utilisateurs un moyen de spécifier aisément des servicescomposites à partir de services de base, à l’instar de l’approche BPEL. Cette plateformeprésente des outils permettant d’adapter les compositions, notamment à la gestion dela QdS. L’objectif de cette plateforme est de rendre les compositions de services Webdynamiques et adaptables, en fonction des services présents sur le Web et des besoinsutilisateur. Sa valeur ajoutée se trouve donc en particulier dans sa capacité à créerstatiquement, ou modifier à la volée, des compositions qui peuvent ainsi dynamiquements’adapter aux changements de l’environnement d’exécution.Modélisation Avec eFlow, une composition de services est modélisée sous la formed’un graphe qui définit l’ordre d’exécution de noeuds. Les arcs du graphe supportentdes prédicats sur les variables du processus pour évaluer les transitions entre noeudsdu graphe. Les noeuds peuvent être soit de type service, soit de type décision, soit detype événement :– Les noeuds service de type simple représentent une invocation vers un servicesimple ou composite. La spécification d’un noeud simple inclut un nom, un identifiant,une liste de variables que le noeud peut lire ou écrire, ainsi qu’une règle de