Cilia, un framework de médiation ouvert, léger, multi-personnalités

Slides:



Advertisements
Présentations similaires
Cilia, un framework de médiation ouvert, léger, multi-personnalités
Advertisements

Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP slide 1 Cilia, un framework de médiation ouvert, léger, multi-personnalités.
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP slide 1 Cilia, un framework de médiation ouvert, léger, multi-personnalités.
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP slide 1 Cilia, un framework de médiation ouvert, léger, multi-personnalités.
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP slide 1 Cilia, un framework de médiation ouvert, léger, multi-personnalités.
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP slide 1 Cilia, un framework de médiation ouvert, léger, multi-personnalités.
Cilia Mediation Framework v0.9.0 Implantation.. Plan Cilia: c'est quoi? Capacités. Cilia: Modèle d'implantation. Mise en œuvre: Médiateur Cilia. Assemblage.
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP― slide 1 Cilia, un framework de médiation ouvert, léger, multi-personnalités.
Commerce électronique Automne  Introduction  Création du panier d’achats  Migration du panier d’achats  Conclusion.
UML EPITECH 2009 UML1 - Introduction UML – Définition – Historique – UML en entreprise – Couverture Concepts – Objet – Classe –
Système de gestion d'entrées pour un cinéma Scanvion Michel – Etudiant 4.
Développement à l'Aide de Langages Dynamiques : Smalltalk module IT308: Méthodologies et outils logiciels Nada Ayad, Damien Cassou et Annabelle Souc.
1- Régles de normalisation 2ème partie : normalisation Modèle Conceptuel des Données 2- Les Formes Normales 3- Dépendances Fonctionnelles 4- Recap - Méthodologie.
Initiation à la conception des systèmes d'informations. Cours N°4 : Modèle Logique de Données (MLD) Initiation à la conception des systèmes d'informations.
1 Identifier les composants d’un réseau local. 2 Les composants d’un réseau Des ordinateurs, appelés stations... …munis d’une carte réseau leur permettant.
Créer son Web-Service LIPM
Adressage IP Page 1 L’adressage IP.
Pour plus de modèles : Modèles Powerpoint PPT gratuitsModèles Powerpoint PPT gratuits Page 1 Free Powerpoint Templates Client service architecteur réseaux.
Réalisé par Ghribi Encadrés par M. (Suptech) M. (YAZAKI) 2014/2015 Projet de fin d’étude.
Les Bases de données Définition Architecture d’un SGBD
Initiation à la conception des systèmes d'informations
Environnement de développement des BD
RESEAUDENTREPRISE.COM Solution de communication d’entreprise et de vente en ligne.
Environnement du développement de BD ORACLE REPORTS 10g
Ch.1 : Modélisation des systèmes par SysML
Pas de variable globale
Les notions de classe et d'objet
TP N°2 : les Adresses IP *IP: Internet Protocol
Techniques de décomposition
TP N°3 : Adressage IP Les classes IP
Disposition Titre avec image
Collecte de données CAPI
Chiffrement de bout en bout
MVC et applications Web
WS Soap pour l’identification LDAP
Créer son Web-Service LIPM
– La communication : notions de base. – INTRODUCTION : QU’EST-CE QUE LA COMMUNICATION ? I/ LES DIFFÉRENTS TYPES DE COMMUNICATION II/ LES COMPOSANTES DE.
Système flexible de Workflow pour la plate-forme Motu
Créer son Web-Service LIPM
Développement d’un réseau social de collaboration destiné aux médecins radiologues Soutenance de projet de fin d’étude En vue de l’obtention du diplôme.
Août 2009.
Cyber-Sphinx Séance 2.
Afficher les Visiteurs Médicaux
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Programmation Orientée Objet C# El Akel Bouchra ISMONTIC Tanger 2013/2014.
Programmation Android Communication entre composants
Introduction à Internet
– La communication notions de base. – INTRODUCTION : QU’EST-CE QUE LA COMMUNICATION ? I/ LES DIFFÉRENTS TYPES DE COMMUNICATION II/ LES COMPOSANTES DE.
Modèles de représentation des systèmes d’information
Message Oriented Middleware MOM - Beghdad abdelkrim -abass youcef.
Plan d'urbanisation Version / 02 / Nov Mai 2013 Passation des marchés Sommaire Une vision unifiée de l'urbanisation et de l'approche.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Développement d’une application de gestion de pointage
Architecture BD Récif.
SUMEHR 20 septembre 2017.
Cours 10 : Les Web Services et WSDL Février Version 1.0 -
Programmation Android Les listes
Les structures de base Listes chainées. Listes Les listes(similaire aux tableaux) sont des structures informatiques qui permettent de garder en mémoire.
Les exceptions Le mécanisme des exceptions est destiné à permettre aux fonctions profondes d'une bibliothèque de notifier la survenue d'une erreur aux.
 C’est quoi Laravel ?  Installer Laravel 5 avec Composer  Structure des Fichiers  Créer une page d’authentification  Comment faire le Routing dans.
