EMF-modell készítése
Utolsó frissítés: 2004. június 29.
Ez az ismertető részletesen leírja EMF-modellek létrehozásának és egyszerű modellszerkesztők előállításának folyamatát. Az ismertető demonstrálja, hogy az EMF segítségével milyen könnyű eljutni egy egyszerű modelldefiníciótól a modell teljesen funkcionális szerkesztőjéig.
Az előállítandó modell az UML nyelvben így fest (a modell leírását Az Eclipse Modeling Framework
áttekintése című dokumentum tartalmazza):
Megmutatjuk, hogy az EMF-modellt hogyan lehet két különböző forrásból előállítani: Rational Rose modellből, illetve jegyzetekkel ellátott Java-felületek és osztályok készletéből.
A képernyőfelvételek az Eclipse SDK 3.0 verziója és az EMF 2.0 verziója alapján készültek.
Tartalom
tartalom
0. lépés: Előfeltételek
Az EMF futtató csomagja tartalmazza az EMF-generátort és a kapcsolódó bedolgozókat. A csomag telepítését követően bizonyosodjon meg arról, hogy ezek az Eclipse környezetben rendelkezésre állnak:
- Nyissa meg a "Súgó/Eclipse platform névjegye" párbeszédablakot.

- Kattintson a "Bedolgozó információk" gombra.

- A bedolgozók azonosító szerinti rendezéséhez kattintson a "Bedolgozó azonosító" fejlécre.
Ezt követően ellenőrizze, hogy a bedolgozók sárgával kiemelt készlete jelen van-e.

Az ismertetőhöz a fent nem kiemelt bedolgozók nem szükségesek. További bedolgozók megjelenhetnek a listán attól függően, hogy melyik EMF-csomagot telepítette.
tartalom
1.a lépés: A modell importálása a Rose eszközből
A könyvtármodell Rose-fájl itt található: library.mdl. Mentse ezt a fájlt a munkaállomásán.
Hozzon létre egy új EMF-projektet a munkaterületen:
- Nyissa meg a "Fájl/Új/Projekt..." párbeszédablakot.

- Bontsa ki az "Eclipse Modeling Framework" mappát és jelölje ki az "EMF Projekt" fájlt. Kattintson a "Tovább" gombra.

- Nevezze el a projektet mondjuk "könyvtár"-nak, majd kattintson a "Tovább" gombra.

- Jelölje ki a "Betöltés Rose osztálymodellből" és kattintson a "Tovább" gombra.

- Kattintson a "Tallózás" gombra és keresse meg a Rose modellfájlt.

- A rendszer megvizsgálja a Rose modellfájlt és alapértelmezett nevet javasol a generátor modelljére. A beviteli mezőben szükség szerint módosíthatja a nevet. Ezt követően kattintson a "Tovább" gombra.

- A Rose modellek általában több csomagot tartalmaznak. Válassza ki azt a csomagot, amelynek EMF-modelljét elő szeretné állítani - ebben az esetben az egyetlen "könyvtár" csomagot. Kattintson a "Befejezés" gombra.

- A rendszer létrehoz egy törzsmodellt (library.ecore) és egy generátormodellt (library.genmodel). Az utóbbi - mely a modell kódjának előállítását irányítja - megnyílik a a főnézetben.

