Eclipse Graphical Modeling Framework (GMF) Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Hasonló dokumentumok
Grafikus szerkesztők készítése 2.

Ráth István. DECOS Nemzeti Nap október 15. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Metamodellezés. Simon Balázs BME IIT, 2011.

Ráth István. A fejlesztés evolúciója

Modell Alapú Szoftverfejlesztés Eclipse-szel

Domain- specifikus modellezés az Eclipse Modeling Framework használatával

Grafikus felületek készítése 1.

Közösség, projektek, IDE

Utolsó módosítás:

Modellező eszközök, kódgenerálás

Miért is transzformáljunk modelleket? Varró Dániel

Transzformációk integrált alkalmazása a modellvezérelt szoftverfejlesztésben. Ráth István

Modell alapú tesztelés mobil környezetben

Programozási technológia

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

JAVA webes alkalmazások

CTools és Panels pluginok

Utolsó módosítás:

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Swing GUI készítése NetBeans IDE segítségével

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

SDI ALKALMAZÁS I. Workspace / ResourceView / Toolbar / IDR_MAINFRAME. Workspace / ResourceView / Menu / IDR_MAINFRAME

NEPTUN ID BMENET ID. Címtár BME VPN. vcenter VPN SVN. Trac Wiki. Wifi

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Név: Neptun kód: Pontszám:

A Java EE 5 plattform

Szoftvertechnolo gia 7. gyakorlat

RIA Rich Internet Application

Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék. Eclipse Rich AJAX Pla0orm

Modellek végrehajtása, kódgenerálás

Az MS Word szövegszerkesztés modul részletes tematika listája

Nyolcbites számláló mintaprojekt

Modellalkotás UML-ben

JNDI - alapok. Java Naming and Directory Interface

UML (Unified Modelling Language)

A szerzõrõl... xi Bevezetés... xiii

GráfRajz fejlesztői dokumentáció

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

S0-02 Típusmodellek (Programozás elmélet)

C#, OOP. Osztályok tervezése C#-ban

3. modul - Szövegszerkesztés

és az instanceof operátor

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Javadoc. Dokumentációs megjegyzés (2) Dokumentációs megjegyzés (1) Dokumentációs megjegyzés felépítése

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Generikus Típusok, Kollekciók

Új prezentáció létrehozása az alapértelmezés szerinti sablon alapján.

3. modul - Szövegszerkesztés

Avery Design Pro 4.0

PÉLDATÁR BEGYAKORLÓ FELADAT SÍKFESZÜLTSÉGI PÉLDA MEGOLDÁSA VÉGESELEM-MÓDSZERREL

A Java nyelv. Dialógus ablakok. Elek Tibor

Szoftver újrafelhasználás

Előzmények

OOP #14 (referencia-elv)

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

Végeselem módszer 3. gyakorlat

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

DEBRECENI EGYETEM INFORMATIKAI KAR. Az UML gyakorlati alkalmazásának bemutatása az AutoWorld rendszer tervezésén keresztül

ELTE, Informatikai Kar december 12.

Web-fejlesztés NGM_IN002_1

kommunikáció Megoldások

Alkalmazások fejlesztése A D O K U M E N T Á C I Ó F E L É P Í T É S E

Software Engineering Babeş-Bolyai Tudományegyetem Kolozsvár

Táblázatkezelés (Excel)

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

Windows. Készítette: Csatlós István

JAVA SE/ME tanfolyam tematika

Access alapok. Megnevezés Művelet Minta. Új adatbázis létrehozása. Új / Üres adatbázis.. Tábla létrehozása tervező nézetben.

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Java programozási nyelv 6. rész Java a gyakorlatban

Java programozási nyelv 5. rész Osztályok III.

Webalkalmazás fejlesztés Java EE környezetben NetBeans segítségével: JavaServer Faces 1.2 AJAX

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Dr. Pétery Kristóf: CorelDRAW 9 testre szabás

Üzleti intelligencia eszköztár a SAS 9.2 platformon

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

