Configuration Interface for MEssage ROuting



Documents pareils
Configuration Interface for MEssage ROuting

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

BIRT (Business Intelligence and Reporting Tools)

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Générer du code à partir d une description de haut niveau

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Manuel utilisateur. des. listes de diffusion. Sympa. l'université Lille 3

1 Modélisation d être mauvais payeur

Maarch V1.4

1. Installation d'un serveur d'application JBoss:

MEDIAplus elearning. version 6.6

Guide utilisateur Archivage intermédiaire Messagerie. Enterprise Connect pour Outlook 2010 EC V 1.0

Ingénierie des Modèles. Méta-modélisation

contact@nqicorp.com - Web :

Les Portfolios et Moodle Petit inventaire

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Configurer la supervision pour une base MS SQL Server Viadéis Services

JOnAS Day 5.1. Outils de développements

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Les tablettes et l'extranet Intermixt Mode d'emploi

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013

Installer et configurer Oracle Forms 11gR2 Windows 7 64 bits

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Votre premier projet Android

3615 SELFIE. HOW-TO / GUIDE D'UTILISATION

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

DOCUMENTATION - FRANCAIS... 2

Guide de démarrage rapide

DSL. Domain Specific Language. À l'aide des technologies Eclipse Modeling. Goulwen Le Fur Le 23 novembre 2012

Compte-rendu de projet de Système de gestion de base de données

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

LANDPARK ACTIVE DIRECTORY OPEN/LDAP

Chapitre 2. Classes et objets

TABLE DES MATIERES A OBJET PROCEDURE DE CONNEXION

Projet Java EE Approfondi

contact@nqicorp.com - Web :

Sage CRM. Sage CRM 7.3 Guide du portable

ECLIPSE ET PDT (Php development tools)

Intégration de Cisco CallManager IVR et Active Directory

Projet Active Object

VTigerCRM. CRM : Logiciel de gestion des activités commerciales d'une (petite) entreprise

DOCUMENTATION - FRANCAIS... 2

WEB page builder and server for SCADA applications usable from a WEB navigator

Sommaire. G. Pujolle, F. Ravat, C. Soulé-Dupuy, G. Zurfluh

Sébastien DEBIA Damien DUMAZER. Cahier des Charges

Java 7 Les fondamentaux du langage Java

Les Utilisateurs dans SharePoint

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

StorageTek Tape Analytics

MEGA ITSM Accelerator. Guide de Démarrage

Cedric Dumoulin (C) The Java EE 7 Tutorial

CP Upgrade Guide HOPEX V1R1 FR. Révisé le : 25 octobre Créé le : 16 juillet Auteur : Jérôme Horber

et Groupe Eyrolles, 2006, ISBN :

S T L - C P S - L e s p l u g i n s E c l i p s e. - Une Introduction , Frédéric Peschanski

DirXML License Auditing Tool version Guide de l'utilisateur

TP 7, 8 & 9 : Installation et Gestion de GLPI et Télédéploiement SISR 1 HUBERT JULIEN LABBE RICHARD DAY MICKAEL DOGNY CHRISTOPHE

Nuxeo 5.4 : les nouveautés

France SMS+ MT Premium Description

Fiche technique: Archivage Symantec Enterprise Vault for Microsoft Exchange Stocker, gérer et rechercher les informations stratégiques de l'entreprise

progecad NLM Guide de l'utilisateur

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Le No.1 de l économie d énergie pour patinoires.

Once the installation is complete, you can delete the temporary Zip files..

8 Mars Guide du Wiki Confluence

Supervision et infrastructure - Accès aux systèmes Windows. Document FAQ. Page: 1 / 39 Dernière mise à jour: 18/03/15 15:45

Semarchy Convergence for Data Integration La Plate-Forme d Intégration pour le MDM Évolutionnaire

Optimisation du bureau Oracle Solaris pour un environnement multiutilisateur

Travaux pratiques avec RapidMiner

NAC 4.5 : Exemple de configuration d'import-export de stratégie

[Projet S9] Rédacteurs & Contributeurs Entité Rédacteurs Contributeurs Imededdine HOSNI Olivier MARTY. Validation du document Nom Date Visa

Kaspersky Security Center Web-Console

Acronymes et abréviations. Acronymes / Abbréviations. Signification

Application web de gestion de comptes en banques

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