tartalom
1.b lépés: A modell meghatározása jegyzetekkel ellátott Java segítségével
A modell Rose eszközből történő importálása helyett olyan Java felületek és osztályok készletével is el lehet kezdeni a munkát, melyek értelemszerűen megfelelnek a könyvtármodell osztályainak és számba vett típusainak. A szükséges jellemzők szemléltetéséhez ez a legminimálisabb mennyiségű kód. A rendszer ennek alapján összeállítja a törzsmodellt és a generátormodellt, melyek a hátralévő kód előállításának kiindulópontjai. A kód "@model" címkéket kap a Javadoc megjegyzés mezőiben, mely lehetővé teszi, hogy az Ecore objektumok attribútumaira és hivatkozásaira az alapértelmezéstől eltérő értékeket adjon meg.
Library.java
package org.eclipse.example.library;
import java.util.List;
/**
* @model
*/
public interface Library
{
/**
* @model
*/
String getName();
/**
* @model type="Writer" containment="true"
*/
List getWriters();
/**
* @model type="Book" containment="true"
*/
List getBooks();
}
|
Book.java
package org.eclipse.example.library;
/**
* @model
*/
public interface Book
{
/**
* @model
*/
String getTitle();
/**
* @model default="100"
*/
int getPages();
/**
* @model
*/
BookCategory getCategory();
/**
* @model opposite="books"
*/
Writer getAuthor();
}
|
Writer.java
package org.eclipse.example.library;
/**
* @model
*/
public interface Writer
{
/**
* @model
*/
String getName();
/**
* @model type="Book" opposite="author"
*/
java.util.List getBooks();
}
|
BookCategory.java
package org.eclipse.example.library;
/**
* @model
*/
public class BookCategory
{
/**
* @model name="Mystery"
*/
public static final int MYSTERY = 0;
/**
* @model name="ScienceFiction"
*/
public static final int SCIENCE_FICTION = 1;
/**
* @model name="Biography"
*/
public static final int BIOGRAPHY = 2;
}
|
Hozzon létre egy új Java-projektet a munkaterületen:
- Nyissa meg a "Fájl/Új/Projekt..." párbeszédablakot.

- Bontsa ki a "Java" mappát és jelölje ki a "Java Projekt" fájlt. Kattintson a "Tovább" gombra.

- Nevezze el a projektet mondjuk "könyvtár"-nak, majd válassza az "Külön forrás- és kimeneti mappa létrehozása" lehetőséget. Ezt követően kattintson a "Tovább" gombra.

- Alapértelmezésben a "src" alkönyvtárban felépül a kód, melynek kimenete a "bin" könyvtárba kerül. Módosítsa az alapértelmezett kimeneti mappát "library/runtime" értékre, majd nyomja meg a "Befejezés" gombot.

- Az újonnan létrehozott Java-projekt a Csomagböngészőben látható.

Az első Java-felület létrehozása:
- Kattintson a jobb egérgombbal a "src" mappára, majd válassza az előugró menü "Új/Felület" menüpontját.

- Adja meg a csomag és a felület nevét. Kattintson a "Befejezés" gombra.

- A rendszer elkészíti az új Java felületfájlt és megnyitja azt a főnézetben.

- Írja be (vagy illessze be) a Library.java felület kódját a fentiek szerint. Fordítson külön figyelmet a "@model" címkékre.

- A fájl mentéséhez válassza a "Fájl" menü "Mentés" menüpontját.

Hozza létre a másik két felületet (Book.java és Writer.java) és az osztályt (BookCategory.java) ugyanezzel a módszerrel. Az osztály létrehozásához természetesen az előugró menü "Új/Osztály" menüpontját kell választani az "Új/Felület" menüpont helyett.
Hozza létre az EMF-modelleket:
- A Csomagböngésző nézetben kattintson a jobb egérgombbal a "src" mappára, majd válassza az előugró menü "Új/Egyéb..." menüpontját.

- Bontsa ki az "Eclipse Modeling Framework" könyvtárat és jelölje ki az "EMF Modellek" fájlt. Kattintson a "Tovább" gombra.

- Válassza a "library/src/model" mappát.

- Módosítsa a fájl nevét "library.genmodel" értékre, majd kattintson a "Tovább" gombra.

- Jelölje ki a "Betöltés jegyzetekkel ellátott Java-modellből" lehetőséget és kattintson a "Tovább" gombra.

- Jelölje ki a "könyvtár" csomagot és kattintson a "Befejezés" gombra.

- A rendszer létrehoz egy törzsmodellt (library.ecore) és egy generátormodellt (library.genmodel). Az utóbbi - mely a modell kódjának előállítását irányítja - megnyílik a a főnézetben.

tartalom
2. lépés: Az EMF-modell kódjának előállítása
A generátormodell főobjektuma az egész modellt képviseli. A modell utódai a csomagokat képviselik, melynek leszármazottai az osztályozók (osztályok ás adattípusok, beleértve a felsorolási típusokat is). Az osztályok utódai az osztályattribútumok, hivatkozások és műveletek; a felsorolási típusok leszármazottai pedig az "enum" literálok.
- A modell kibontásakor megjelennek annak különféle elemei.