II. év. Adatbázisok és számítógépek programozása

Több zónás landing page sablonok

Nagy bonyolultságú rendszerek fejlesztőeszközei

7. rész: A specifikációtól az implementációig az EJB rétegben

Eseményvezérelt alkalmazások

Data Integrátorok a gyakorlatban Oracle DI vs. Pentaho DI Fekszi Csaba Ügyvezető Vinnai Péter Adattárház fejlesztő február 20.

Programozás 1. 2.gyakorlat

Responsive Web Design. Dr. Nyéki Lajos 2019

Folyamatmodellezés (BPMN) és alkalmazásai

Prezentáció Microsoft PowerPoint XP

Az Oracle Fusion szakértői szemmel

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Interfészek. PPT 2007/2008 tavasz.

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Adattárház kialakítása a Szövetkezet Integrációban, UML eszközökkel. Németh Rajmund Vezető BI Szakértő március 28.

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

A szoftverfejlesztés eszközei

Átírás:

Eclipse Graphical Modeling Framework (GMF) Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

GMF Graphical Modeling Framework Cél o Domain- specifikus nyelvek grafikus szerkesztése o Modellalapon, kevés kódolással (kódgenerálás segítségével) o Egységes keretrendszerben (Eclipse alapokon) o Funkciók gyors, inkrementális megvalósítása Fejlesztők: IBM, Borland

Tartalom GMF bevezető o GMF run.me és kódgenerálás GMF fejlesztés lépései o Konkrét szintaxis specifikációja o EMF metamodell o Grafikus modell o Tooling modell o Mapping modell o Generátor testreszabása o Kódgenerálás és tesztelés o Extrák, bővítések GMF run.me APIs OCL kényszerek Összefoglaló

A GMF két fő részből áll: o RunQme GMF ámekintés Kapocs az EMF és a GEF közöm Modell és diagram szintű szolgáltatások Bővíthető o Generálás (tooling) Modellvezérelt Diagram megjenelés (graphical), eszközök (tooling), leképezés a modellre (mapping) Generált kód a runqme- ot célozza meg

GMF RunQme Grafikus editorok írását támogató keretrendszer o Újrahasznosítható komponensek o Standardizált diagram metamodell A logikai és diagram metamodellek különválnak o Bővíthető grafikus szerkesztőket készíthetünk az Eclipse Workbenchbe integrálva

GMF RunQme Grafikus editorok írását támogató keretrendszer o Command- jellegű működés az EMF és GEF együmes vezérléséhez Perzisztencia az EMF runqme segítségével MVC szerkesztés GEF alapokon o További felhasznált technológiák: EMF Model TransacQon EMF ValidaQon Framework MDT Object Constraint Language (OCL) Apache BaQk (SVG)

A RunQme fontos része NézeQ infók tárolása: o Szín, betű^pus stb. NotaQon metamodel o Node esetében: pozíció, méret stb. o Edge esetében: töréspontok, dekorációk stb. NézeQ modell a domain modell fölé o GMF nyújtja, nincs szükség a domain modell megváltoztatására!

NotaQon metamodel Fő osztálya a View o Wrappeli a domain modell objektumot o Domain modell objektum elérése: get/setelement() EObject View Node Diagram Edge

Standard komponensek Popup AcQon Bar: Connection Handle: Compartment (collapsible): Geometrical Shape:

Standard komponensek AcQon: Direct Edit: Toolbar: Properties View:

Standard komponensek Navigátor a modellen belül: Animált zoom: Áttekintő nézet: Note Attachment:

Standard komponensek Oldalbeállítás: Nyomtató előnézet: Diagram export képfájlba: Diagram másolás a vágólapra:

GMF Tooling Célja: o Modellvezérelt szerkesztő generálás o A diagram és logikai modellek elkülönülnek o TestreszaboM domain- specifikus szerkesztők gyors összedobása o Az eredmény legyen bővíthető és rugalmasan átalakítható RunQme- hoz hasonlóan sok mindenre képes

GMF szerkesztő generálása