IBM Software Demos Lotus Expeditor and Lotus Forms

MEGA Designer - Integration. Guide d utilisation

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Alfstore workflow framework Spécification technique

Manipulation 4 : Application de «Change».

SAP Lumira Version du document : Guide de l'utilisateur de SAP Lumira

Prise en main du BusinessObjects XI R2 Service Pack 2/ Productivity Pack

D E S C R I P T I O N D E S É L É M E N T S C L E F S D ' U I M A

Utilisation du module Scribe IMPORTATION DES COMPTES

Tutoriel d installation de Hibernate avec Eclipse

- TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers

Module d anonymisation

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat windowsx64.zip.

MEGA ITSM Accelerator. Guide de démarrage

Date de diffusion : Rédigé par : Version : Mars 2008 APEM 1.4. Sig-Artisanat : Guide de l'utilisateur 2 / 24

FOSS Enterprise Integration Plattaform

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

Joomla! Création et administration d'un site web - Version numérique

Transcription:

Configuration Interface for MEssage ROuting Conception détaillée Date : 10/04/07 Version : 0.2 Statut : initial Auteurs : BAGNARD Natacha FOROT Julien 1/19

Table des révisions Version Date Modifications 0.1 10/04/07 Création du document 0.2 09/07/07 Modifications suite au développement de l'application 2/19

Table des matières 1.Introduction...4 1.1.Objectifs du document....4 1.2.Portée du document......4 1.2.Documentation de référence......4 1.3.Glossaire......4 2.Framework GMF...5 2.1.Modèle des données, EMF......5 2.1.1.Définition du modèle de données...5 2.2.Présentation, GEF......6 2.2.1.Définition du modèle graphique...6 2.3.Mapping......7 2.3.1.Définition du mapping...7 2.3.2.Définition des contraintes...7 3.Description détaillée des modules...8 3.1.Modèle de données......8 3.2.Présentation....8 3.2.1.CimeroEditor.diagram...9 3.2.2.CimeroEditor.edit...10 3.3.Générateur de modèle......10 3.3.1.Description technique...10 3.3.2.Diagramme de classes...11 3.3.3.Algorithme de calcul...11 3.4.Validateur......11 3.4.1.Description technique...11 3.4.2.Algorithme de calcul...12 3.5.Générateur de package.....13 3.5.1.Description technique...13 3.5.2.Algorithme de calcul...13 3.6.Coordinateur......14 3.6.1.Description technique...14 3.6.2.Algorithme de calcul...14 3.7.Importateur......15 3.7.1.Description technique...15 3.7.2.Algorithme de calcul...15 3.8.ServiceMix......15 3.8.1.Description technique...15 3/19

1.Introduction 1.1.Objectifs du document Ce document présente la conception détaillée du projet CIMERO Version 2. Il suit la phase de conception globale et a pour but d exposer l'organisation du développement de CIMERO Version 2. 1.2.Portée du document Ce document servira de base au développement du produit à livrer. Ce document est destiné: au MOAd : Jérôme Camilleri à la consultante : Martine Tasset au jury du Master 2 Pro GI pour l'évaluation du stage à l'équipe projet : Natacha Bagnard et Julien Forot 1.2.Documentation de référence Ce document fait référence au Cahier des Charges du projet («CahierDesCharges.odt») et au dossier de conception globale («ConceptionGlobale.odt»). Il est rédigé en fonction des clauses qualités définies dans le PAQL («PlanAssuranceQualiteLogicielle.odt»). 1.3.Glossaire > voir section 1.3, Définition, Acronymes et Abréviations, du Cahier des Charges («CahierDesCharges.odt»). 4/19

2.Framework GMF Le modèle de données, représentation et mapping sont générés grâce à GMF. Cette section présente les modèles et le mapping utilisés pour générer le code 1. Celui ci sera ensuite présenté dans la section suivante. 2.1.Modèle des données, EMF Le modèle de données ci dessous correspond au contenu du fichier ecore_diagram. 2.1.1.Définition du modèle de données Illustration 1: modèle de données de l'éditeur 1 Voir section 3 GMF de ConceptionGlobale.odt pour plus de précisions 5/19