- Minden egyes objektumhoz tulajdonságok tartoznak. Ha a Tulajdonságok nézet nem látható, akkor kattintson a jobb egérgombbal a "Könyvtár" modellre, majd válassza az előugró menü "Tulajdonságok nézet megjelenítése" menüpontját.

- Ezek a tulajdonságok irányítják a kódgenerátor viselkedését.

A legtöbb esetben a tulajdonságok alapértékeit nem kell módosítani, de ez a lehetőség nagyfokú szabadságot biztosít a kód előállítása tekintetében. Ezt a témakört későbbi ismertetőkben vizsgáljuk majd meg részletesebben; most csak jelöljön ki különféle generátormodell objektumokat és vizsgálja meg azok tulajdonságait.
A kód előállítását a generátormodellben lehet kezdeményezni.
Ezt a modell bármely objektumán, jobb egérgombbal történő kattintással lehet elérni.
- Kattintson a jobb egérgombbal a "Könyvtár" csomagra, majd válassza az előugró menü "Modellkód előállítása" menüpontját.

- Vizsgálja meg az előállított fájlokat.

Az előállítást követően a rendszer - ha a modell a Rose eszközből került importálásra - létrehozza, illetve - amennyiben a modell jegyzetekkel ellátott Java nyelvben volt megadva - befejezi az osztályfelületeket és az "enum" osztályt, és készít egy új felületpárt a csomaghoz és a gyárhoz. Ezen túlmenően még két új, a felületek és kiegészítő segédprogramok megvalósítását tartalmazó csomag ("impl" és "util" utótaggal), valamint a modell bedolgozójához szükséges "plugin.xml" leírófájl is létrejön.
Ha a modell jegyzetekkel allátott Java-nyelvben van megadva, akkor a Problémák nézetben megjelenhet a következő figyelmeztetés: "A java.util.List import nincs használatban". Ez a figyelmeztetés nem rendellenes, és a továbbhaladást nem akadályozza meg.
Amennyiben módosítja a modellt, akkor azt bármikor ismételten elő lehet állítani, és a módosításokat a rendszer összefésüli a kódban esetlegesen megtett változtatásokkal. Arra is van lehetőség, hogy a modellkódnak csak egy részhalmazát állítsa elő: ehhez kattintson a jobb egérgombbal egycsomagra, osztályra vagy "enum" objektumra, majd válassza az előugró menü "Modellkód előállítása" menüpontját.
tartalom
3. lépés: A modell szerkesztőjének előállítása
Bármelyik modellből elő lehet állítani egy teljesen funkcionális Eclipse szerkesztőt. Alapértelmezésben a szerkesztő két bedolgozóból áll: a "szerkesztés" bedolgozó tartalmazza azokat az illesztőket, amelyek biztosítják a strukturált nézetet és végrehajtják a parancsalapú szerkesztést, a "szerkesztő" bedolgozó pedig a felhasználói felületet biztosítja a szerkesztő és a varázsló számára.
- A generátorban kattintson a jobb egérgombbal a "Könyvtár" modellobjektumra, majd válassza az előugró menü "Szerkesztés kódjának előállítása" menüpontját.

- Ismételten kattintson a jobb egérgombbal a modellobjektumra, majd válassza az előugró menü "Szerkesztő kódjának előállítása" menüpontját.

- A Csomagböngésző nézetben figyelje meg az "edit" és
"editor" utótagokkal előállított projekteket.

Amennyiben a modellt, valamint a szerkesztés és szerkesztő bedolgozóit egyetlen lépésben szeretné előállítani, ezt általában az előugró menü "Valamennyi előállítása" menüpontjának kiválasztásával érheti el.
A kódot a rendszer az előállítást követően automatikusan fordítja és - változás esetén - újrafordítja. Ha az automatikus felépítést a munkaterület beállításaiban letiltotta, a fordítást saját kezűleg kell elindítania:
- Válassza a "Valamennyi felépítése" menüpontot a "Projekt" menüből.

