Upload
seanna
View
30
Download
2
Embed Size (px)
DESCRIPTION
Cilia, un framework de médiation ouvert, léger, multi-personnalités PARTIE 4 : Cas d'usage SI Auteurs : LIG/Adèle – Orange Labs/MAPS/MEP. Workshop Cilia : 21 juin 2010. Plan. Partie 1 : Médiation Historique Technologies de médiation Cilia : génération OSGi et multi-personnalités - PowerPoint PPT Presentation
Citation preview
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
PARTIE 4 : Cas d'usage SI
Auteurs : LIG/Adèle – Orange Labs/MAPS/MEP
Workshop Cilia : 21 juin 2010
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 2
Plan Partie 1 : Médiation
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é
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 3
Cas d'usage
Système d'InformationUC1 : Décomposition de messages et aggrégation de messages
Description et analyse
Spécification de l’architecture
Spécification des instances
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 4
UC1 : descriptionUne application de suivi de consommation envoie des messages à
destination de back-ends en charge de la facturation des communications fixe, mobile et internet
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 5
Requêtes et réponses Front-EndRequê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>
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 6
Transformer : créer un message compositeRequê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/">
<idclient>CLIENT-ID 00114</idclient><debut>15052010</debut><fin>15062010</fin>
</ suiviconso-requete><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>
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 7
UC1 : analyse
2) Découper le contenu et créer n requêtes3) Router les messages par le contenu
6) Appeler un service (pour chaque BE)
4) Traduire le contenu d'une requête (pour chaque BE)
1) Créer une requête composite
7) Regrouper les réponses associées à une requête et créer une liste de n réponses8) Créer une réponse et y insérer une valeur calculée
1. Transform
2. Split
InternetMobileFixe
3. Translate
6. Aggregate
5) Transformer une requête (pour chaque BE)
5. InvokeS
4. Transform
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 8
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>
<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>
Pour chaque sous-message, ajouter dans header :
- correlation_id,
- nb total de messages,
- n°seq
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 9
Translator : traduire le contenuAvant 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>
<debut>15052010</debut><fin>15062010</fin></suiviconso-requete>
Information de contexte :
- correlation_id,
- nb total de messages,
- n°seq
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 10
Transformer : supprimer un attributAvant 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><debut>15052010</debut><fin>15062010</fin>
</suiviconso-requete>
Information de contexte :
- correlation_id,
- nb total de messages,
- n°seq
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 11
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>
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 12
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>
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 13
Cas d'usage
Système d'InformationUC1 : Décomposition de messages et aggrégation de messages
Description et analyse
Spécification de l’architecture
Spécification des instances
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 14
Architecture
Catégories de médiateurs identifiésTransform, 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
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 15
Transformer
Scheduler = synchronisationBut : transmettre sans délai le message à la partie "traitement métier"
"immediate-scheduler" de la bibliothèque Cilia
Processor = traitement métierBut : modifier la structure d'un message
POJO "XsltTransformerProcessor"
Dispatcher = routageBut : router un message vers le composant destinataire
"multicast-dispatcher" de la bibliothèque Cilia
Cilia compendium : XsltTransformer
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 16
Spécification de Transformer
<mediator-component category="Transform"
name="XsltTransformer">
<processor classname="XsltTransformerProcessor"> <property name="xslt-file" field="filepath" /> </processor> <scheduler name="immediate-scheduler" /> <dispatcher name="multicast-dispatcher" />
</mediator-component>
Cilia compendium : XsltTransformer
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 17
Splitter
Scheduler = synchronisationBut : transmettre sans délai le message à la partie "traitement métier"
"immediate-scheduler" de la bibliothèque Cilia
Processor = traitement métierBut : découper le contenu sur expression et créer des messages
POJO "XmlSplitterProcessor"
Dispatcher = routageBut : 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
"content-based-dispatcher-with-correlation" de la bibliothèque Cilia
Cilia compendium : XmlSplitterWithCorrelation
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 18
Spécification de Splitter
<mediator-component category="Split"
name="XmlSplitterWithCorrelation">
<processor classname="XmlSplitterProcessor"> <property name="separator" field="expression" /> </processor> <scheduler name="immediate-scheduler" /> <dispatcher name="content-based-dispatcher-with-correlation" />
</mediator-component>
Cilia compendium : XmlSplitterWithCorrelation
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 19
Translator
Scheduler = synchronisationBut : transmettre sans délai le message à la partie "traitement métier""immediate-scheduler" de la bibliothèque Cilia
Processor = traitement métierBut : traduire des éléments du contenu d'un message en utilisant un dictionnaire local au médiateur (paramètre)POJO TranslatorProcessor
Dispatcher = routageBut : router un message vers le composant destinataire"multicast-dispatcher" de la bibliothèque Cilia
Cilia compendium : Translator
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 20
Spécification de Translator
<mediator-component category="Translate" name="Translator">
<processor classname="TranslatorProcessor"> <property name="dictionary" field="dictionary" /> </processor> <scheduler name="immediate-scheduler" />
<dispatcher name="multicast-dispatcher" />
</mediator-component>
Cilia compendium : Translator
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 21
FacturationInternet
Scheduler = synchronisationBut : transmettre sans délai le message à la partie "traitement métier"
"immediate-scheduler" de la bibliothèque Cilia
Processor = traitement métierBut : 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 = routageBut : router un message vers le composant destinataire
"multicast-dispatcher" de la bibliothèque Cilia
UC1 projet : FacturationInternet
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 22
Spécification de FacturationInternet
<mediator-component category ="InvokeS"
name = "FacturationInternet">
<processor classname ="FacturationInternetProcessor" >
<proxy value ="uc1-cxf-proxy" /> </processor>
<scheduler name="immediate-scheduler" /><dispatcher name="multicast-dispatcher" />
</mediator-component >
UC1 projet : FacturationInternet
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 23
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;
}
}
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 24
Aggregator
Scheduler : synchronisationBut : regrouper les messages sur identifiant de corrélation, puis transmettre la liste des messages corrélés au processor
"correlation-scheduler" de la bibliothèque Cilia
Processor : traitement métierBut : 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 : routageBut : router les messages vers le composant destinataire
"multicast-dispatcher" de la bibliothèque Cilia
UC1 projet : UC1Aggregator
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 25
Spécification de Aggregator
UC1 projet : UC1Aggregator
<mediator-component category="Aggregate"
name = "UC1Aggregator">
<processor classname ="UC1AggregatorProcessor" /> <scheduler name="correlation-scheduler" />
<dispatcher name="multicast-dispatcher" />
</mediator-component >
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 26
POJO UC1AggregatorProcessorpublic 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; }}
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 27
Cas d'usage
Système d'InformationUC1 : Décomposition de messages et aggrégation de messages
Description et analyse
Spécification de l’architecture
Spécification des instances
Déploiement
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 28
Instances
Chaîne ou graphe de médiationSpécification des instances des types identifiés
Spécification séparée des liaisons (binding)
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 29
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" >
<processor><property name="xslt-file" value="trans-2.xslt" />
</processor></mediator-instance>
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 30
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>
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 31
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"><processor>
<property name=“dictionary"> <item key=“SuiviConso" value=“SuiviConsoMobile"/></property></processor>
</ mediator-instance >
<mediator-instance type="Translator" id="translator-3"><processor>
<property name=“dictionary"> <item key="CLIENT-ID" value="CLIENT-IDENT"/> <item key=“SuiviConso" value=“SuiviConsoInternet"/></property></processor>
</ mediator-instance >
FacturationFixe
FacturationMobile
FacturationInternet
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 32
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"/>
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 33
Une instance de UC1Aggregator
<mediator-instance type="UC1Aggregator"
id="uc1aggregator-1"/>
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 34
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>
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 35
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>
Front End
Chain ProxyPremier médiateur (xslttransformer-1)
dernier médiateur
topic= splitaggregate/inputLe composant chain-proxy est un gestionnaire de requête qui sert aussi de façade pour l’accès à la passerelle
sender.send(data);…public void notifyData(Data data){…}
Gestionnaire de RQ/R
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP ― slide 36
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