2.2.Présentation, GEF Les modèles graphiques ci dessous correspondent au contenu du fichier gmfgraph pour le graphe et dans gmftool pour les outils. 2.2.1.Définition du modèle graphique Diagramme Canvas Figure Gallery Polyline Connection Rectangle Node Connection Diagram Label Illustration 2: Modèle graphique Outils ToolRegistry Palette ToolGroup CreationTool Component Image CreationTool Link Image Illustration 3: Modèle des outils 6/19

2.3.Mapping Le mapping ci dessous est celui défini dans fichier gmfmap. Il associe les éléments du modèle aux éléments graphiques. Les contraintes sont également présentées. 2.3.1.Définition du mapping Graph Mapping Canvas ComponentModel Mapping CreationTool Component ComponentInstance Mapping Rectangle Connection Mapping Polyline Connection Illustration 4: Mapping entre la définition graphique et le modèle 2.3.2.Définition des contraintes Les restrictions liée à la conception des graphes de flux sont exprimées grâce à des contraintes OCL. Ces contraintes ne peuvent être violées lors de la manipulation des graphes. Si une contrainte est violée, l'utilisateur est prévenu par un message d'erreur et le diagramme revient dans l'état précédent la modification. Les contraintes sont de 2 types. Ce sont soient des «Link Constraint», soit des «Audit Rule». Une Link Constraint s'applique aux connections et une audit rule au model de données. 7/19

3.Description détaillée des modules 3.1.Modèle de données Description Le code correspondant à ce module est celui du plugin CimeroEditor généré par GMF. Ce plugin possède les fabriques des différents objets du modèle, il permet de d'instancier et de manipuler ces objets. Le diagramme de classe correspond au modèle de données EMF présenté dans la section précédente. Chaque classe possède une interface et une implémentation. Les factories permettent de créer et d'accéder aux objets du modèle. Modifications apportées l'application. Activator La classe CimeroEditorPlugin est la première classe appelée lors du démarrage de Elle permet d'initialiser la liste des ESB supportés, de créer le répertoire de configuration personnelle de l'application (.cimero2) si celui ci n'existe pas et d'y copier les fichiers XML représentant les modèles de composants et les différents icônes des composants ajoutés par l'utilisateur. Elle appelle ensuite le parser. Parser Les modèles des composants sont stockées sous forme de fichiers XML. Chaque fichier décrit un modèle qui doit être instancié en tant qu'objet de type ComponentModel. Lors du lancement de Cimero, le parser XML parse les fichiers contenant la «représentation XML» de chacun des composants. Il instancie le modèle du composant générique avec les données spécifiques au composant du fichier parsé : Ceci crée une «représentation Java» du composant. La classe Parser permet de réaliser cette opération de la manière suivante : Parcours du répertoire contenant les fichiers XML Vérification de la validité du fichier grâce à un XML Schéma 1 Création d'une instance de modèle de composant pour chaque fichier grâce à JDOM 3.2.Présentation Le framework GMF organise ce module en 2 plugins distincts : CimeroEditor.diagram et CimeroEditor.edit. 1 Voir annexes 8/19

3.2.1.CimeroEditor.diagram Description Ce plugin permet de gérer principalement la représentation graphique du diagramme : La représentation graphique des instances du modèle de données Les outils de la palette Il dispose également de listeners sur les éléments du diagramme permettant de faire remonter et de traiter les interactions de l'utilisateur avec le diagramme. Il est également en charge de l'initialisation des nouveaux projet : Création du fichier représentant le diagramme et de celui représentant le modèle. Ces 2 fichiers sont étroitement liés. Modifications apportées Palette La palette est créée dynamiquement en fonction des différents modèles de composants instanciés et de l'esb associé au diagramme. Pour chacun d'eux, un outil représenté par un icône spécifique est disponible dans la palette qui permet de créer des instances 1 de ce modèle dans le diagramme. Elements du diagramme Les instances des composants sont représentées par l'image associée au modèle de ce composant, présente dans la palette sous forme d'icône. Les connexions entre les composants ont un aspect différent en fonction de la valeur du MEP du composant source. La modification de cette valeur entraîne une mise à jour de l'aspect de la connexion. Une contrainte sur les connexions permet de limiter le nombre de connexions entrantes et sortantes en fonction du nombre de connexions autorisées pour chaque composant. Cette contrainte est écrite en OCL et le code correspondant est généré par GMF. Menu contextuel Les classes suivantes ont été crées afin de pouvoir faire appel aux classes de génération du plugin Générateur de package depuis le menu contextuel d'un graphe. CimeroEditorGenerateJBIPackageAction pour la génération d'un package JBI correspondant au graphe CimeroEditorGenerateAntTaskAction pour la génération de l'aborescence des répertoires et de la tâche Ant pour le graphe 1 Objet ComponentInstance du modèle de données 9/19