- Vizsgálja meg a Problémák nézetet. Ha a modellt a Rose eszközből importálta, akkor a "library", "library.edit" és "library.editor" projektekben nem jelenhet meg hiba.

- Ha a modellt jegyzetekkel ellátott Java nyelvben adta meg, akkor egy figyelmeztetés jelenik meg a "könyvtár" projektben.

- Kattintson kétszer a figyelmeztetésre, hogy kiderüljön, a kód melyik sora okozta azt. A hiba azért keletkezett, mert a kódgenerátor "List" értékről "EList" értékre módosította a "Könyvtár" két sokasági hivatkozásának visszatérési típusát, de a használaton kívüli importot nem távolította el. Ez egyszerűen saját kezűleg törölhető, illetve az Eclipse segítségével is elvégezhető, ha a kiválasztja a "Forrás" menü "Importok rendszerezése" menüpontot.

tartalom
4. lépés: Az előállított szerkesztő futtatása
Az új bedolgozók teszteléséhez az Eclipse egy másodpéldányát, az úgynevezett futtató munkaterületet kell elindítani. A bedolgozók ezen a munkaterületen fognak futni.
- A "Futtatás" eszköztár legördülő menüjén válassza ki a "Futtatás mint/Futtatási munkaterület" menüpontot.

- Várja meg, amíg az Eclipse platform második példánya elindul. Nyissa meg a "Súgó/Eclipse platform névjegye" párbeszédablakot, kattintson a "Bedolgozó információk" gombra, majd győződjön meg arról, hogy az előállított bedolgozók jelen vannak.

A könyvtármodell varázslója segítségével most létre lehet hozni a modell új példányát.
- Nyissa meg a "Fájl/Új/Projekt..." párbeszédablakot.

- Bontsa ki az "Egyszerű" könyvtárat és jelölje ki a "Projekt" fájlt. Kattintson a "Tovább" gombra.

- Nevezze el a projektet és kattintson a "Befejezés" gombra.

- Kattintson a jobb egérgombbal a projektre, majd válassza az előugró menü "Új/Egyéb..." menüpontját.

- Bontsa ki az "EMF-modell létrehozása varázsló - példák" könyvtárat és jelölje ki a "Könyvtármodell" fájlt.
Kattintson a "Tovább" gombra.

- Adja meg a könyvtármodell fájlnevét. Gondoskodjék róla, hogy a fájl kiterjesztése ".library". Ezt követően kattintson a "Tovább" gombra.

- Modellobjektumként jelölje meg a "Könyvtár" csomagot és kattintson a "Befejezés" gombra.

- Az újonnan létrehozott könyvtármodell megjelenik a főnézetben.

A szerkesztőben a főobjektum a "My.library" erőforrásnak felel meg. Alatta egyetlen könyvtár található: a varázslóban modellobjektumként kijelölt objektum.
- Bontsa ki a "platform:/resource/librarytest/My.library" erőforrást a
"Könyvtár" objektum láthatóvá tétele érdekében, majd jelölje azt ki.

- Ha a Tulajdonságok nézet nem látható, akkor kattintson a jobb egérgombbal a "Könyvtár" objektumra, majd válassza az előugró menü "Tulajdonságok nézet megjelenítése" menüpontját.

- A Tulajdonságok nézetben kattintson a "Név" tulajdonság "Érték" oszlopára, majd nevezze el a könyvtárat. Az Enter billentyű leütését követően a rendszer a fő nézetben frissíti a címkét.

- Kattintson a jobb egérgombbal a könyvtárra, majd válassza az előugró menü "Új utód/Író" menüpontját.
A rendszer felvesz egy új írót a könyvtárba.

- A Tulajdonságok nézetben adja meg az író nevét.

- Könyvet hasonlóképpen lehet a könyvtárba felvenni.

- A Tulajdonságok nézetben a könyv jellemzői és hivatkozásai szerkeszthetők.

- A modell XMI-formátumban történő megtekintéséhez mentse, zárja be, majd ismételten nyissa meg a modellt a szövegszerkesztő segítségével.

tartalom