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

Like this? Share it with your network

Share

MAD Model Aggregator eDitor (EMF)

on

  • 188 views

MAD: an Eclipse plugin for EMF model edition. MAD is a tool that was created to replace the standard properties view in order to make model editing easier. It allows using a configuration to provide ...

MAD: an Eclipse plugin for EMF model edition. MAD is a tool that was created to replace the standard properties view in order to make model editing easier. It allows using a configuration to provide custom edition form for each type of item to edit. MAD doesn't require code generation and any configuration change is applied immediately.

Statistics

Views

Total Views
188
Views on SlideShare
188
Embed Views
0

Actions

Likes
0
Downloads
0
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) Presentation Transcript

  • 1. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 1 MAD Model Aggregator eDitor Fabien Vignal – Philippe Palau Http://www.sysord.com
  • 2. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 2 Who Are We ? Software Engineer SYSORD - Small company (3 person-strong) located in Roquefort (FR12) - Eclipse, RCP, Java, J2EE - Software development for the food industry Interested in MDA and development automation Empirical approach before using EMF
  • 3. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 3 Motivation Daily use of EMF / UML modelers Properties view : - Not very user friendly - Not always adapted to user needs
  • 4. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 4 What Would Be Nice ... An input form with adapted widgets Properties adapted to user needs Revised form design Simple navigation between elements
  • 5. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 5 MAD :Model Aggregator eDitor Video MAD for UML Model (http://youtu.be/ACFS6ajAsV8)
  • 6. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 6 MAD Concepts (Configuration) Use of metamodels Description of views - Template by EClassifier - Includes configurable widgets - Values obtained using queries Reuse of templates : - Inheritance (implicit / explicit) - Composition Configuration changes immediately applied : - No code - No generation
  • 7. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 7 MAD Concepts (Edit / Save) Editing of the selected element Property modification using widgets Value validation before update Two types of model - Main model - Foreign model MAD only saves foreign models
  • 8. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 8 Architecture Service-oriented architecture Three main plugins - API : interfaces (services / objects) - Core : implementations - UI : Eclipse view implementation
  • 9. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 9 Core Main Services : - View Builder - Configuration Manager - Model Access Object - Query Evaluation Service Core provides default service implementations Any service can be replaced or customised
  • 10. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 10 User Interface (UI) Uses Core to get the model for the view Eclipse view (SWT) Customisation : - ViewBuilder et WidgetBuilder extensions - New custom widgets - New UI library target : (JavaFX / HTML)
  • 11. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 11 Technology Used Eclipse Xtext (configuration editor + DSL) SWT + FormToolKit / Eclipse view Query evaluators : - OCL - Acceleo EMF Adapters (Model synchronization) Dependency injection with Guice
  • 12. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 12 Queries (I) Queries "authors" no language defined, OCL by default language:ACCELEO call authorsOfSeveralBooks() Acceleo Query call language:MAD "CREATE('books')" MAD function to create a new book Query chains Query Chain { "books->last()", language: ACCELEO call authorMultiBook(), "first()" }
  • 13. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 13 Queries (II) Subqueries eContainer().oclAsType(Library).books->select(pages > [pages])->isEmpty() The first 'pages' refers to the books in the iteration. '[pages]' is evaluated before the iteration and corresponds to the number of pages of the book. Contextual Variables $CONTEXT, $VALUE, $UIVALUE, $MODEL … usable variables for queries. $UIVALUE > 10 and $UIVALUE < 10000 Validation rule of a numerical widget's value Need for evaluator monitoring
  • 14. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 14 MAD in Action The Tinylibrary model
  • 15. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 15 tinylibrary.mad Configuration MAD base configuration import Tinylibrary metamodel import
  • 16. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 16 Widgets Set of configurable widgets  InputWidgets : - Text, Numeric, Date, Boolean - ComboBox, List, PickList (popup or embedded) - Embedded Xtext editor  OutputWidget NavigationWidget FlexibleWidget Command Extendable by customised implementation
  • 17. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 17 First 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. }
  • 18. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 18 First Configuration (II)
  • 19. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 19 Simple Widgets 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" }
  • 20. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 20 List Widgets List content (candidates) provided by queries //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]" }
  • 21. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 21 Navigation Widget List of links to detail view of a selected element Double-click to access detail element Click on the left arrow to return //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" }
  • 22. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 22 Output Widget Display read-only values Elementary properties or computed values 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 }
  • 23. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 23 Flexible Widget (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" }
  • 24. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 24 Flexible Widget (II) Selection of the template to use for the flexible elements //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" }
  • 25. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 25 Command //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.") }
  • 26. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 26 Other Widgets - Xtext embedded editor - Custom Widgets - HTML Link - Google Map widget Demonstration video for the first version of MAD: MAD and Xtext (http://youtu.be/ShoLi5XoQOw) MAD is customizable (http://youtu.be/2NTAP--Hi1I)
  • 27. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 27 « Layout » Widgets distribution by tab Display order selection //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 }
  • 28. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 28 Validators Validation based on rules 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]" … }
  • 29. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 29 Layers Filter and aggregate information by domain « Layers » are hierarchical and stackable //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" ... }
  • 30. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 30 Other Functionalities I18N : for all labels and messages Referentials : Queries, Commands, Constants Multimodel edition (decoration and extension) - Extension manager - Model Synchronisation
  • 31. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 31 Use Cases MDE/MDA approach with Eclipse RAD approach : editor creation with a user Identical edition whatever the modeler used Domain specific commands
  • 32. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 32 Conclusion MAD is functional Used by Sysord for all modelling works (UML, etc …) Ongoing evolutions : queries compilator (performance optimisation)
  • 33. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 33 Perspectives Queries creation wizards CDO for multi-user mode MAD configuration generator MAD plugins generator Multimedia element edition sound, images, videos, Charts and Graph Eclipse4, JavaFX
  • 34. SYSORD - Model Aggregator eDitor – Fabien Vignal – Philippe Palau – Stephan Montagnes 34 Merci