CimeroEditorAddNamespaceAction pour l'ajout d'un namespace au graphe. CimeroEditorValidateAction pour la validation du graphe. 3.2.2.CimeroEditor.edit Description Ce plugin est utilisé pour la génération des éléments de la properties view : les PropertyDescriptors. Modifications apportées Les propriétés d'un composants sont représentées sous la forme d'une classe dans le modèle de données. Elles ne sont donc pas accessibles directement depuis une instance d'un composant. La properties view générées ne permet pas d'afficher d'autres éléments que ceux directement liés à l'objet sélectionné. Une nouvelle properties view dédiée aux instances de composants est mise en place. Elle permet de présenter les attributs de l'instance du composant ainsi que de ceux de ses propriétés.les propriétés sont représentées comme des arbres avec sous chaque propriété complexe l'ensemble de ses fils. De plus, un icône présent devant le champ de saisie est utilisé pour apporté plus d'informations à l'utilisateur : il peut ainsi visualiser le type attendu, si la propriété est requise ou non et si la valeur de la propriété est fixée. Des listes permettant de proposer des choix restreint de valeurs pour certaines propriétés sont également mises en place. Chaque valeur entrée est soumise à une validation directe et n'est conservée que si la validation n'a pas soulevé d'erreurs. Cette validation est effectuée grâce aux Audit Rules présentées dans la partie Validateur 1. 3.3.Générateur de modèle 3.3.1.Description technique Le générateur de modèle contient 2 classes permettant de gérer les modèles des composants disponibles dans l'éditeur : un générateur de fichier pour écrire les fichier XML correspondant aux modèles des composants créer via l'interface graphique et un parser utilisé pour l'édition. 1 Voir section 3.4 10/19

3.3.2.Diagramme de classes Illustration 5: Diagramme de classe du générateur de modèle 3.3.3.Algorithme de calcul La génération de modèle est divisé en 2 parties : Le génération de fichiers XML pour la représentation de nouveaux composants grâce à JET 1. L'édition de fichiers XML représentant des composants de CIMERO. Génération Le générateur de fichier XML crée un fichier XML en fonction des données fournit par l'utilisateur. Ce fichier représente un composant, il doit être conforme au schéma XML des composants. Si les données fournies sont incomplètes ou de type incompatibles avec celui attendu, la génération est stoppée. Edition L'édition des fichiers XML représentant les composants permet de modifier les valeurs des attributs ou d'en ajouter de nouveau. Les étapes nécessaires à l'édition sont les suivantes : 1. Le fichier est d'abord parsé afin de récupérer une représentation Java du composant 2. Les modifications apportées par l'utilisateur sont reportées sur cette représentation 3. Le fichier XML correspondant au composant édité est regénéré. 3.4.Validateur 3.4.1.Description technique Le validateur est la classe nécessaire à la validation des graphes, afin de permettre le bon fonctionnement des packages générés sur l'esb. Les contraintes sont suffisantes pour s'assurer que les composants sont corrects mais il peut subsister des erreurs au niveau du graphe même si toutes les règles précisées par les contraintes OCL sont respectées. La validateur permet d'effectuer une dernière validation permettant de s'assurer que le graphe est correct. 1 Voir section 4.1 de ConceptionGlobale.odt 11/19

