KEMBAR78
Modeling With Eclipse @SoftShake 2011 | ODP
presents SOA made Open
Modeling with Eclipse Mickael Istria @  {{   soft shake  }} 2011 - CC BY 2.0
Some theory
What is a model ? A  model  is a description of  any thing  ( entities, issues, domains...)
You  describe and manipulate  your model with a  meta model or a metalanguage.
What does a metalanguage look like ? Here are some representation of the JBI « Component » class. If we have the model of a Component : A « Component » class is its metamodel
These representation are its meta-meta-model UML Java Ecore XSD
What can you do with your models ? ...To be continued... CRUD ! Store ! Version ! Transform/Convert ! Visualize. Use them to generate stuff.
M odel- D riven... A rchitecture E ngineering D evelopment S oftware  D evelopm t
« As a software developer/architect, I understand the issues. But what about concrete solutions ? Methodologies ? Technologies ? »
72  projects at Eclipse.org « The Eclipse Modeling Project focuses on the evolution and promotion of model-based development technologies within the Eclipse community by providing a unified set of modeling frameworks, tooling, and standards implementations. »
Can generate Java API  for models.
Provides powerful  introspection and code genericity  thanks to its meta-comprehension and its « EObject ».
Provides (de)serialization of your models to files, transactional edition, notification support...
At runtime, your EMF models  do not require Eclipse .
Generates and provides Eclipse-based editors for your models.
Generates and provides GWT-based editors for your models.
EMF Facts EMF can run on : EMF is lightweight EObjectImpl is just  12 bytes bigger than java.lang.Object
Demo 1 : EMF Ecore
Demo 1 : EMF Generated Java API +   EObject  API
EMF can be a piece of solution for various use-cases
Editors EMF provides extensions to create efficiently Eclipse editors for your models with (among others) : Validation
Transactions/Commands
Databinding myObject.eGet(field) / myObject.eSet(field, value) ;
Demo 2 : Editors Generated by EMF Available for
Demo 2 : Editors Home-made  editor
Graphical Editing – Runtime APIs « Classical » MVC « Runtime » MyDomainObject (extends EObject) Draw2d Figure GMF IGraphicalEditPart
Demo 3 : GMF Editor
Graphical Editing - Generators « Tooling » Semantic Model (ecore) GMF Diagram Model GMF codegen Diagram code Mapping
Demo 4 : GMF Tooling
Textual editing - DSL Semantic Model (ecore) Xtext grammar Xtext codegen (MWE) DSL parser DSL text editor (Implicit) Mapping
Demo 5 : XText
All this uses EMF ! Whatever representation you use, you are still using EMF to manipulate your models... Then...
Screencast : synchro GMF-Xtext http://koehnlein.blogspot.com/2009/06/synchronized-editors-with-tmfxtext-and.html

Modeling With Eclipse @SoftShake 2011

  • 1.
  • 2.
    Modeling with EclipseMickael Istria @ {{ soft shake }} 2011 - CC BY 2.0
  • 3.
  • 4.
    What is amodel ? A model is a description of any thing ( entities, issues, domains...)
  • 5.
    You describeand manipulate your model with a meta model or a metalanguage.
  • 6.
    What does ametalanguage look like ? Here are some representation of the JBI « Component » class. If we have the model of a Component : A « Component » class is its metamodel
  • 7.
    These representation areits meta-meta-model UML Java Ecore XSD
  • 8.
    What can youdo with your models ? ...To be continued... CRUD ! Store ! Version ! Transform/Convert ! Visualize. Use them to generate stuff.
  • 9.
    M odel- Driven... A rchitecture E ngineering D evelopment S oftware D evelopm t
  • 10.
    « As a softwaredeveloper/architect, I understand the issues. But what about concrete solutions ? Methodologies ? Technologies ? »
  • 11.
    72 projectsat Eclipse.org « The Eclipse Modeling Project focuses on the evolution and promotion of model-based development technologies within the Eclipse community by providing a unified set of modeling frameworks, tooling, and standards implementations. »
  • 12.
    Can generate JavaAPI for models.
  • 13.
    Provides powerful introspection and code genericity thanks to its meta-comprehension and its « EObject ».
  • 14.
    Provides (de)serialization ofyour models to files, transactional edition, notification support...
  • 15.
    At runtime, yourEMF models do not require Eclipse .
  • 16.
    Generates and providesEclipse-based editors for your models.
  • 17.
    Generates and providesGWT-based editors for your models.
  • 18.
    EMF Facts EMFcan run on : EMF is lightweight EObjectImpl is just 12 bytes bigger than java.lang.Object
  • 19.
  • 20.
    Demo 1 : EMFGenerated Java API +  EObject API
  • 21.
    EMF can bea piece of solution for various use-cases
  • 22.
    Editors EMF providesextensions to create efficiently Eclipse editors for your models with (among others) : Validation
  • 23.
  • 24.
    Databinding myObject.eGet(field) /myObject.eSet(field, value) ;
  • 25.
    Demo 2 : EditorsGenerated by EMF Available for
  • 26.
    Demo 2 : EditorsHome-made editor
  • 27.
    Graphical Editing –Runtime APIs « Classical » MVC « Runtime » MyDomainObject (extends EObject) Draw2d Figure GMF IGraphicalEditPart
  • 28.
  • 29.
    Graphical Editing -Generators « Tooling » Semantic Model (ecore) GMF Diagram Model GMF codegen Diagram code Mapping
  • 30.
  • 31.
    Textual editing -DSL Semantic Model (ecore) Xtext grammar Xtext codegen (MWE) DSL parser DSL text editor (Implicit) Mapping
  • 32.
  • 33.
    All this usesEMF ! Whatever representation you use, you are still using EMF to manipulate your models... Then...
  • 34.
    Screencast : synchro GMF-Xtexthttp://koehnlein.blogspot.com/2009/06/synchronized-editors-with-tmfxtext-and.html
  • 35.
    M2T : Model ToText Genereate Doc Generate Code
  • 36.
    Generate any kindof text Xpand JET A2 A1 Meta A M2T Just apply Blah-blah <%model.name%> Blah-blah A1 Blah-blah A2
  • 37.
  • 38.
    M2M : Model toModel A2 B2 A1 B1 Meta A Meta B Tools to convert and transform models between different metamodels. QVT, M2M Just apply
  • 39.
  • 40.
  • 41.
    Teneo EMF SearchEMF Compare XSD ...
  • 42.
    What to remember ?You already use Model-Driven approaches
  • 43.
    EMF is avery powerful library to create your (meta)models
  • 44.
    For all Modelingissues, « There is an Eclipse project for that ».
  • 45.
  • 46.
    Credits Produced by :Directed by : Mickael Istria Presented by : Mickael Istria Reviewed and improved by : Ed Merks (content), Mathieu Lebreton (design) Licensed under : CC BY 2.0 Inspired from a presentation of Aurelien Pupier & Mickael Istria @Eclipse DemoCamp Grenoble 2011 (CC BY 2.0) - http://www.slideshare.net/BonitaSoft/modeling-with-eclipse Pics : Student Answering Question (Bernie Noble) See also Twitter : http://twitter.com/mickaelistria Blog : http://mickaelistria.wordpress.com Linkedin : http://fr.linkedin.com/in/mickaelistria

