PR0029 - 2010-05-31
Redistribution and other use of this material requires written permission from The RCP Company.
Eclipse Modeling Tools - 2010-10-26
Eclipse is probably best known as a first class Java IDE, but it is so much more than
that.
In this talk, I will present the different tools that makes up the Eclipse Modeling
Project from the simple (EMF) to the very complex (QVT/O). The emphasis will be on
the immediately useful techniques with plenty of demonstrations.
PR0029 - 2010-05-31
2
Agenda
 Eclipse is… what exactly?
 The Eclipse Architecture
 The Eclipse Modeling Project and sub-projects
 EMF, EMFT, GMP, GMT, MDT, M2M, M2T, and TMF
 The Eclipse Modeling Tools
 EMF
 OCL
 CDO
 XText
 GMF
 Jet
 Xpand
 QVT/O
PR0029 - 2010-05-31
3
Eclipse is… what exactly?
PR0029 - 2010-05-31
4
Eclipse – The Sweets
PR0029 - 2010-05-31
5
ECLIPSE – The Mitsubishi Car
PR0029 - 2010-05-31
6
Eclipse – The Java IDE
PR0029 - 2010-05-31
7
Eclipse – The Tools Platform
PR0029 - 2010-05-31
8
Eclipse – The Application Platform
PR0029 - 2010-05-31
9
Eclipse – The Application Platform
PR0029 - 2010-05-31
10
IBM Lotus Notes
Version 8
PR0029 - 2010-05-31
11
The Eclipse Modeling Project
and sub-projects
PR0029 - 2010-05-31
12
Eclipse Modeling Project
 “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.”
PR0029 - 2010-05-31
13
Relevant Modeling Sub-Projects
 Administrative Projects
 EMF, EMFT, GMP, GMT, MDT, M2M, M2T, and TMF
 Some Relevant Technical Projects
 EMF – Eclipse Modeling Framework – is the base technology used to represent
models
 OCL – Object Constraint Language – allows you to specify advanced constraints
and invariants
 CDO – Connected Data Objects – is a distributed shared model framework for EMF
models and meta models
 XText – is a text based editor framework for EMF models based on EBNF grammars
 GMF – Graphical Modeling Framwork – is a graphics based editor framework for
EMF models
 JET – Java Emitter Templates – is a JSP like language for generating Java code from
a model
 Xpand – is a high-level template language used to translate models to text
 QVT/O – Operational QVT (Query/View/Transformation) – is a very, very high-level
language for model to model transformations
 Teneo – is a database persistency solution for EMF using Hibernate or EclipseLink
PR0029 - 2010-05-31
14
EMF
 Eclipse Modeling Framework – is the base technology used to represent models
 Logical models based on ER diagrams
L0087 - 2010-09-19
15
Logical Model for NBS – Noware Bike Shop
~
Item
HandlebarsFrame
Bike
0..*
Wheel Gear Saddle
L0087 - 2010-09-19
16
Logical Model for EMF
~ Named Element
Model Element
0..1
Typed ElementClassifier
Structural Feature
Attribute
Reference
Class
Data Type
0..*
0..*
0..*
type
opposite
superTypes
0..*
PR0029 - 2010-05-31
17
OCL
 Object Constraint Language – allows you to specify advanced constraints and
invariants
 E.g.
 Item price is positive:

Context Item: inv self.price > 0
 It has exactly one Saddle:

Context Bike: inv self.items->select(i : Item | i.oclIsKindOf(Saddle))->size() == 1
 Can be tested using the interactive console
 Can be embedded directly in Ecore
PR0029 - 2010-05-31
18
CDO
 Connected Data Objects – is a distributed shared model framework for EMF models
and meta models
PR0029 - 2010-05-31
19
XText
 XText – is a text based editor framework for EMF models based on EBNF grammars