3.4.2.Algorithme de calcul La validation consiste à s'assurer que le flux créé est valide, c'est à dire qu'il n'y a pas d'incohérence comme un composant isolé qui ne peut pas communiquer avec les autres. Les règles suivantes doivent être respectées : Link Constraint Les contraintes permettant de contrôler la création de connections valides sont les suivantes : Un composant ne doit pas avoir plus de connections sortantes, ni entrantes que sa limite Un composant ne peut pas être lié à lui même Si le composant est un BC et qu'il possède déjà des connections entrantes, alors il ne peut pas posséder de connections sortantes et inversement Ces contraintes sont exprimées sous la forme de 2 contraintes OCL. Une contrainte pour la source des connections et une pour la cible. Source End Constraint (self.sourceconnections->size() < self.maxoutput) and (self <> oppositeend) and (self.type=componenttype::bc implies self.targetconnections->size()=0) Target End Constraint (self.targetconnections->size() < self.maxinput) and (self.type=componenttype::bc implies self.sourceconnections->size()=0) Audit Rules Les contraintes permettant de s'assurer que les éléments du modèle de données sont corrects sont les suivantes : Un composant doit avoir au minimum minoutput connections sortantes Constraint : self.sourceconnections->size() >= self.model.minoutput Domain Element Target : ComponentInstanceProperty Un composant doit avoir au minimum mininput connections entrantes Constraint : self.targetconnections->size() >= self.model.mininput Domain Element Target : ComponentInstanceProperty Un composant doit avoir au moins une connection entrante ou sortante Constraint : self.targetconnections->size() > 0 or self.sourceconnections->size() > 0 Domain Element Target : ComponentInstanceProperty 12/19

Toutes les propriétés «requises» doivent avoir une valeur associée Constraint : self.required implies self.isvalueset Domain Element Target : ComponentInstanceProperty Un diagramme doit posséder au moins un BC Constraint : self.components->select(c c.type = ComponentType::BC)->size()>=1 Domain Element Target : Graph La valeur d'une propriété de type URL doit comencer par «http://» Constraint : (self.isvalueset and self.model.type='url') implies (self.value.oclistypeof(string) and self.value.size()>7 and self.value.substring(1,7)='http://') Domain Element Target : ComponentInstanceProperty La valeur d'une propriété de type Booléen ne peut avoir que 'true' et 'false' comme valeur Constraint : (self.isvalueset and self.model.type='boolean') implies (self.value.oclistypeof(string) and (self.value='true' or self.value='false')) Domain Element Target : ComponentInstanceProperty 3.5.Générateur de package 3.5.1.Description technique Le générateur de package comprend l'ensemble des classes utilisées pour la génération et packages JBI, de tâches Ant ai,nsi que pour la migration des graphe de la version précédente vers la nouvelle version. 3.5.2.Algorithme de calcul La génération de package est divisée en 3 parties : La génération d'une tâche Ant La génération d'un package JBI L'importation d'un package JBI Génération d'une tâche Ant La génération d'une tâche Ant consiste à créer l'arborescence des répertoires correspondants aux SUs et aux SAs et un fichier XML permettant de construire ces différents SUs et ou les SAs, ainsi que de déployer le ou les SAs générés. Les arborescences des différents SU sont générés. 1. L'arborescence des SUs est générée 13/19

2. Les descripteurs des SUs sont générés 3. Si d'autres fichiers que le descripteur sont associés au SU, ceux ci sont ajoutés 4. Chaque SU est compressé dans une archive Zip 5. L'arborescence du SA unique et des SAs disctinct est généré 6. Les descripteurs des SA sont générés 7. Le fichier XML correspondant à la tâche Ant est généré Si une erreur est détectée dans une des étapes, le processus de génération de la tâche Ant est stoppée, les arborescences qui auront déjà été générées sont supprimées pour conserver un environnement propre. Génération d'un package JBI La génération d'un package JBI consiste à générer tout les fichiers nécessaires et à les compresser dans une archive Zip. Les étapes sont les suivantes : 1. Le graphe est soumis au validateur. La validation doit être positive 2. L'arborescence est générées ainsi que la tâche Ant 1 3. La génération du package JBI est lancée via la cible Ant correspondant à la génération d'un SA unique A chaque étapes, si une erreur survient le processus de génération est stoppé, tout ce qui aura déjà été généré est supprimé. Les arborescences sont conservées si il n'y a pas eu d'erreur lors de la procédure de génération. 3.6.Coordinateur 3.6.1.Description technique Le contrôleur est la classe utilisée pour ordonnancer les communications entre les modules. 3.6.2.Algorithme de calcul Les algorithmes de calcul sont basés sur les diagrammes de séquence 2. Le contrôleur met en place la suite des appels au différents composants des modules pour réaliser chacune des tâches utilisateur. 1 Voir paragraphe précédent : Génération d'une tâche Ant 2 Voir section 4 de ConceptionGlobale.odt 14/19