GMF szerkesztő generálása Új projekt, importáljuk az ecore fájlt a domain modellel

GMF szerkesztő generálása Megadjuk a grafikus alakzatokat

GMF szerkesztő generálása Létrehozzuk az eszközöket

GMF szerkesztő generálása Létrehozzuk a leképezést az eddigiek között

GMF szerkesztő generálása Legenerálódik a közös, minden információt tartalmazó generátor modell

GMF szerkesztő generálása Ezt még testre szabhatjuk

GMF szerkesztő generálása Elkészül a szerkesztő

GMF Dashboard View Grafikusan követhető a fejlesztés menete

GMF és EMF projektek A diagramszerkesztő működéséhez szükség van az EMF projekt genmodeljéből generált projektekre: o Model o Edit Konvencionális projektszerkezet: o library EMF projekt model Modellfájlok könyvtára library.ecore library.genmodel library.gmfgraph library.gm2ool library.gmfmap library.gmfgen src Generált EMF modell kód EMF GMF o library.diagram Generált GMF projekt o library.edit Generált EMF edit projekt

Domain Model A logikai metamodell Normál Ecore (EMF) modell Megadása az EMF- ben megszokom módon Pl. a GMF grafikus Ecore editorával

Graphical DefiniQon Model Diagram metamodell (GMFGraph) Cél o A használni kívánt grafikus elemek megadása A Figure- ök programozása helyem, magas szintű modellben Tree editorral Van hozzá automaqkus támogatás (varázsló) o A domain modelből következtet, testreszabhatóan

Graphical DefiniQon Model Java kódolás helyem modellezés

Graphical DefiniQon Model Java kódolás helyem modellezés Előre megadott elemekből összeállított figure

Graphical DefiniQon Model Java kódolás helyem modellezés Előre megadott elemekből összeállított figure Saját figure Java kód

Graphical DefiniQon Model Java kódolás helyem modellezés Előre megadott elemekből összeállított figure Graphical Definition Saját figure Java kód

Graphical DefiniQon Model Java kódolás helyem modellezés Előre megadott elemekből összeállított figure GEF EditPart generálás Graphical Definition IFigure generálás Saját figure Java kód

Graphical DefiniQon Model Plagormfüggetlen metamodell Felépítése: o Elemkönyvtárak (Figure Galleries) Rajzelemek hierarchiája (Figures) o Csomópontok (Nodes) o Kapcsolatok (Links) o Tartalmazók (Compartments) o Címkék (Diagram Labels) A wizard generál egy alap változatot bármely domain metamodellhez

Figure descriptorok Figure Gallery Rajzelemek hierarchikusan o Label, Rectangle, Ellipse, Polygon, Polyline, Custom Figure stb. o Borders: Line, Margin, Compound, Custom Elrendezésük o Layouts: Flow, Border, Grid, XY, Stack, Custom Tulajdonságaik o Color, Font, Dimension, Insets Child Access: accessorok

Node Diagram csomóponjpus A diagramok alapeleme Figure descriptorra hivatkozik Kitöltés és körvonal tulajdonságai megadhatóak

Címke a diagramon Diagram Label Két ^pus o Belső: Figure descriptor egy gyerekére (child access) hivatkozik o Külső: Figure descriptorra hivatkozik

Compartment Tartalmazást kifejező rekesz Figure descriptor egy gyerekére (child access) hivatkozik Lehet összecsukható

Összekötő ConnecQon Figure descriptorra hivatkozik

Tooling DefiniQon Model Tooling metamodell (GMFTool) A szükséges eszköztár- elemek megadása Szintén varázslós támogatás A generálás során implementálásra is kerülnek az im megadom parancsok

Tooling DefiniQon Model A szerkesztéshez használt eszközöket definiálja: o PaleMe o Tool (Qpikusan creaqon) Csoportokba (tool group) rendezve o Menü Main/Popup o AcQon o Toolbar A wizard generál egy alap változatot bármely domain metamodellhez

