EMF-modell készítése XML-séma (XSD) segítségével
Utolsó frissítés: 2004. június 29.
Ez az ismertető részletesen leírja EMF-modellek XML-sémából történő 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.
A képernyőfelvételek az Eclipse SDK 3.0 verziója és az EMF 2.0 verziója alapján készültek.
Az ismertetőben használt XML-séma fájl itt található: library.xsd. Mentse ezt a fájlt a munkaállomásán későbbi használatra.
Az XML-séma Ecore-formátumra történő leképezésének alapvető szabályai a következők:
- A séma leképzése EPackage csomagra történik. Eltérő cél névtartományt deklaráló sémák leképzése saját EPackage csomagra történik.
- Összetett típusdefiníció leképzése EClass osztályra történik.
- Egyszerű típusdefiníció leképzése EDataType típusra történik.
- Attribútumok és egymásba ágyazott elemek deklarációjának leképzése EAttribute és EReference osztályokra történik (típustól függően).
- Felsőszintű elemek és attribútumok deklarációinak tárolására a rendszer létrehozza a DocumentRoot nevű EClass osztályt.
Modellezési nézőpontból az XML-séma nem olyan kifejező, mint az Ecore. Nem csak a hivatkozási cél típusát nem tudja megadni, hanem kétirányú hivatkozásokat sem tud meghatározni (habár az EMF ezeket a korlátozásokat a saját módján kiküszöböli).
Tartalom
tartalom
0. lépés: Előfeltételek
Az ismertetőhöz szüksége lesz az EMF futtatócsomagra (mely az EMF-generátort és a kapcsolódó bedolgozókat tartalmazza) és az XML Schema Infoset Model (XSD) futtatócsomagra. Az utóbbi csomag tartalmazza az XML-séma EMF-modelljét, melyre az EMF a sémák beolvasásánál támaszkodik. Az egyszerűség kedvéért az egyesített EMF és XSD SDK csomag is rendelkezésre áll. A csomag(ok) 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 EMF és XSD bedolgozók nem szükségesek. További bedolgozók megjelenhetnek a listán attól függően, hogy mely csomagokat telepítette.
tartalom
1. lépés: A modell importálása XML-sémából
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" könyvtárat é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 XML-sémából" lehetőséget és kattintson a "Tovább" gombra.

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

- Ha fellép az alábbi hiba, akkor ki kell lépnie az Eclipse programból és meg kell javítania az XML-értelmezőt.
Ezt a Sun JDK bizonyos változatainak Crimson DOM megvalósításában található
hiba okozza. További információk fellelhetők az EMF webhelyén.

- A rendszer megvizsgálja a sémát és a generátormodellre alapértelmezett nevet javasol. A beviteli mezőben szükség szerint módosíthatja a nevet. Ezen túlmenően választhatja az "XML-séma - Ecore leképezés létrehozása" lehetőséget is a sémára használatos leképezés modelljének előállításához. Ezt követően kattintson a "Tovább" gombra.

- Egyetlen sémából általában több csomag is készülhet, ha az olyan sémákat tartalmaz, melyek különféle cél névtartományokat deklarálnak. 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átor modellt (library.genmodel). Amennyiben fentebb az "XML-séma - Ecore leképezés létrehozása" lehetőség volt megjelölve, a rendszer leképzési modellt (library.xsd2ecore) is készít. Ennek megnyitásával meg lehet nézni, hogy a séma hogyan képződött le az Ecore formátumba. A generátormodell automatikusan megjelenik 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 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 "Library" 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. 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ásával lehet elérni.
- Kattintson a jobb egérgombbal a "Library" 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 létrehozza 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 csomag is létesül ("impl" és "util" utótaggal), melyek a felületek és kiegészítő segédprogramok megvalósítását tartalmazzák, valamint a "plugin.xml" leírófájl a modell bedolgozójához.
Ha módosítja a modellt, akkor azt ismételten elő lehet állítani, és a módosításokat a rendszer összefésüli az kódban esetlegesen megtett változtatásokkal. Arra is van lehetőség, hogy a modellkódnak egy részhalmazát állítsa elő: kattintson a jobb egérgombbal a csomagra, 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 "Library" 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ókat 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 is elindíthatja:
- Válassza a "Valamennyi felépítése" menüpontot a "Projekt" menüből.

- Vizsgálja meg a Problémák nézetet. A "library", "library.edit" és "library.editor" projektekben nem jelenhet meg hiba.

tartalom
4. lépés: Az előállított szerkesztő futtatása
Az új bedolgozók teszteléséhez az Eclipse egy második példányát, az úgynevezett futtató munkaterületét 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ár modell 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 a "Simple" 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ás 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.

- Jelölje meg a "Library" csomagot modellobjektumként é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
"Library" 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 "Library" 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/Writer" 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 sémaalapú XML sorbafejtés megtekintéséhez mentse, zárja be, majd ismételten nyissa meg a modellt a szövegszerkesztő segítségével.

tartalom