3.7.Importateur 3.7.1.Description technique L'importateur est une classe utilisée pour la migration des projets fait grâce à Cimero vers Cimero 2. 3.7.2.Algorithme de calcul La migration consiste à générer le modèle de données correspondant au graphe de la version précédente puis à l'afficher. Les étapes suivies sont les suivantes : 1. Création d'un fichier xml représentant le graphe de la version précédente car les fichiers.cimero de la version précédente stocke le graphe sous d'objet Java sérialisés 2. Récupération des informations concernant les composants formant le graphe. Instanciation des différents composants du flux. Les composants qui ne sont pas parmi ceux disponibles dans la nouvelle version de CIMERO sont remplacés par l'instanciation d'un composant «default» sans propriétés. 3. Génération des fichiers.cimero2_diagram et.cimero2 correspondant 4. Affichage du graphe 3.8.ServiceMix 3.8.1.Description technique ServiceMix est représenté par le plugin CIMERO ServiceMix et il est séparé du plugin CIMERO Editor. En effet, ces deux plugins doivent pouvoir être utilisés séparément. Ce plugin fournit à l'utilisateur la possibilité d'ajouter un serveur ServiceMix sous Eclipse, de le démarrer ou de l'arrêter et de fournir des méthodes permettant de déployer (et de retirer) facilement des packages JBI. Cette partie du plugin est déjà implémentée et ne devrait pas être modifiée. Nous ne détaillerons pas son fonctionnement, pour plus d'informations, se référer aux documents produits lors du développement de CIMERO Version 1. 15/19

Annexes A)Schéma XML <?xml version="1.0" encoding="iso-8859-1"?> <!-- Schema de definition d'un composant --> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified" targetnamespace="http://java.sun.com/xml/ns/component" xmlns:this="http://java.sun.com/xml/ns/component"> <xs:annotation> <xs:documentation> Definition schema for a generic component </xs:documentation> </xs:annotation> <!-- Component --> <xs:element name="component"> <xs:complextype> <xs:sequence> <!-- Component name of the component which has to be installed to allow deployement --> <xs:element ref="this:install-component-name" /> <!-- Component name in the editor --> <xs:element ref="this:component-name" /> <!-- Component picture --> <xs:element ref="this:picture" /> <!-- Targeted ESB --> <xs:element ref="this:esb" /> <!-- Component Namespace --> <xs:element ref="this:component-namespace" /> <!-- BC/SE --> <xs:element ref="this:component-type" /> <!-- The component model archive name --> <!-- For example : --> <!-- petals-engine-clock-1.1-m2.zip --> <!-- servicemix-quartz-3.1-incubating-installer.zip --> <xs:element ref="this:install-component-directory" /> <!-- Maximum input connections --> <xs:element ref="this:max-input" /> <!-- Maximum OutPut connections --> <xs:element ref="this:max-output" /> <!-- Maximum input connections --> <xs:element ref="this:min-input" /> <!-- Maximum OutPut connections --> <xs:element ref="this:min-output" /> <!-- MEP for the component, if there is a fixed one --> <xs:element minoccurs="0" maxoccurs="1" ref="this:mep" /> 16/19

<!-- Input set of MEPs authorized for the component, if there is no fixed MEP and the user can choose the MEP value --> <xs:element minoccurs="0" maxoccurs="1" ref="this:restrictedinputmepset" /> <!-- Properties (between 0 and infinity) of the component --> <xs:element minoccurs="0" maxoccurs="unbounded" ref="this:property" /> </xs:sequence> </xs:complextype> </xs:element> <!-- Type definition --> <!-- Specific use : Provider, Consumer, or both --> <xs:simpletype name="usability"> <xs:restriction base="xs:string"> <xs:enumeration value="both" /> <xs:enumeration value="provider" /> <xs:enumeration value="consumer" /> </xs:restriction> </xs:simpletype> <!-- MEP : InOnly, InOut, RobustInOut, InOptionalOut --> <xs:simpletype name="meptype"> <xs:restriction base="xs:string"> <xs:enumeration value="inonly" /> <xs:enumeration value="inout" /> <xs:enumeration value="robustinonly" /> <xs:enumeration value="inoptionalout" /> </xs:restriction> </xs:simpletype> <!-- Basics types --> <xs:simpletype name="types"> <xs:restriction base="xs:token"> <!-- The types of the properties --> <xs:enumeration value="string" /> <xs:enumeration value="boolean" /> <xs:enumeration value="int" /> <xs:enumeration value="qname" /> <xs:enumeration value="uri" /> <xs:enumeration value="url" /> <xs:enumeration value="xor" /> <xs:enumeration value="unknown" /> <xs:enumeration value="unsettable" /> <xs:enumeration value="class" /> <xs:enumeration value="mep" /> <xs:enumeration value="role" /> <xs:enumeration value="file" /> <xs:enumeration value="service" /> <xs:enumeration value="endpoint" /> <xs:enumeration value="interface" /> </xs:restriction> </xs:simpletype> <!-- Component "type" : BC or SE --> 17/19