PaleMa Tool PaleMe Separator Tool Group

Mapping Model Leképezési metamodell (GMFMap) Az eddigi modellek összekötése Megfeleltetések megadása Domain graphical tooling

Mapping Model

Domain model Mapping Model

Mapping Model Graphical Definition Domain model

Mapping Model Graphical Definition Domain model Tool Definition

Mapping Model Graphical Definition Domain model Mapping model Tool Definition

Mapping Model Leírja a logikai kapcsolatot a következők közöm: o Domain elemek (.ecore) o Grafikus elemek (.gmfgraph) o Tooling elemek (.gmmool) Validációra alkalmas o Model ValidaQon Kényszereket vehetünk fel o OCL nyelven A wizard generál egy alapváltozatot a bemeneq metamodellek alapján

Canvas Mapping Graphical: a diagram hámere (a gmfgraph Canvas gyökéreleme) Domain: a hierarchia gyökerét reprezentáló osztály Tooling: o PaleMa o Menük o Eszközsorok

Node Mapping Top Node Reference o Domain: Containment Feature: a Canvas Mappingben megado@ gyökérosztály tartalmazást reprezentáló referenciája Node Mapping o Graphical: a diagram node o Domain: az osztály, amit a csomópont reprezentál o Tooling: az osztályt létrehozó creajon tool Gyerekei lehetnek: o Label Mapping o Child Reference o Compartment Mapping

Graphical: Diagram label Domain: Label Mapping (Design) Label Mapping esetén: semmi, staqkus szöveg o Feature Label Mapping esetén: a megjelenítendő (és szerkesztendő) feature- ök szöveges minták a megjelenítésükhöz és parse- olásukhoz

Csomópont gyerekei Child Reference Ugyanúgy Containment Feature és Node Mapping a megadandó adatok, mint Top Node Reference esetén Két Opus: o Affixed: a szülő node oldalán jelenik meg (pl. portok) o Compartment: a szülő node egy compartmentjében jelenik meg (következő dia)

Compartment Mapping Graphical: Compartment grafikus definícióját kell megadni Child Reference- re kell hivatkozni Így egy compartment csak azonos ^pusú node- okat tartalmazhat!

Node hierarchia példa

Node hierarchia példa

Node hierarchia példa Canvas Mapping

Node hierarchia példa Canvas Mapping Top Node Reference

Node hierarchia példa Canvas Mapping Top Node Reference owned Node Mapping

Node hierarchia példa Canvas Mapping Top Node Reference Node Mapping Child Reference

Node hierarchia példa Canvas Mapping Top Node Reference Node Mapping referenced Child Reference

Node hierarchia példa Canvas Mapping Top Node Reference Node Mapping Child Reference owned Node Mapping

Node hierarchia példa Canvas Mapping Top Node Reference Node Mapping Child Reference Node Mapping

Graphical: connecqon Link Mapping Domain: o Ha a kapcsolatot egy feature reprezentálja: a Target Feature- ben kell megadni o Ha a kapcsolatot egy osztály reprezentálja: Element: a kapcsolatot reprezentáló osztály Containment Feature: a kapcsolatokat tartalmazó feature Source/Target Feature: a kapcsolat két végét reprezentáló feature Tooling: az összekömetést létrehozó creaqon tool

ÖsszeköMetés osztállyal példa

ÖsszeköMetés osztállyal példa

ÖsszeköMetés osztállyal példa

ÖsszeköMetés osztállyal példa

ÖsszeköMetés osztállyal példa

Diagram Editor Generator Model Generátor modell (GMFGen) Kódgenerálás paramétereit tartalmazza o Az EMF genmodeljéhez hasonló o A mapping modell transzformációjával áll elő Kódgenerálás Java Emi@er Templates/Xpand technológiával o A template- eket ki lehet cserélni A kódgenerálás a GMF runjme- on futó kódot állít elő A generálást finomhangolhatjuk o Plug- in ID, provider name, package namespace stb. RunJme opciók o Nyomtatás támogatása, validajon stb.

