cilia mediation framework v0.9.0 implantation.. plan cilia: c'est quoi? capacités. cilia:...

22
Cilia Mediation Framework v0.9.0 Implantation.

Upload: reynold-revel

Post on 04-Apr-2015

110 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 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

Cilia Mediation Framework v0.9.0Implantation.

Page 2: 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

Plan

Cilia: c'est quoi?

Capacités.

Cilia: Modèle d'implantation.

Mise en œuvre: Médiateur Cilia.

Assemblage d’une chaîne de médiation.

Exemples de médiateurs.

Page 3: 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

Cilia, c'est quoi?

Modèle à composant spécifique au domaine de la médiation.

Extension d'iPOJO. Permettre d’assembler des chaînes de médiation pour faire

communiquer des applications hétérogènes.

Approche « white-box »

Modèle simple.

Encourage la séparation de préoccupations. Basée sur une plateforme à services dynamique (OSGi).

Page 4: 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

Capacités

Runtime de médiation léger.

Faible couplage entre médiateurs.

Introspectable à l'exécution.

Permet de mettre en place différents patrons d'intégration.

Extensible.

Permet de définir des médiateurs configurables.

Configurables au runtime et a l'instanciation.

Page 5: 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

Cilia : Modèle d'implantation

Un médiateur Cilia est implanté avec : POJO (Plain Old Java Object). Description de médiateur Cilia (XML d'iPOJO + des handlers de

Cilia). Description des instances de médiateurs (XML d'iPOJO).

POJO

+

Description de Médiateur

Déclaration d'instance

+collector

scheduler

Processor(POJO)

sender

dispatcher

Médiateur Cilia

Page 6: 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

Médiateur Cilia

Composé d'un POJO et généralement deux handlers de Cilia. Scheduler handler : Gère le déclenchement du traitement des

données. Dispatcher handler : Gère le routage des données.

scheduler processor dispatchercollector sender

Pour la communication entre médiateurs ou par protocoles de réception/envoi de données :

Collector : Collecte ou reçoit les données.

Sender : Envoie les données.

Page 7: 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

Logique métier

La logique métier d'un médiateur Cilia est définie dans la méthode process du médiateur Cilia.

Exemple :

package org.demo.mediators;

import org.ow2.chameleon.cilia.Data;import org.ow2.chameleon.cilia.framework.Mediator;

public class MediatorTest implements Mediator {

public List<Data> process(List<Data> receivedData) {receivedData.get(0).setContent("new content");return new ArrayList(receivedData);

}}

Page 8: 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

Logique non-fonctionnel

La logique non-fonctionnelle d'un médiateur Cilia est gérée par un ensemble de handlers (scheduler et dispatcher).

<component name="MediatorTest"classname="org.demo.mediators.MediatorTest"><cilia:immediate-scheduler/><cilia:multicast-dispatcher/>

</component>

Composant iPOJO + Cilia : Immediate-scheduler : déclenche le traitement (process method) pour chaque donné reçue

multicast-scheduler : envoi la donnée traitéeà tous les senders.

Cilia handlers :

NOTE : le médiateur de cet exemple n'a aucun sender ni collector déclaré.

Page 9: 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

Mise en œuvre : médiateur Cilia

La version actuelle de Cilia est implémentée directement en utilisant le langage de description d’iPOJO.

Il y a trois étapes pour faire un médiateur Cilia en utilisant iPOJO.

Implémenter une classe Java (Le processor).

Décrire le composant iPOJO avec les handlers de Cilia.

Déclarer l'instance du médiateur.

package org.demo.mediators;public class MediatorTest implements Mediator {

public DataSet process(DataSet receivedData) {...}}

<component name="MediatorTest"classname="org.demo.mediators.MediatorTest"><cilia:immediate-scheduler/><cilia:multicast-dispatcher/>

</component>

<instance component="MediatorTest"/>

NOTE: La description du médiateur peut être faite dans le même fichier que la declaration de l’instance (Metadata d’iPOJO).

Page 10: 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

Assemblage de chaîne de médiation

Pour communiquer entre médiateurs : on ajoute et configure les senders dans la section du dispatcher et les collectors dans la section du scheduler.

<component name="MediatorTest" classname="org.demo.mediators.MediatorTest"><cilia:immediate-scheduler><!--les collectors--></cilia:immediate-scheduler><cilia:multicast-dispatcher>

<sender type="ea-sender" id="mtsender"><property name="sender.topic" value="result/topic"/>

</sender></cilia:multicast-dispatcher>

</component> <component name="MediatorTest2" classname="org.demo.mediators.MediatorTest2"><cilia:immediate-scheduler>

<collector type="ea-collector" id="mt2collector"><property name="collector.topic" value="result/topic"/>

</collector></cilia:immediate-scheduler><cilia:multicast-dispatcher> <!--les senders --></cilia:multicast-dispatcher>

</component>

<instance component="MediatorTest"/><instance component="MediatorTest2"/>

Déclaration des instances.

Déclarations des médiateurs

Communication entre les deuxMédiateurs en utilisant

EventAdmin avec leTopic = "result/topic"result/topic"

Page 11: 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

En progresse

Description des médiateurs dans un langage de haut niveau.

Les collectors et senders ne sont pas déclarés dans le type de médiateur, leur déclaration est faite au moment de décrire la chaîne de médiation sur la forme de connections.

<mediator-type><name>MediatorTest</name> <processor classname="org.demo.mediators.MediatorTest"/>

<scheduler type="immediate-scheduler" /><dispatcher type="multicast-dispatcher" />

</mediator-type>

<chain><mediator type="MediatorTest" id="mediator1" /><mediator type="MediatorTest2" id="mediator2" /><connection type="EventAdmin" out-mediator="mediator1"

in-mediator="mediator2" /></chain>

Déclaration de typede médiateur

Déclaration de chaînede médiation, utilisationde médiateurs et liaisonentre eux

Page 12: 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

Scheduler Exemples

Periodic scheduler

Déclenche le traitement de donnée à chaque période de temps.

Immediate Scheduler

Déclenche le traitement de donnée chaque fois qu’une donnée est collectée.

Correlation Scheduler

Déclenche le traitement de donnée quand la liste de données est complète en utilisant l’information ajoutée par le split.

Counter Scheduler

Déclenche le traitement de donnée quand une condition, qui évalue et compte les données, est vérifiée.

Page 13: 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

Periodic Schedulers

Déclenche le traitement de donnée à chaque période de temps.

Propriétés : scheduler.delay : temps en millisecondes avant de commencer le

premier traitement. scheduler.period : temps en millisecondes entre chaque

déclenchement du traitement.

Utilisation : <ipojo xmlns:cilia="org.ow2.chameleon.cilia">

<component name="MediatorTest" classname="org.demo.mediators.MediatorTest"><cilia:periodic-scheduler>

<collector type="ea-collector" id="mt2collector"><property name="collector.topic" value="result/topic"/>

</collector></cilia:periodic-scheduler><cilia:multicast-dispatcher/>

</component> <!--declaration de l'instance de médiateur -->

<instance component="MediatorTest"><property name="scheduler.delay" value="1000"/><property name="scheduler.period" value="10000"/>

</instance></ipojo>

Page 14: 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

Immediate Scheduler

Déclenche le traitement de donnée à chaque période de temps.

Propriétés : Aucune.

Utilisation :

<ipojo xmlns:cilia="org.ow2.chameleon.cilia"><component name="MediatorTest" classname="org.demo.mediators.MediatorTest">

<cilia:immediate-scheduler><collector type="ea-collector" id="mt2collector">

<property name="collector.topic" value="result/topic"/></collector>

</cilia:immediate-scheduler><cilia:multicast-dispatcher/>

</component> <!--declaration de l'instance de médiateur -->

<instance component="MediatorTest" /></ipojo>

Page 15: 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

Correlation Scheduler

Déclenche le traitement de donnée quand la liste de donnée est complet en utilisant l’information ajoutée par le split. Propriétés :

scheduler.correlation : quels sont les messages qui doivent être traités ensemble ?

Utilisation : <ipojo xmlns:cilia="org.ow2.chameleon.cilia">

<component name="MediatorTest" classname="org.demo.mediators.MediatorTest"><cilia:correlation-scheduler>

<collector type="ea-collector" id="mt2collector"><property name="collector.topic" value="result/topic"/>

</collector></cilia:correlation-scheduler><cilia:multicast-dispatcher/>

</component> <!--declaration de l'instance de médiateur -->

<instance component="MediatorTest"><property name="scheduler.correlation" value ="($SPLIT.ID)"/>

</instance></ipojo>

NOTE: "SPLIT.ID" est une méta-donnée ajoutée par le splitter pour identifier toutes les données qui doivent être traitées ensemble.La condition de finalisation est vérifiée quand le scheduler a reçu toutes les données.

Page 16: 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

Counter Scheduler

Déclenche le traitement de donnée quand une condition qui évalue et compte le donnée, est vérifiée.

Propriétés : scheduler.correlation : quels sont les messages qui doivent être

traités ensemble ? scheduler.count : expression de type LDAP pour compter les

données. scheduler.condition : condition de finalisation déclenchant le

traitement de données.

Page 17: 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

Counter Scheduler (2)

Utilisation : <ipojo xmlns:cilia="org.ow2.chameleon.cilia">

<component name="MediatorTest" classname="org.demo.mediators.MediatorTest"><cilia:counter-scheduler>

<collector type="ea-collector" id="mt2collector"><property name="collector.topic" value="result/topic"/>

</collector></cilia:counter-scheduler><cilia:multicast-dispatcher/>

</component> <!--declaration de l'instance de médiateur -->

<instance component="MediatorTest"><property name="scheduler.correlation" value ="($SOURCE.ID)"/><property name="scheduler.count"> <property name="countA" value="(data.name=dataA)"/> <property name="countB" value="(data.name=dataB)"/> </property><property name="scheduler.condition" value="(&amp;(countA=3)(countB=4))"/>

</instance></ipojo>

NOTE: Dans cet exemple, le scheduler va déclencher le traitement de données dès qu'il a reçu 3 données avec le nom "dataA" et 4 données avec le nom "dataB".

Page 18: 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

Dispatcher Exemples

Content Based Dispatcher (en utilisant LDAP) Utilise LDAP pour vérifier le contenu et choisir à quel sender

envoyer.

Content Based Dispatcher (en utilisant XPath) Utilise XPath pour vérifier le contenu et choisir à quel sender

envoyer.

Multicast Dispatcher Envoie toutes les données à tous les senders du médiateur.

Page 19: 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

Content Based Dispatcher (ldap)

Utilise LDAP pour vérifier le contenu et choisir a quel sender envoyer.

Propriétés : routes : contient les conditions et les senders qui recevront les

données quand la condition est vérifiée.

Utilisation : <ipojo xmlns:cilia="org.ow2.chameleon.cilia">

<component name="MediatorTest" classname="org.demo.mediators.MediatorTest"><cilia:immediate-scheduler><!--Declaration de collectors--></cilia:immediate-scheduler><cilia:content-based-dispatcher>

<sender type="ea-sender" id="sender1"><property name="topic" value="topic/to/send"/>

<sender/><sender type="ea-sender" id="sender2">

<property name="topic" value="other/topic/to/send"/><sender/>

</cilia:content-based-dispatcher></component>

<!--declaration de l'instance de médiateur --><instance component="MediatorTest">

<property name="routes"><property name="(data.content&lt;=5)" value="sender1"/><property name="(data.content&gt;=6)" value="sender2"/>

</property></instance>

</ipojo>

NOTE: envoie la donnée vers le sender1 si le data.content <= 5, sinon il l'envoie vers sender2.

Page 20: 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

Content Based Dispatcher (XPath)

Utilise XPath pour vérifier le contenu et choisir à quel sender envoyer.

Propriétés : routes : contient les conditions et les senders qui recevront les

données quand la condition est vérifiée. routes.condition.language : langage à utiliser pour la condition

(XPath).

Page 21: 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

Content Based Dispatcher (xpath)

Utilise XPath pour vérifier le contenu et choisir à quel sender envoyer.

Utilisation :

<ipojo xmlns:cilia="org.ow2.chameleon.cilia"><component name="MediatorTest" classname="org.demo.mediators.MediatorTest">

<cilia:immediate-scheduler><!--Declaration de collectors--></cilia:immediate-scheduler><cilia:content-based-dispatcher>

<sender type="ea-sender" id="sender1"><property name="topic" value="topic/to/send"/>

<sender/><sender type="ea-sender" id="sender2">

<property name="topic" value="other/topic/to/send"/><sender/>

</cilia:content-based-dispatcher></component>

<!--declaration de l'instance de médiateur --><instance component="MediatorTest">

<property name="routes.condition.langage" value="xpath"/><property name="routes">

<property name="//client[contrat-type='internet']/contrat-type" value="sender1"/><property name="//client[contrat-type='fix']/contrat-type" value="sender2"/>

</property></instance>

</ipojo>

NOTE: envoie la donnée vers le sender1, si dans le contenu de la donnée l'élément contract-type a pour valeur "internet". Si il a pour valeur "fix" il envoie vers le sender2.

Page 22: 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

Multicast Dispatcher

Envoie toutes les données à tous les senders du médiateur.

Propriétés : Aucune.

Utilisation :

<ipojo xmlns:cilia="org.ow2.chameleon.cilia"><component name="MediatorTest" classname="org.demo.mediators.MediatorTest">

<cilia:immediate-scheduler><!--Declaration de collectors--></cilia:immediate-scheduler><cilia:multicast-dispatcher>

<sender type="ea-sender" id="sender1"><property name="topic" value="topic/to/send"/>

<sender/><sender type="ea-sender" id="sender2">

<property name="topic" value="other/topic/to/send"/><sender/>

</cilia:multicast-dispatcher></component>

<!--declaration de l'instance de médiateur --><instance component="MediatorTest"/>

</ipojo>

NOTE: envoie la donnée vers le sender1 et vers le sender2.