Plan I.Définitions II.Objectifs III.Intérêt IV.Quoi tester ? V.Processus VI.Exemples VII.Conclusion VIII.Références.
Principes de programmation (suite)
Listes Chaînées.
Conception de sites web marchands: TD 2
YII Yes It Is !.
Bases de données Singleton pour la connexion
Dridi Lobna 1 Couche Réseau II Réseau : Gestion de l’accès.
TP N°6: Construction d’un Serveur Multi-Client
TP N°4 Développement d’ une application
Transcription de la présentation:

Cilia, un framework de médiation ouvert, léger, multi-personnalités PARTIE 4 : Cas d'usage Auteurs : LIG/Adèle – Orange Labs/MAPS/MEP Workshop Cilia : 21 juin 2010 1

Plan Partie 1 : Médiation Partie 2 : Framework Cilia Historique Technologies de médiation Cilia : génération OSGi et multi-personnalités Partie 2 : Framework Cilia Modèle d'implantation Modèle de conception Médiation de données et médiation de service Partie 3 : Processus logiciel Spécification d’architecture Spécification d’instances Déploiement Partie 4 : Cas d'usage Interopérabilité dans un Système d’Information Remontée de données dans un Système Embarqué

Cas d'usage Système d'Information UC1 : Décomposition de messages et aggrégation de messages Description et analyse Spécification de l’architecture Spécification des instances Système Embarqué UC2 : 3

UC1 : description Une application de suivi de consommation envoie des messages à destination de back-ends en charge de la facturation des communications fixe, mobile et internet

Requêtes et réponses Front-End Requête FE : <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <suiviconso-requete xmlns:SOAP-ENV="http://www.example.org/SuiviConso/"> <idclient>CLIENT-ID 00114</idclient> <debut>15052010</debut><fin>15062010</fin> <produit>fixe,mobile,internet</produit> </suiviconso-requete> </SOAP-ENV:Body></SOAP-ENV:Envelope> Réponse FE : <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <suiviconso-reponse xmlns:SOAP-ENV="http://www.example.org/SuiviConso/"> <fixe>48</fixe> <mobile>18</mobile> <internet>17</internet> <total>73</total> </suiviconso-reponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Transformer : créer un message composite Requête initiale du client (body) : <suiviconso-requete xmlns:SOAP-ENV="http://www.example.org/SuiviConso/"> <idclient>CLIENT-ID 00114</idclient> <debut>15052010</debut><fin>15062010</fin> <produit>fixe,mobile,internet</produit> </suiviconso-requete> Requête après transformation (body) : <suiviconso-requete produit="fixe" xmlns:SOAP-ENV="http://www.example.org/SuiviConso/"> </ suiviconso-requete> <suiviconso-requete produit="mobile" xmlns:SOAP-ENV="http://www.example.org/SuiviConso/"> <suiviconso-requete produit="internet" xmlns:SOAP-ENV="http://www.example.org/SuiviConso/">

UC1 : analyse 1. Transform 2. Split 3. Translate 4. Transform 1) Créer une requête composite 2) Découper le contenu et créer n requêtes 3) Router les messages par le contenu 2. Split Internet Mobile Fixe 3. Translate 4) Traduire le contenu d'une requête (pour chaque BE) 4. Transform 5) Transformer une requête (pour chaque BE) 6) Appeler un service (pour chaque BE) 5. InvokeS 7) Regrouper les réponses associées à une requête et créer une liste de n réponses 8) Créer une réponse et y insérer une valeur calculée 6. Aggregate