events
doorClosed D1CL
drawOpened D2OP
…
end
resetEvents
doorOpened
end
commands
unlockPanel PNUL
lockPanel PNLK
…
end
state idle
actions {unlockDoor lockPanel}
doorClosed => active
end
state active
drawOpened => waitingForLight
lightOn => waitingForDraw
end
…
grammar my.pack.SecretCompartments
with org.eclipse.xtext.common.Terminals
generate secretcompartment "http://www.eclipse.org/secretcompartment"
Statemachine :
'events'
(events+=Event)+
'end'
('resetEvents'
(resetEvents+=[Event])+
'end')?
'commands'
(commands+=Command)+
'end'
(states+=State)+;
Event : name=ID code=ID;
Command : name=ID code=ID;
State :
'state' name=ID
('actions' '{' (actions+=[Command])+ '}')?
(transitions+=Transition)*
'end';
Transition :
event=[Event] '=>' state=[State];
PR0029 - 2010-05-31
20
GMF
 Graphical Modeling Framwork – is a graphics based editor framework for EMF models
 In itself also a number of models that describe how objects and graphical items and
tools maps
PR0029 - 2010-05-31
21
JET
 Java Emitter Templates – is a JSP like language for generating Java code from a model
public <%if (isEnum) {%>enum<%} else {%>final class<%}%> <%=genEnum.getName()%> <%if (isEnum) {%>implements<%}
else {%>extends<%}%> <%=genModel.isSuppressEMFMetaData() && !genModel.isSuppressInterfaces() ? "Internal" +
genEnum.getName() : genModel.getImportedName(isEnum ? "org.eclipse.emf.common.util.Enumerator" :
"org.eclipse.emf.common.util.AbstractEnumerator")%>
{
<%if (isEnum) {%>
<%if (genEnum.getGenEnumLiterals().isEmpty()) {%>
;
<%}else {%>
<%for (Iterator<GenEnumLiteral> l = genEnum.getGenEnumLiterals().iterator(); l.hasNext(); )
{ GenEnumLiteral genEnumLiteral = l.next(); %>
/**
* The '<em><b><%=genEnumLiteral.getFormattedName()%></b></em>' literal object.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #<%=genEnumLiteral.getEnumLiteralValueConstantName()%>
* @generated
* @ordered
*/
<%=genEnumLiteral.getEnumLiteralInstanceConstantName()%>(<%=genEnumLiteral.getValue()%>, "<
%=genEnumLiteral.getName()%>", <%=Literals.toStringLiteral(genEnumLiteral.getLiteral(), genModel)%>)<%if
(l.hasNext()) {%>,<%} else {%>;<%}%><%=genModel.getNonNLS()%><%=genModel.getNonNLS(2)%>
<%}%>
<%}%>
<%}%>
PR0029 - 2010-05-31
22
Xpand
 Xpand – is a high-level template language used to translate models to text
 Expandable and type-safe
 Has an aspect-based extension system to allow users to extend current templates
«DEFINE Root FOR data::DataModel»
«EXPAND Entity FOREACH entity»
«ENDDEFINE»
«DEFINE Entity FOR data::Entity»
«FILE name + ".java"»
public class «name» {
«FOREACH attribute AS a»
// bad practice
private «a.type» «a.name»;
«ENDFOREACH»
}
«ENDFILE»
«ENDDEFINE»
PR0029 - 2010-05-31
23
Eclipse.dk – The Danish Eclipse Society
 Eclipse.dk was created in Marts 2007 as a meeting place for everyone interested in the
Eclipse (www.eclipse.org) platform.
 The purpose of Eclipse.dk is as follows:
 To promote the knowledge of Eclipse in Denmark.
 To create networks amongst danish Eclipse-users and developers.
 To build knowledge on Eclipse in Denmark, especially

In danish institutes of higher education.

Between danish companies developing applications based on Eclipse.
 Create and maintain a web site on Eclipse for danish users – eclipse.dk.
 Strengthen the relations between danish and international Eclipse-users and
organizations.
 The eclipse.dk society has members representing not only vendors of Eclipse-based
products and services, but also users of the platform and representatives from
institutions of higher education.
PR0029 - 2010-05-31
24
Q & A
PR0029 - 2010-05-31
25
About Me
 Tonny Madsen, Founder and Owner of The RCP Company
 20 years of experience in system development in major companies
 9 years experience as the Systems Architect of an 20+ MLoC project
 8 years of experience with Eclipse and Eclipse RCP
 Solutions Member of the Eclipse Foundation
 Chairman of Eclipse.dk
 Extern Lecturer at IT-University on Model Driven Development and
Domain Specific Languages
 Regular speaker at EclipseCon, Eclipse Summit, etc
PR0029 - 2010-05-31
26
If You Want to Know More about Eclipse
 The Foundation:
 http://eclipse.org
 The Danish User Group:
 http://eclipse.dk
 The training:
 http://www.eclipse.org/community/training/classes.php
 Resources on Eclipse:
 http://www.eclipse.org/resources/
 Consolidated Blog:
 http://planeteclipse.org/
PR0029 - 2010-05-31
27
If You Want to Know More about Modeling
 The Project:
 http://eclipse.org/modeling/
 Downloading Eclipse for Modeling:
 http://www.eclipse.org/downloads/packages/eclipse-modeling-tools-includes-
incubating-components/heliossr1
 The training:
 Not yet, but coming after the Summer
 ITU have a 14 weeks class on “Model Driven Development” -
https://mit.itu.dk/ucs/cb_www/course.sml?
course_id=913525&semester_id=912846
 Tutorials on modeling

notesnet.dk - Eclipse Modelling Tools

  • 1.
    PR0029 - 2010-05-31 Redistributionand other use of this material requires written permission from The RCP Company. Eclipse Modeling Tools - 2010-10-26 Eclipse is probably best known as a first class Java IDE, but it is so much more than that. In this talk, I will present the different tools that makes up the Eclipse Modeling Project from the simple (EMF) to the very complex (QVT/O). The emphasis will be on the immediately useful techniques with plenty of demonstrations.
  • 2.
    PR0029 - 2010-05-31 2 Agenda Eclipse is… what exactly?  The Eclipse Architecture  The Eclipse Modeling Project and sub-projects  EMF, EMFT, GMP, GMT, MDT, M2M, M2T, and TMF  The Eclipse Modeling Tools  EMF  OCL  CDO  XText  GMF  Jet  Xpand  QVT/O
  • 3.
    PR0029 - 2010-05-31 3 Eclipseis… what exactly?
  • 4.
  • 5.
    PR0029 - 2010-05-31 5 ECLIPSE– The Mitsubishi Car
  • 6.
  • 7.
    PR0029 - 2010-05-31 7 Eclipse– The Tools Platform
  • 8.
    PR0029 - 2010-05-31 8 Eclipse– The Application Platform
  • 9.
    PR0029 - 2010-05-31 9 Eclipse– The Application Platform
  • 10.
    PR0029 - 2010-05-31 10 IBMLotus Notes Version 8
  • 11.
    PR0029 - 2010-05-31 11 TheEclipse Modeling Project and sub-projects
  • 12.
    PR0029 - 2010-05-31 12 EclipseModeling Project  “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.”
  • 13.
    PR0029 - 2010-05-31 13 RelevantModeling Sub-Projects  Administrative Projects  EMF, EMFT, GMP, GMT, MDT, M2M, M2T, and TMF  Some Relevant Technical Projects  EMF – Eclipse Modeling Framework – is the base technology used to represent models  OCL – Object Constraint Language – allows you to specify advanced constraints and invariants  CDO – Connected Data Objects – is a distributed shared model framework for EMF models and meta models  XText – is a text based editor framework for EMF models based on EBNF grammars  GMF – Graphical Modeling Framwork – is a graphics based editor framework for EMF models  JET – Java Emitter Templates – is a JSP like language for generating Java code from a model  Xpand – is a high-level template language used to translate models to text  QVT/O – Operational QVT (Query/View/Transformation) – is a very, very high-level language for model to model transformations  Teneo – is a database persistency solution for EMF using Hibernate or EclipseLink
  • 14.
    PR0029 - 2010-05-31 14 EMF Eclipse Modeling Framework – is the base technology used to represent models  Logical models based on ER diagrams
  • 15.
    L0087 - 2010-09-19 15 LogicalModel for NBS – Noware Bike Shop ~ Item HandlebarsFrame Bike 0..* Wheel Gear Saddle
  • 16.
    L0087 - 2010-09-19 16 LogicalModel for EMF ~ Named Element Model Element 0..1 Typed ElementClassifier Structural Feature Attribute Reference Class Data Type 0..* 0..* 0..* type opposite superTypes 0..*
  • 17.
    PR0029 - 2010-05-31 17 OCL Object Constraint Language – allows you to specify advanced constraints and invariants  E.g.  Item price is positive:  Context Item: inv self.price > 0  It has exactly one Saddle:  Context Bike: inv self.items->select(i : Item | i.oclIsKindOf(Saddle))->size() == 1  Can be tested using the interactive console  Can be embedded directly in Ecore
  • 18.
    PR0029 - 2010-05-31 18 CDO Connected Data Objects – is a distributed shared model framework for EMF models and meta models
  • 19.
    PR0029 - 2010-05-31 19 XText XText – is a text based editor framework for EMF models based on EBNF grammars events doorClosed D1CL drawOpened D2OP … end resetEvents doorOpened end commands unlockPanel PNUL lockPanel PNLK … end state idle actions {unlockDoor lockPanel} doorClosed => active end state active drawOpened => waitingForLight lightOn => waitingForDraw end … grammar my.pack.SecretCompartments with org.eclipse.xtext.common.Terminals generate secretcompartment "http://www.eclipse.org/secretcompartment" Statemachine : 'events' (events+=Event)+ 'end' ('resetEvents' (resetEvents+=[Event])+ 'end')? 'commands' (commands+=Command)+ 'end' (states+=State)+; Event : name=ID code=ID; Command : name=ID code=ID; State : 'state' name=ID ('actions' '{' (actions+=[Command])+ '}')? (transitions+=Transition)* 'end'; Transition : event=[Event] '=>' state=[State];
  • 20.
    PR0029 - 2010-05-31 20 GMF Graphical Modeling Framwork – is a graphics based editor framework for EMF models  In itself also a number of models that describe how objects and graphical items and tools maps
  • 21.
    PR0029 - 2010-05-31 21 JET Java Emitter Templates – is a JSP like language for generating Java code from a model public <%if (isEnum) {%>enum<%} else {%>final class<%}%> <%=genEnum.getName()%> <%if (isEnum) {%>implements<%} else {%>extends<%}%> <%=genModel.isSuppressEMFMetaData() && !genModel.isSuppressInterfaces() ? "Internal" + genEnum.getName() : genModel.getImportedName(isEnum ? "org.eclipse.emf.common.util.Enumerator" : "org.eclipse.emf.common.util.AbstractEnumerator")%> { <%if (isEnum) {%> <%if (genEnum.getGenEnumLiterals().isEmpty()) {%> ; <%}else {%> <%for (Iterator<GenEnumLiteral> l = genEnum.getGenEnumLiterals().iterator(); l.hasNext(); ) { GenEnumLiteral genEnumLiteral = l.next(); %> /** * The '<em><b><%=genEnumLiteral.getFormattedName()%></b></em>' literal object. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #<%=genEnumLiteral.getEnumLiteralValueConstantName()%> * @generated * @ordered */ <%=genEnumLiteral.getEnumLiteralInstanceConstantName()%>(<%=genEnumLiteral.getValue()%>, "< %=genEnumLiteral.getName()%>", <%=Literals.toStringLiteral(genEnumLiteral.getLiteral(), genModel)%>)<%if (l.hasNext()) {%>,<%} else {%>;<%}%><%=genModel.getNonNLS()%><%=genModel.getNonNLS(2)%> <%}%> <%}%> <%}%>
  • 22.
    PR0029 - 2010-05-31 22 Xpand Xpand – is a high-level template language used to translate models to text  Expandable and type-safe  Has an aspect-based extension system to allow users to extend current templates «DEFINE Root FOR data::DataModel» «EXPAND Entity FOREACH entity» «ENDDEFINE» «DEFINE Entity FOR data::Entity» «FILE name + ".java"» public class «name» { «FOREACH attribute AS a» // bad practice private «a.type» «a.name»; «ENDFOREACH» } «ENDFILE» «ENDDEFINE»
  • 23.
    PR0029 - 2010-05-31 23 Eclipse.dk– The Danish Eclipse Society  Eclipse.dk was created in Marts 2007 as a meeting place for everyone interested in the Eclipse (www.eclipse.org) platform.  The purpose of Eclipse.dk is as follows:  To promote the knowledge of Eclipse in Denmark.  To create networks amongst danish Eclipse-users and developers.  To build knowledge on Eclipse in Denmark, especially  In danish institutes of higher education.  Between danish companies developing applications based on Eclipse.  Create and maintain a web site on Eclipse for danish users – eclipse.dk.  Strengthen the relations between danish and international Eclipse-users and organizations.  The eclipse.dk society has members representing not only vendors of Eclipse-based products and services, but also users of the platform and representatives from institutions of higher education.
  • 24.
  • 25.
    PR0029 - 2010-05-31 25 AboutMe  Tonny Madsen, Founder and Owner of The RCP Company  20 years of experience in system development in major companies  9 years experience as the Systems Architect of an 20+ MLoC project  8 years of experience with Eclipse and Eclipse RCP  Solutions Member of the Eclipse Foundation  Chairman of Eclipse.dk  Extern Lecturer at IT-University on Model Driven Development and Domain Specific Languages  Regular speaker at EclipseCon, Eclipse Summit, etc
  • 26.
    PR0029 - 2010-05-31 26 IfYou Want to Know More about Eclipse  The Foundation:  http://eclipse.org  The Danish User Group:  http://eclipse.dk  The training:  http://www.eclipse.org/community/training/classes.php  Resources on Eclipse:  http://www.eclipse.org/resources/  Consolidated Blog:  http://planeteclipse.org/
  • 27.
    PR0029 - 2010-05-31 27 IfYou Want to Know More about Modeling  The Project:  http://eclipse.org/modeling/  Downloading Eclipse for Modeling:  http://www.eclipse.org/downloads/packages/eclipse-modeling-tools-includes- incubating-components/heliossr1  The training:  Not yet, but coming after the Summer  ITU have a 14 weeks class on “Model Driven Development” - https://mit.itu.dk/ucs/cb_www/course.sml? course_id=913525&semester_id=912846  Tutorials on modeling

Editor's Notes

  • #7 Just to make everybody aware that they actually know about Eclipse already. It is known technology – not new technology. ESB, web services and BPM are all considered new technology…
  • #8 The current view of Eclipse according to the Eclipse Foundation. Really, the same view as when Eclipse was first conceived.
  • #10 This is the prototype of the banking desktop. It looks and feels like an Eclipse application. Just see the L&amp;F. No serious presentation branding has been performed… yet… One area where e4 would have helped – the look could be Nordea look instead of Eclipse look.
  • #11 Is this Eclipse RCP? The perspective switcher is different! Views in the “same position” of the perspective – a so-called folder – are shown differently. The “Launch” button Based on Eclipse RCP! Early demo based on Eclipse RCP 3.1 Look of some native widgets has been changed! UI is a mix of SWT and Native Notes® windows The workbench is recognizable yet different Domino, IBM, Lotus, Notes and Workplace Client Technology are trademarks or registered trademark of International Business Machines Corp. in the United States, other countries, or both. IBM Lotus Notes look&amp;feel was designed by Mary Beth Raven. Would have been easier with e4, as this would have eased the structural changes as well.