MAD Model Aggregator eDitor (EMF)
Upcoming SlideShare
Loading in...5
×
 

MAD Model Aggregator eDitor (EMF)

on

  • 287 views

Slide présentation de MAD. Un plugin Eclipse pour l'édition des propriétés des modèles EMF. MAD est un outil réalisé pour se substituer à la vue standard des propriétés. il permet à partir ...

Slide présentation de MAD. Un plugin Eclipse pour l'édition des propriétés des modèles EMF. MAD est un outil réalisé pour se substituer à la vue standard des propriétés. il permet à partir d'une configuration de présenter une interface de saisie personalisée de type formulaire pour chaque type d'élément édité. Il ne nécessite aucune génération de code et toute modification de la configuration est prise en compte immédiatement.

Statistics

Views

Total Views
287
Views on SlideShare
287
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

MAD Model Aggregator eDitor (EMF) MAD Model Aggregator eDitor (EMF) Presentation Transcript

  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 1 MAD Model Aggregator eDitor Fabien Vignal – Philippe Palau Http://www.sysord.com
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 2 Qui sommes nous ? Ingénieurs en développement SYSORD - Petite société (3 personnes) basée à Roquefort (12) - Eclipse, RCP, Java, J2EE - Création de progiciels pour l'Industrie agroalimentaire Intérêt pour la MDA et l'automatisation Approche empirique avant EMF
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 3 Motivations Utilisation quotidienne de modeleurs EMF / UML Vue des propriétés - Pas très ergonomique - Pas toujours adaptée au besoin
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 4 Ce qui serait Bien ... Formulaire de saisie avec widgets adaptés Choisir les propriétés en fonction de ses besoins Organisation du formulaire adaptée Navigation entre éléments
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 5 MAD :Model Aggregator eDitor Vidéo MAD avec UML (http://youtu.be/ACFS6ajAsV8)
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 6 Concepts de MAD (Configuration) Utilisation des métamodèles Description des vues - Template par EClassifier - Composées de widgets configurables - Valeurs obtenues par des requêtes Réutilisation des templates - Héritage (implicite / explicite) - Composition Configuration appliquée immédiatement - Pas de code - Pas de génération
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 7 Concepts de MAD (Edition / Sauvegarde) Edition de l'élément sélectionné Modification des propriétés par des widgets Validation des valeurs avant application Deux catégories de modèles - Modèle principal - Modèle étranger MAD n'enregistre que les modèles étrangers
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 8 Architecture Architecture orientée service Trois plugins principaux - API : interfaces (services / objets) - Core : implémentations - UI : implémentation vue Eclipse
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 9 Core Services principaux - View Builder - Configuration Manager - Model Access Object - Query Evaluation Service Core fournit des Implémentations par défaut Tout service peut être remplacé ou personnalisé
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 10 UI Utilise le Core pour obtenir le modèle de la vue Vue Eclipse (SWT) Personnalisation - Extension des services ViewBuilder et WidgetBuilder - Nouveaux Widgets personnalisés - Nouveau type de rendu : (JavaFx / HTML)
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 11 Technologies Utilisées Eclipse Xtext (éditeur de configuration + DSL) SWT + FormToolKit / Vue Eclipse Evaluateurs de requêtes - OCL - Acceleo EMF Adapters (synchronisation des modèles) Injection de dépendances avec Guice
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 12 Requêtes (I) Requêtes "authors" aucun langage n'est défini, OCL est utilisé par défaut. language:ACCELEO call authorsOfSeveralBooks() appel d'un Query Acceleo language:MAD "CREATE('books')" fonction MAD pour un créer un nouveau livre. Chaînes de requêtes Query Chain { "books->last()", language: ACCELEO call authorMultiBook(), "first()" }
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 13 Requêtes (II) Sous requêtes eContainer().oclAsType(Library).books->select(pages > [pages])->isEmpty() Le premier 'pages' s'applique aux livres de l'itération, '[pages]' évalué avant l'itération correspond au nombre de pages du livre du contexte. Variables contextuelles $CONTEXT, $VALUE, $UIVALUE, $MODEL … variables utilisables dans les requêtes. $UIVALUE > 10 and $UIVALUE < 10000 Règle de validation utilisant la valeur saisie dans le widget. Besoin d'espionner les évaluateurs
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 14 MAD en Action Le modèle Tinylibrary
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 15 Configuration tinylibrary.mad Import base de configuration MAD Import métamodèle de Tinylibrary
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 16 Widgets Palette de widgets configurables  InputWidgets - Texte, Nombre, Date, Booléen - ComboBox, Liste, PickList (popup ou embarqué) - Editeur Xtext embarqué  OutputWidget NavigationWidget FlexibleWidget Command Extension possible par implémentation personnalisée
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 17 Une Première Configuration (I) //------------------------------------------ // MAD configuration for Tiny library model //------------------------------------------ //MAD base configuration import import "platform:/resource/mad.configuration/config.mad" //Tiny library Ecore metamodel import import "platform:/plugin/com.sysord.mad.demo.tinylibrary/model/tinylibrary.ecore" //Configuration for a Book element Configuration BOOK for tinylibrary.Book { template: //Textbox widget for editing title property widget:Title //the widget id label:"Title" //widget label type:TEXT_WIDGET //display a text widget value:"title" //Ocl query for getting the 'title' property from the book. }
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 18 Une Première Configuration (II)
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 19 Widgets Simples Configuration BOOK for tinylibrary.Book { //Format expression for all Book elements Label computing //queries between [] are evaluated parts. label provider:"Book: [title]" template: ... //Number input widget widget:Pages label:"Pages" type:NUMBER_WIDGET value:"pages" //Date input widget widget:PublicationDate label:"Publication date" type:DATE_WIDGET value:"published" //Checkbox widget widget:Damaged label:"Is damaged" type:BOOL_WIDGET value:"damaged" }
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 20 Widgets Listes Le contenu des listes (les candidats) est fourni par des requêtes //Configuration for a Book element Configuration BOOK for tinylibrary.Book { ... //Combo widget widget:Category label:"Category" type:SINGLE_SELECT_WIDGET value:"category":tinylibrary.BookCategory //OCL query for filling combo candidates:"BookCategory.allInstances()" //Popup PickList widget widget:Authors //Dynamic label value label:"[authors->size()] authors" type:MULTI_SELECT_WIDGET:POPUP_PICKLIST value:"authors" //Populate the list with candidates query results candidates:"eContainer().oclAsType(Library).writers" item label:"[name]" }
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 21 Widget de Navigation Liste de liens vers la vue détaillée d'un élément Accès au détail d'un élément par double-clic Retour par utilisation de la flèche vers la gauche //Configuration for the Library element Configuration LIBRARY for tinylibrary.Library { template: //Navigation for accessing Book detail widget:BooksNavigation label:"Books" type:NAVIGATION_WIDGET candidates:"books" }
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 22 Widget Pour l'Affichage Affichage de valeurs en lecture seule Propriétés élémentaires ou valeurs calculées Configuration BOOK for tinylibrary.Book { ... //Output text widget:avgPage label:"Pages by author" type:OUTPUTTEXT_WIDGET //conditional visibility visible when:"not authors->isEmpty()" //Compute pages average by authors. value:"(pages / authors->size())" //value converter from double to string. valueConverter:DOUBLE }
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 23 Le Widget Flexible (I) //Configuration for a person element (abstract) Configuration Abstract_PERSON for tinylibrary.Person { label provider:"[name]" template: widget:Name ... widget:FirstName ... widget:LastName ... } //Configuration for a Writer element. //(extends implicitly Person configuration) Configuration WRITER for tinylibrary.Writer { template: widget:Books label:"Books" type:FLEXIBLE_WIDGET //include Book template for each writen book value:"books" }
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 24 Le Widget Flexible (II) Sélection du template à utiliser pour les éléments du flexible //Alternative configuration for a Book element Configuration BOOK_SHORT for tinylibrary.Book { //Explicit extension extends: BOOK //Reuse the BOOK template template: //Display only those widgets layout: Isbn Title } Configuration WRITER for tinylibrary.Writer { template: widget:Books label:"Books" type:FLEXIBLE_WIDGET //Use the BOOK_SHORT template //for book detail. flexible template: BOOK_SHORT value:"books" }
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 25 Commande //Icon declaration Use icon DELETE_ICON URI:"platform:/resource/mad.configuration/icons/delete-icon_16.png" //Shared command declaration Common Command DELETE_ELEMENT_COMMAND { ITEM_COMMAND "Delete item" //Command label icon:DELETE_ICON //Image for the command button //launch the DELETE MAD Macro for deleting selected item action: language:MAD "DELETE()" on success: Reload view } Configuration LIBRARY for tinylibrary.Library { template: widget:BooksNavigation label:"Books" type:NAVIGATION_WIDGET candidates:"books" commands: //Inner command for creating a new book GLOBAL_COMMAND "New Book" action: language:MAD "CREATE([OCL:'books'])" //after creation displays view //for the created item: the command RESULT. on success: Display view for "$RESULT", //Use shared command with label override DELETE_ELEMENT_COMMAND("Delete the selected book.") }
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 26 Autres Widgets - Xtext embedded editor - Widgets personnalisés : - HTML Link - Google Map widget Vidéos de démonstration de la première version de MAD: MAD and Xtext (http://youtu.be/ShoLi5XoQOw) MAD is customizable (http://youtu.be/2NTAP--Hi1I)
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 27 « Layout » Répartition des widgets par onglet Sélection de l'ordre d'affichage //tab declaration UI Tab { id:WRITEN_BOOKS label:"Writen books" } Configuration WRITER for tinylibrary.Writer { template: widget:Books //the widget will be diplayed //on the WRITEN_BOOKS tab tab:WRITEN_BOOKS label:"Books" type:FLEXIBLE_WIDGET flexible template: BOOK_SHORT value:"books" //widgets display order definition layout: LastName FirstName Name Books }
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 28 Validateurs Validation à base de règles Configuration BOOK for tinylibrary.Book { … //Number input widget widget:Pages label:"Pages" type:NUMBER_WIDGET value:"pages" validators: //Validation: pages widget must be filled //and its value between 10 and 10000 validation rule: "not $UIVALUE.oclIsUndefined()" I18N Error message:"REQUIRED_VALUE" validation rule: "$UIVALUE > 10 and $UIVALUE < 10000" I18N Error message:"VALUE_OUT_OF_RANGE[10][10000]" … }
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 29 Layers Filtrer et rassembler les informations par domaine Les « Layers » sont hiérarchiques et superposables //Layers configuration Layer INFO_LAYER { label:"All Information" Sub layers { Layer BASIC {label:"Basic information"} Layer DETAILED{label:"Additional information"} } } Layer STATISTICS_LAYER { label:"Statistics" Sub layers { Layer AUTHOR{label:"Authors statistics"} Layer BOOKS{label:"Books statistics"} } } Configuration BOOK_SHORT for tinylibrary.Book { ... widget:Pages //available only in books statistics layer layers: STATISTICS_LAYER.BOOKS ... //Output text widget:avgPage //available in the two layers layers:STATISTICS_LAYER.BOOKS, STATISTICS_LAYER.AUTHOR label:"Pages by author" ... }
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 30 Autres Fonctionnalités I18N : pour tous les labels et messages Référentiels : Requêtes, Commandes, Constantes Edition multimodèles (décoration et extension) - Extension manager - Synchronisation entre modèles.
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 31 Cas d'Utilisation Utilisation dans les approches MDE/MDA sous Eclipse Approche RAD : création d'un éditeur avec l'utilisateur Edition identique quel que soit le modeleur Mise à disposition de commandes spécifiques au domaine.
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 32 Conclusion MAD est fonctionnel Utilisé par Sysord pour toutes modélisations (UML, autres …) Evolutions en cours : compilateur de requêtes (optimisation des performances)
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 33 Perspectives d'Evolution Assistants pour la création de requêtes CDO : support du mode multi-utilisateurs Générateur de configuration Générateur de plugin MAD Edition d'éléments multimédia son, images, vidéos, Charts et Graphs. Eclipse4, JavaFX
  • SYSORD - Model Agregator eDitor – Fabien Vignal – Stephan Montagnes – Philippe Palau 34 Merci