Splitter : créer n requêtes <suiviconso-requete produit="fixe" xmlns:SOAP-ENV="http://www.example.org/SuiviConso/"> <idclient>CLIENT-ID 00114</idclient> <debut>15052010</debut><fin>15062010</fin> </ suiviconso-requete> Pour chaque sous-message, ajouter dans header : - correlation_id, - nb total de messages, - n°seq <suiviconso-requete produit="mobile" xmlns:SOAP-ENV="http://www.example.org/SuiviConso/"> <idclient>CLIENT-ID 00114</idclient> <debut>15052010</debut><fin>15062010</fin> </ suiviconso-requete> <suiviconso-requete produit="internet" xmlns:SOAP-ENV="http://www.example.org/SuiviConso/"> <idclient>CLIENT-ID 00114</idclient> <debut>15052010</debut><fin>15062010</fin> </suiviconso-requete>

Translator : traduire le contenu Avant traduction (exemple de FacturationInternet) : <suiviconso-requete produit="internet" xmlns:SOAP-ENV="http://www.example.org/SuiviConso/"> <idclient>CLIENT-ID 00114</idclient> <debut>15052010</debut><fin>15062010</fin> </suiviconso-requete> Après traduction : <suiviconso-requete produit="internet" xmlns:SOAP- ENV="http://www.example.org/SuiviConsoInternet/"> <idclient>CLIENT-IDENT 00114</idclient> Information de contexte : - correlation_id, - nb total de messages, - n°seq

Transformer : supprimer un attribut Avant transformation (exemple de FacturationInternet) : <suiviconso-requete produit="internet" xmlns:SOAP-ENV="http://www.example.org/SuiviConsoInternet/"> <idclient>CLIENT-ID 00114</idclient> <debut>15052010</debut><fin>15062010</fin> </suiviconso-requete> Après transformation : <suiviconso-requete xmlns:SOAP- ENV="http://www.example.org/SuiviConsoInternet/"> <idclient>CLIENT-IDENT 00114</idclient> Information de contexte : - correlation_id, - nb total de messages, - n°seq

Appeler un WS Réponse de FacturationFixe : <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <suiviconso-reponseFixe xmlns:SOAP-ENV="http://www.example.org/suiviconsoFixe/"> <conso>48</conso> </suiviconso-reponseFixe> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Réponse de FacturationMobile : … <suiviconso-reponseMobile xmlns:SOAP-ENV="http://www.example.org/suiviconsoMobile/"> <conso>18</conso> </suiviconso-reponseMobile> Réponse de FacturationInternet : <suiviconso-reponseInternet xmlns:SOAP-ENV="http://www.example.org/suiviconsoInternet/"> <conso>17</conso> </suiviconso-reponseInternet>

Aggregator : créer une réponse <SOAP-ENV:Envelope xmlns:SOAP- ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <suiviconso-reponse xmlns:SOAP- ENV="http://www.example.org/SuiviConso/"> <fixe>48</fixe> <mobile>18</mobile> <internet>17</internet> <total>73</total> </suiviconso-reponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Cas d'usage Système d'Information Services à l'habitat UC2 : … UC1 : Décomposition de messages et aggrégation de messages Description et analyse Spécification de l’architecture Spécification des instances Déploiement Services à l'habitat UC2 : … 13

Architecture Catégories de médiateurs identifiés Transform, Split, Translate, InvokeS, Aggregate Types de médiateur identifiés pour le cas d'usage Types spécifiques : - FacturationFixe, FacturationMobile, FacturationInternet - UC1Aggregator Types de la bibliothèque Cilia : - XsltTransformer, - XmlSplitter, - Translator

Transformer Cilia compendium : XsltTransformer Scheduler = synchronisation But : transmettre sans délai le message à la partie "traitement métier" Handler "immediate-scheduler" de la bibliothèque Cilia Processor = traitement métier But : modifier la structure d'un message POJO "XsltTransformerProcessor" Dispatcher = routage But : router un message vers le composant destinataire Handler "multicast-dispatcher" de la bibliothèque Cilia