Generátor adatok Lehetőség van RCP alkalmazás generálására Fájl tulajdonságai (Gen Editor) o Modell- és diagramfájl kiterjesztése o Modell- és diagramfájl külön vagy egyben legyen- e Plugin azonosító adatok (Gen Plugin) o ID, név, provider Diagramszerkesztő képességei később (Gen Diagram) o Validáció o Shortcuts o Providers

KompleM kód Generált kód Grafikus editor GEF alapon Sok extrával o Ld. RunQme features

Hasonló az EMF- hez

EMF Hasonló az EMF- hez

Hasonló az EMF- hez EMF Domain model (ECore)

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel)

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel) Java code

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel) Java code GMF

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel) Java code Domain Model (ECore) GMF Mapping (GMFMap) Graphical Definition (GMFGraph) Tool Definition (GMFTool)

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel) Java code Domain Model (ECore) GMF Mapping (GMFMap) Generator Model (GMFGen) Graphical Definition (GMFGraph) Tool Definition (GMFTool)

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel) Java code Domain Model (ECore) GMF Mapping (GMFMap) Generator Model (GMFGen) Java code Graphical Definition (GMFGraph) Tool Definition (GMFTool)

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel) Java code Domain Model (ECore) Transzformáció kóddal (Java) GMF Mapping (GMFMap) Generator Model (GMFGen) Java code Graphical Definition (GMFGraph) Tool Definition (GMFTool)

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel) Java code Domain Model (ECore) Transzformáció kóddal (Java) Sablonok (JET) GMF Mapping (GMFMap) Generator Model (GMFGen) Java code Graphical Definition (GMFGraph) Tool Definition (GMFTool)

A generált kód testreszabása Lehetőségek: o Custom osztályok a tooling modellben o Kód felülírása o Template módosítása o Extension point bővítése Érdemes külön pluginbe rakni a módosításokat

A generált kód testreszabása Custom osztályok Graphical o Figure, ConnecQon, DecoraQon, Border, Layout Generator o Behaviour (dupla klikk lekezelése) Előnyök o Modellalapú megközelítés (még amribútumok is) Hátrányok o Refactoring, staqkus ellenőrzés nehézkes modell- kód átjárhatatlanság miam

A generált kód testreszabása Custom osztályok Példa Custom Behaviour hozzáadása generator modelhez

A generált kód testreszabása Custom osztályok Példa Custom Behaviour hozzáadása generator modelhez Saját implementáció megadása

A generált kód testreszabása Kód felülírása Generált metódusok felülírása, újak írása @generated törlése vagy @generated NOT o Újonnan beszúrt kódnál nem kell Előnyök o Egyszerű Hátrányok o Törékeny

A generált kód testreszabása Kód felülírása Példa @generated tag NOTra állítása

A generált kód testreszabása Kód felülírása Példa @generated tag NOTra állítása Saját kód megírása

A generált kód testreszabása Template JET sablonok módosítása o Generator modellben template directory megadása Előnyök o Újrahasznosítható Hátrányok o JET technológia ismerete szükséges

A generált kód testreszabása Template Példa Xpand template megírása

A generált kód testreszabása Template Példa Generator modelben megfelelő elem tulajdonságai között

A generált kód testreszabása Template Példa Template testreszabásának jelzése

A generált kód testreszabása Template Példa Hivatkozás saját template-re

A generált kód testreszabása Extension point *Provider extension point bővítése o View, EditPart, EditPolicy, Icon stb. Előnyök o Biztonságos Hátrányok o Sok boilerplate code

A generált kód testreszabása Extension point Példa Extension point megadása

A generált kód testreszabása Extension point Példa Hivatkozott osztály megvalósítása Extension point megadása

Haladó GMF technikák

Dig in/drill down Diagram parqqoning Két eset: o Azonos diagram^pus (rekurzív tartalmazás) Pl. package- ek o Különböző diagram^pus Pl. séma- tábla