Editor's Notes

  • #2 Hello, Thank you Mickael Istria, Eclipse RCP/Plugin Developer at PetalsLink. 3 years commitment on Eclipse committer on GMF-Tooling User and contributor to lots of Eclipse project(modeling et al)
  • #6 * On choisit son « meta » en fonction du use-case * On est toujours le meta d&apos;un autre * « meta » est un mot relatif a la ou on observe.
  • #7 * Validate, serialize, compare...
  • #13 * Show model * Show ecore_diag * Generate .model * Show generated classes
  • #14 * Show client * Show code * Run -&gt; Does not depend on Eclipse, pure POJO * show generated file
  • #16 * EEF : project dedicated to create model editors efficiently – just in a declarative way.
  • #17 * Eclipse RCP, RAP, GWT * Generate .edit * Generate .editor * Open new Eclipse * Create a project, a file, edit Zoo * Import previous file, show zoo
  • #18 * Open Editor + XML editor * Edit « endpoint », Save, Show XML * Ctrl-Z, Ctrl-Y * Show Eclipse « Demo » task with the databinding line * EEF : a new Eclipse project dedicated to this use case
  • #20 * GMF customization thanks to high level APIs * Best modeling product
  • #21 * Writing a whole editor can be long and difficult * Use generators to generate a first version, and customize after
  • #22 * Show GMFMap * Add Top Node Water/child Fish * Show GMFGraph -&gt; Figures desc * Show GMFTool -&gt; Palette desc * Generate GMFGen (add org.eclipse.gmf.runtime.lite.svg) * Generate Code * Show
  • #23 * Generates a (de)serializer for your DSL * Can be embedded in any Java App where EMF runs * Think about a language grammar : Model is AST, Xtext offers parsing, only execution need to be implemented
  • #24 5min30. * File &gt; New &gt; Xtext Project from Ecore Model -&gt; org.eclipse.modeling.demo.zoo.dsl -&gt; org.eclipse.modeling.demo.zoo.ZooDSL -&gt; zoodsl * Show default grammar ~ Json * Replace with my Grammar -&gt; Show mapping : implicit based on name and {...} * generate editor for « zoodsl » : May ask for ANTLR * Create file « myzoo.zoodsl » - Show completion, validation * Think about a java grammar
  • #26 * Diagram already exists * Synchronization on « save » * Still work in progress * UML dream become true. * Think about Java grammar + UML class diagram
  • #27 * Use case : generate web page * « One-way » Xtext * Batch * 2 different styles : Template ( ~jsp/php ) ; Rules
  • #28 * Go to plugins view * Import as source « org.eclipse.gmf.codegen » * Show Editor.xpt -&gt; Show how easy it is to navigate in EMF objects with « :: » Xpand is not the best ! Acceleo is better but I don&apos;t know it enough to demo it ; and you understood the point;)
  • #29 * Use cases : -&gt; Assuse Meta1 is zoo, and Meta2 is XHTML =&gt; generate XHTML page -&gt; Assume Meta1 is Zoo from Berlin and Meta2 represents Zoo from Lyon. A european law says « everyone must work like Lyon&apos; s zoo ». Then just transform/convert
  • #30 * Show metamodel * Highlight difference -&gt; Containement is not the same -&gt; Class name are different -&gt; No more name -&gt; Containement of plots using a specific type * Show transfo : Rules -&gt; For each element, apply a rule * Execute transfo, show results * Say that this transfo applies on models, not on files ! Then you can transform Xtext-based models as well.
  • #31 * Only a few use-cases were presented
  • #32 * CDO-Dawn -&gt; Collaborative * Teneo -&gt; JPA, Hibernate pour les modeles (Eobject)