Spécification de Transformer Cilia compendium : XsltTransformer <mediator-component category="Transform" name="XsltTransformer">      <processor name="XsltTransformerProcessor">           <property name="xslt-file" field="filepath" />        </processor>  <scheduler name="immediate-scheduler" />  <dispatcher name="multicast-dispatcher" /> </mediator-component>

Splitter Cilia compendium : XmlSplitterWithCorrelation Scheduler = synchronisation But : transmettre sans délai le message à la partie "traitement métier" Handler "immediate-scheduler" de la bibliothèque Cilia Processor = traitement métier But : découper le contenu sur expression et créer des messages POJO "XmlSplitterProcessor" Dispatcher = routage But : insérer un numéro de séquence et le nombre total de destinataires dans le header des messages, router les messages par le contenu vers les destinataires Handler "content-based-dispatcher-with-correlation" de la bibliothèque Cilia Cilia compendium : XmlSplitterWithCorrelation

Spécification de Splitter Cilia compendium : XmlSplitterWithCorrelation <mediator-component category="Split" name="XmlSplitterWithCorrelation">      <processor name="XmlSplitterProcessor">           <property name="separator" field="expression" />          </processor>  <scheduler name="immediate-scheduler" />  <dispatcher name="content-based-dispatcher-with-correlation" /> </mediator-component>

Translator Cilia compendium : Translator Scheduler = synchronisation But : transmettre sans délai le message à la partie "traitement métier" Handler "immediate-scheduler" de la bibliothèque Cilia Processor = traitement métier But : traduire des éléments du contenu d'un message en utilisant un dictionnaire local au médiateur (paramètre) POJO TranslatorProcessor Dispatcher = routage But : router un message vers le composant destinataire Handler "multicast-dispatcher" de la bibliothèque Cilia

Spécification de Translator Cilia compendium : Translator <mediator-component category="Translate" name="Translator">      <processor name="TranslatorProcessor">           <property name="dictionary" field="dictionary" />          </processor>  <scheduler name="immediate-scheduler" /> <dispatcher name="multicast-dispatcher" /> </mediator-component>

FacturationInternet UC1 projet : FacturationInternet Scheduler = synchronisation But : transmettre sans délai le message à la partie "traitement métier" Handler "immediate-scheduler" de la bibliothèque Cilia Processor = traitement métier But : transmettre la requête au service InternetBilling et récupérer la réponse POJO développé pour le projet UC1 – utilisation de CXF public class FacturationInternetProcessor {…} Dispatcher = routage But : router un message vers le composant destinataire Handler "multicast-dispatcher" de la bibliothèque Cilia

Spécification de FacturationInternet UC1 projet : FacturationInternet <mediator-component category ="InvokeS" name = "FacturationInternet"> <processor name ="FacturationInternetProcessor" >           <proxy value ="uc1-cxf-proxy" />          </processor>   <scheduler name="immediate-scheduler" /> <dispatcher name="multicast-dispatcher" />  </mediator-component >

