EMF - The off beat path

Preview:

DESCRIPTION

This is a presentation of EMF from the ground up during Eclipse India Summit, Bangalore July 2009. This was a joint session from me and Annamalai, ANCiT.

Citation preview

Chetan Kumar K, RBEIjointly with Annamalai C, ANCiT

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

In-memory dbase contentD-

Base

UI display

What is a model ???

That is a model!

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

What is model ???

Placeholder of data Can “get” and “set” data

Get data

Set dataGet dataData

In memory representation of data

Can be derived from a design

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

… and so on

Will you spend time writing each class ??

Map design and code (model)

PIM PSM

Or be smart and generate them ??

UML Java

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

PIM Generator Model

Code Generation Engine

Code generation templates

PSMPSM

Typical code-generation flow

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

EMF a code generator. EMF is one such code-generator Let’s you generate concrete classes based on a design

(UML)

Let’s look at an example…

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

PIM(ecore)

Generator Modelgenmodel

EMFCode Generation

Engine

Code generation Templates

(JET)

PSM(Java)

Code generation flow – EMF way

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

Tap along guys…

First look of EMF as a code-generator…

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

The complete Example UML

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

Properties of (E)Attribute

Property Meaning

Volatile No associated storage (value can be calculated)

Transient Attribute isn’t persisted

Changeable Value can be changed or not

Unsettable Find out if an attribute was touched

Default value Literal

Default value assigned when containing class is instantiated

EType Data type of attribute

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

M-V-C architecture thru EMF

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

…EMF first impressions. EMF generates code – will it steal my job!

EMF generates UI stuff – why pay a UI developer ?

Oh god! Something new – too much learning curve

Should I learn “Modeling” or write code now ?

Points 3, 4 courtesy Ed Merks

It will be great if these points are myths … wat say ?

EMF.Edit

Control how model elements are displayed, edited.

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

EMF.Edit – bird’s eye view.

Contains UI Providers for each Model Element.

Content Provider

Label Provider

Property Source

Item Provider

Generated implementation for different providers

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

EMF.Edit control flow – Content Providers

“+” clicked

Item provider code

eGet api calls

Generated api getter(s)

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

EMF.Edit control flow – Label Providers

Item provider code

eGet api callsGenerated

api getter(s)

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

EMF.Edit control flow – Property Source

Tree item selected

Item provider code

Individual feature’s property descriptor

built

Property descriptors

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

EMF.Edit providers – one for all, all for one Content, Label, Image, and Property source

providers all through one provider instance!!

Now that’s called … convenience.

EMF.Edit commands

Command based model editing support

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

EMF.Edit CommandsCommand based editing of model instances

Model object

Editing domainUI display

“Set” event as

Command Command stack

setXXX()

undoable

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

EMF.Edit – How do I create/use Commands ?

Model object

EMF Editing Domain

•Contains command stack

•Factories to create commands

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

EMF.Edit – commands, a deeper look

Command interface Existing Command implementations

Do you need to implement this interface ??

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

EMF.Edit – “Change… is here!”Should I have one command per operation ?

Can I “record” changes done to a model ?

Oooo yess!!

Works on change notofications given on each operation

ChangeRecorder recoreds these notifications from individual setters. Hence, bulk undo is possible

Can I perform many operations in one command ?

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

Should I always generate EMF.xxx code ?

Nope … can work with “Dynamic EMF” Ecore – instantiate model (load) – edit – persist … is possible

Responsible code: EMF Reflective API, EMF Reflective Item Providers

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

Model xml / xmi

loadsave

UI display

What after you edit ?? – can ya persist ?

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

EMF serialization

Model object

EMF Resource

EMF Resource Set

xml / xmi

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

Load and save flows

Model object

xml / xmi

loadsave

EMF Reosource

Typical code snippet:

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

EMF Serialization – behind the scenes

•EAnnotations stores mapping b/w XML and Ecore

•Any model element can have EAnnotations

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

Can I directly persist EMF Objects into dbase ?

Yes, u can – using EMF Teneo (http://www.eclipse.org/modeling/emf/?project=teneo)

Create HbDataSt

ore

Create Hibernate Session,

Transaction

Begin Transaction

Create EMF Model root

object, make it persistent

Create sub-tree under

persistent rootCommit Tx

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

Get all students aged > 5

Model Navigation and search

Isn’t there a better way than loops ?Can’t I “Query” an EMF model ??

The cool “Query way”

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

In the end… what is EMF ?

•Code generator based on a design (UML)

•Means of Java XML binding with Inbuilt persistence mechanism

•Command based model editing support, with generated item providers

•All in all, a base for applications based on MDA

EMF Transaction

Thread-safe editing of a single Model InstanceTransaction style editing of model instances

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

Model editing through multiple threads

Model object

Thread 1

Change name :

“Jimmy Bend”

Thread 2

Change name

“James Bond”

Model objectname: Harry Potter

name: ???

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

“A mind once stretched by a thought never regains its original dimensions”

Chetan Kumar K | Annamalai C | Eclipse India Summit, Bangalore, 17th July 2009

References EMF newsgroups: http://www.eclipse.org/newsportal/thread.php?

group=eclipse.tools.emf

EMF book: Eclipse Modeling Framework by Ed Merks et.al

EMF Refcard on DZone: http://refcardz.dzone.com/refcardz/essential-emf

Articles on Dynamic EMF - IBM developerWorks (http://www.ibm.com/developerworks/library/os-eclipse-dynamicemf/)

- devX.com (http://www.devx.com/Java/Article/29093/0/page/1 )

Blogs: http://tweakeclipse.blogspot.com/ http://eclipseo.blogspot.com/ and many more!!

Recommended