<xs:simpletype name="component-type-choice"> <xs:restriction base="xs:string"> <xs:enumeration value="bc" /> <xs:enumeration value="se" /> </xs:restriction> </xs:simpletype> <!-- Definition of elements types for the component --> <xs:element name="esb" type="xs:string" /> <xs:element name="component-type" type="this:component-type-choice" /> <xs:element name="install-component-directory" type="xs:anyuri" /> <xs:element name="install-component-name" type="xs:string" /> <xs:element name="component-name" type="xs:string" /> <xs:element name="component-namespace" type="xs:string" /> <xs:element name="picture" type="xs:string" /> <xs:element name="max-input" type="xs:int" /> <xs:element name="max-output" type="xs:int" /> <xs:element name="min-input" type="xs:int" /> <xs:element name="min-output" type="xs:int" /> <xs:element name="mep" type="this:meptype" /> <!-- Definition of elements types for the property --> <xs:element name="attribute-name" type="xs:string" /> <xs:element name="attribute-description" type="xs:string" /> <xs:element name="default-value" type="xs:string" /> <xs:element name="role" type="this:usability" default="both" /> <xs:element name="required-attribute" type="xs:boolean" /> <!-- Warning, a repeatable property should not have brothers on the model --> <xs:element name="repeatable-attribute" type="xs:boolean" /> <xs:element name="referencetoexternalcomponent" type="xs:boolean" /> <xs:element name="attribute-type" type="this:types" /> <!-- Definition of elements types for the values --> <xs:element name="value" type="xs:string" /> <xs:element name="value-pattern" type="xs:string" /> <!-- MEPSet allowed for input --> <xs:element name="restrictedinputmepset"> <xs:complextype> <xs:sequence> <!-- MEP set for the component --> <xs:element minoccurs="0" maxoccurs="4" ref="this:mep" /> </xs:sequence> </xs:complextype> </xs:element> <!-- Definition of a property --> <xs:element name="property"> <xs:complextype> <xs:sequence> <!-- Property name --> <xs:element ref="this:attribute-name" /> <!-- Property description --> <xs:element ref="this:attribute-description" /> 18/19

<!-- Use case of the property : provider or consumer or Both --> <xs:element ref="this:role" /> <!-- If the property is required --> <xs:element ref="this:required-attribute" /> <!-- If the property is repeatable --> <xs:element minoccurs="0" maxoccurs="1" ref="this:repeatable-attribute" /> <!-- Value description of the property : Values set --> <xs:element minoccurs="0" maxoccurs="1" ref="this:value-description" /> <!-- Default value of the property --> <xs:element minoccurs="0" maxoccurs="1" ref="this:default-value" /> <!-- Property type --> <xs:element ref="this:attribute-type" /> <!-- MEP type if the property needs one --> <xs:element minoccurs="0" maxoccurs="1" ref="this:mep"/> <!-- if the property is a reference to an external service --> <xs:element minoccurs="0" maxoccurs="1" ref="this:referencetoexternalcomponent"/> <!-- SubProperties --> <xs:element minoccurs="0" maxoccurs="unbounded" ref="this:property" /> </xs:sequence> </xs:complextype> </xs:element> <!-- valuedescription : Precise la forme des valeurs possible d'une propriete --> <xs:element name="value-description"> <xs:complextype> <xs:choice> <!-- Liste de valeurs --> <xs:element ref="this:values-list" /> <!-- Pattern --> <xs:element ref="this:value-pattern" /> </xs:choice> </xs:complextype> </xs:element> <!-- values-list --> <xs:element name="values-list"> <xs:complextype> <xs:sequence> <!-- Values --> <xs:element minoccurs="1" maxoccurs="unbounded" ref="this:value" /> </xs:sequence> </xs:complextype> </xs:element> </xs:schema> 19/19