POJO FacturationInternetProcessor public class FacturationInternet { private FacturationInternetService service; public Data process(Data data) { String content = (String) data.getContent(); String responseContent = service.getConsommation(content); data.setContent(responseContent); return data; }

Aggregator UC1 projet : UC1Aggregator Scheduler : synchronisation But : regrouper les messages sur identifiant de corrélation, puis transmettre la liste des messages corrélés au processor Handler "correlation-scheduler" de la bibliothèque Cilia Processor : traitement métier But : créer un message unique et y insérer une valeur calculée POJO développé pour le projet UC1 public class UC1AggregatorProcessor implements IProcessor {…} Dispatcher : routage But : router les messages vers le composant destinataire Handler "multicast-dispatcher" de la bibliothèque Cilia

Spécification de Aggregator UC1 projet : UC1Aggregator <mediator-component category="Aggregate" name = "UC1Aggregator"> <processor name ="UC1AggregatorProcessor" />   <scheduler name="correlation-scheduler" /> <dispatcher name="multicast-dispatcher" />  </mediator-component >

POJO UC1AggregatorProcessor public class UC1AggregatorProcessor implements IProcessor{ public List process(List dataSet) { String fixe = "0",mobile = "0",internet = "0"; int total = 0; Document document = null; for(int i=0;i<dataSet.size();i++){ document = getDocumentFromData((Data)dataSet.get(i)); if (isDocumentFromMobile(document)) mobile = getConsommation(document); else if (isDocumentFromInternet(document)) internet = getConsommation(document); else if (isDocumentFromFixe(document)) fixe = getConsommation(document); } //calcul du total total=Integer.valueOf(mobile)+Integer.valueOf(fixe)+Integer.valueOf(internet); Data data = (Data) ((Data) dataSet.get(0)).clone(); data.setContent(buildReponse(fixe, mobile, internet, total)); //composition de la réponse List returnList= Collections.singletonList(data); return returnList;

Cas d'usage Système d'Information Services à l'habitat UC2 : … UC1 : Décomposition de messages et aggrégation de messages Description et analyse Spécification de l’architecture Spécification des instances Déploiement Services à l'habitat UC2 : … 27

Instances Chaîne ou graphe de médiation Spécification des instances des types identifiés Spécification séparée des liaisons (binding)

Exemple de deux instances de Transformer Première occurrence de Transformer dans la chaîne de médiation : créer une requête composite <mediator-instance type="XsltTransformer" id="xslttransformer-1" > <processor> <property name="xslt-file" value="trans-1.xslt" /> </processor> </mediator-instance> Deuxième occurrence de Transformer dans la chaîne de médiation : supprimer un attribut <mediator-instance type="XsltTransformer" id="xslttransformer-2" > <property name="xslt-file" value="trans-2.xslt" />

Une instance de Splitter <mediator-instance type= "XmlSplitterWithCorrelation" id="xmlsplitterwithcorrelation-1"> <processor>   <property name="separator" value="//suiviconso-requete" /> </processor> <dispatcher>   <property name="language" value="xpath" /> <property name="condition">   <property name="//suiviconso-requete[@produit='fixe']" value="fixe" />   <property name="// suiviconso-requete[@produit='mobile']" value="mobile" />   <property name="// suiviconso-requete[@produit='internet']" value="internet" />   </property> </dispatcher> </mediator-instance>

Trois instances de Translator <mediator-instance type="Translator" id="translator-1"> <processor>   <property name=“dictionary"> <item key=“SuiviConso" value=“SuiviConsoFixe"/> </property></processor> </ mediator-instance > <mediator-instance type="Translator" id="translator-2"> <item key=“SuiviConso" value=“SuiviConsoMobile"/> <mediator-instance type="Translator" id="translator-3"> <item key="CLIENT-ID" value="CLIENT-IDENT"/> <item key=“SuiviConso" value=“SuiviConsoInternet"/> FacturationFixe FacturationMobile FacturationInternet

Trois instances pour appeler un WS FacturationFixe : <mediator-instance type="FacturationFixe " id="facturationfixe-1"/> FacturationMobile : <mediator-instance type="FacturationMobile " id="facturationmobile-1"/> FacturationInternet : <mediator-instance type="FacturationInternet " id="facturationinternet-1"/>

Une instance de UC1Aggregator <mediator-instance type="UC1Aggregator" id="uc1aggregator-1"/>

Spécification des liaisons <bindings> … <!-- Instance de Transformer vers instance de Splitter --> <binding from="xslttransformer-1” to="xmlsplitterwithcorrelation-1”/> <!-- Instance de Splitter vers les 3 instances de Translator --> <binding from="xmlsplitterwithcorrelation-1:fixe“ to="translator-1" /> <binding from="xmlsplitterwithcorrelation-1:mobile“ to="translator-2" /> <binding from="xmlsplitterwithcorrelation-1:internet“ to="translator-3" /> </bindings>

Liaison avec le premier médiateur <!-- point d'entrée pour le premier médiateur--> <binding to="xslttransformer-1"> <property name="topic" value="splitaggregate/input"/> </binding> topic= splitaggregate/input Le composant chain-proxy est un gestionnaire de requête qui sert aussi de façade pour l’accès à la passerelle. Premier médiateur (xslttransformer-1) Gestionnaire de RQ/R Chain Proxy Front End sender.send(data); … public void notifyData(Data data){…} dernier médiateur

Communication vers l’extérieur La chaîne de médiation communique avec des services externes en utilisant des technologies d’importation de services (ROSE, DOSGi- CXF, …) Cette solution permet d’avoir des médiateurs uniquement dédiés au code métier