Diagram parqqoning megvalósítása Generator model o Node Open Diagram Behaviour Azonos diagram^pus: o Diagram Kind, Editor ID üresen hagyandó Különböző diagram^pus: o Diagram Kind: céleditor Editor Generator/Model ID tulajdonsága o Editor ID: céleditor Editor Generator/Editor View/ID tulajdonsága

Kezdőérték megadása EMF modellben o Default value nevű property o Egyszerű érték GMF modellben: Mapping model o Node/Link Mapping Feature Seq IniQalizer Feature Value Spec» Value Expression o OCL kifejezés

OCL nyelven Kényszerek ÖsszeköMetések Mapping Model o Link Mapping Link Constraint Pl. összekötő nem köthet össze egy elemet önmagával: o self <> oppositeend Már létrehozásnál sem sérülhet kényszer

Ugyanúgy OCL nyelven Mapping model o Audit Container Audit Rule Target Constraint Kényszerek Csak validációnál van hibajelzés

Validáció Engedélyezés: Generator model o Gen Diagram ValidaQon Enabled ValidaQon Decorators Live ValidaQon UI Feedback Validáció elvégzése: Edit/Validate

Egy node élő másolata Hivatkozás (shortcut) Use case: egy elemre másik diagramban szeretnénk hivatkozni Engedélyezés: Generator Model o Gen Diagram Forrásdiagramban: Shortcuts Provided For = céldiagram fájlkiterjesztése Céldiagramban: Contains Shortcuts To = forrásdiagram fájlkiterjesztése

SzemanJkus információk tükrözése vizuálisan Ha csak bizonyos megjelenítési jellemzők függnek az állapomól: Általunk definiált Figure- metódus (pl. updateface ()) meghívása o Konstruktorban o EMF értesítés esetén @Override protected void handlenotificationevent(notification notification) { if (notification.getnotifier() instanceof Port) { getprimaryshape().updateface(); } super.handlenotificationevent(notification); }

SzemanJkus információk tükrözése vizuálisan Ha állapomól függően teljesen más figure kell: 2 különböző node, különböző constraintekkel és kezdőértékekkel Mapping Top Node Reference Node Mapping Constraint Feature Seq Initalizer Feature Value Spec Value Expression Top Node Reference Node Mapping Constraint Feature Seq Initalizer Feature Value Spec Value Expression Diagram Node: Node TypeAFigure Body: self.type = CommonClassType::TypeA, Language: ocl Element Class: CommonClass Feature: CommonClass.type:CommonClassType Body: CommonClass.type::TypeA, Language: ocl Diagram Node: Node TypeBFigure Body: self.type = CommonClassType::TypeB, Language: ocl Element Class: CommonClass Feature: CommonClass.type:CommonClassType Body: CommonClass.type::TypeB, Language: ocl

Ikonok megváltoztatása összekötők Ha nincs hozzá külön osztály: Asszociációhoz kép rendelése ImageRegistryben

Ikonok megváltoztatása összekötők Ha nincs hozzá külön osztály: Asszociációhoz kép rendelése ImageRegistryben /** * @generated NOT */ private static ImageRegistry getimageregistry() { if (imageregistry == null) { imageregistry = new ImageRegistry(); imageregistry.put( getimageregistrykey(socialnetworkpackage.einstance.getperson_membership()), SocialNetworkDiagramEditorPlugin.findImageDescriptor("icons/Membership.gif")); } return imageregistry; }

Összegzés GEF GMF Modell Tetszőleges EMF Nem gráf jellegű Viszonylag könnyű Sok, bonyolult testreszabás megjelenítés Kód mennyisége Sok boilerplate kód szükséges Főleg modellezés, kevés kódolás Munkafolyamat Csak kódolás Többlépcsős Megéri használni, ha: Nem kell EMF-től eltérő modellhez igazodni A modell nem változik gyakran A megjelenítés nem tér el nagyon a csúcs-él paradigmától Gazdag funkcionalitással rendelkező szerkesztő gyors implementációja szükséges Integráció kell az Eclipse többi modellezési eszközével