Generování modelu EMF pomocí schématu XML (XSD)

Poslední aktualizace: 21. května 2008

Tento výukový program nabízí podrobný popis vytvoření modelu EMF ze schématu XML a následného vygenerování jednoduchého editoru modelů. Při procházení tohoto výukového programu zjistíte, do jaké míry EMF usnadňuje přechod od jednoduché definice modelu ve schématu XML k plně funkčnímu editoru pro tento model.

Snímky obrazovky jsou založeny na Eclipse SDK verze 3.2.0 RC6 a EMF verze 2.2.0 RC6a.

Soubor schématu XML používaný v tomto výukovém programu se nachází zde: library.xsd. Uložte jej někam na vaši pracovní stanici pro pozdější použití.

Základní pravidla mapování ze schématu XML na Ecore jsou:

Z perspektivy modelování není schéma XML stejně expresivní jako Ecore. Nemůže ani specifikovat typ cíle odkazu, ani definovat obousměrné odkazy (ačkoli EMF poskytuje svůj vlastní způsob překročení těchto omezení).


Obsah

Krok 0: Nezbytné předpoklady
Krok 1: Importovat model ze schématu XML
Krok 2: Vygenerovat kód modelu EMF
Krok 3: Vygenerovat editor pro model
Krok 4: Spustit vygenerovaný editor


 obsah

Krok 0: Nezbytné předpoklady

Tento výukový program vyžaduje jak balík běhového prostředí EMF Runtime, který obsahuje generátor EMF a související moduly plug-in, tak balík běhového prostředí definice schématu XML (XSD). Druhý z uvedených balíků poskytuje model EMF schématu XML, na který se EMF spoléhá při čtení schémat. Pro jednoduchost je k dispozici kombinovaný balík EMF a XSD SDK. Po instalaci balíku(ů) ověřte, zda jsou balíky k dispozici ve vašem prostředí Eclipse:

Další moduly plug-in EMF a XSD nejsou v rámci tohoto výukového programu nezbytné. Mohou a nemusí se objevit, podle toho, které balíky jste nainstalovali.


 obsah

Krok 1: Importovat model ze schématu XML

Vytvořte nový projekt EMF v pracovním prostoru:


 obsah

Krok 2: Vygenerovat kód modelu EMF

Model generátoru zobrazuje kořenový objekt, představující celý model. Tento modelový objekt má podřízené prvky, které představují jeho balíky, jejichž podřízené prvky dále představují klasifikátory (třídy a datové typy, včetně ve výčtu uvedených typů). Podřízené prvky tříd jsou atributy tříd, odkazy a operace, podřízené prvky ve výčtu uvedených typů jsou výčtové literály.

Ve většině případů není nutno měnit výchozí hodnoty vlastností, avšak tyto volby mohou poskytovat velký podíl na řízení kódu, který je generován. Nyní vyberte několik různých modelových objektů generátoru a sledujte jejich vlastnosti.

Model generátoru je také místo, ve kterém budete zahajovat generování kódu. Klepnutím pravým tlačítkem myši na objekt v modelu je možno vygenerovat kód pro tento objekt.

Po vygenerování budou vytvořena rozhraní tříd a třída výčtu a bude vytvořena nová dvojice rozhraní pro samotný balík a pro továrnu. Přibudou také dva nové balíky s příponami "impl" a "util", které obsahují implementace rozhraní a další třídy obslužného programu, a oba typy souborů typu manifest pro modul plug-in modelu: "plugin.xml" a "MANIFEST.MF".

Pokud model změníte, lze jej znovu vygenerovat a provedené změny budou sloučeny s jakýmikoli ručně provedenými úpravami, které jste u kódu provedli. Je možno také selektivně vygenerovat podmnožinu kódu modelu tak, že klepnete pravým tlačítkem myši na balík, třídu nebo objekt výčtu a v rozevírací nabídce vyberete volbu "Generovat kód modelu".


 obsah

Krok 3: Vygenerovat editor pro model

Pro kterýkoli model je možno vygenerovat plně funkční editor Eclipse. Ve výchozím nastavení je rozdělen mezi dva moduly plug-in: modul plug-in pro úpravy obsahuje adaptéry poskytující strukturovaný pohled a provádějící příkazovou úpravu modelových objektů, modul plug-in "editor" poskytuje uživatelské rozhraní pro editor a průvodce.

Obecně platí, že pokud si přejete vygenerovat moduly plug-in modelu, editace a editoru v rámci jednoho kroku, můžete to provést pomocí volby "Vygenerovat vše" v rozevírací nabídce. Tím se rovněž vytvoří modul plug-in testů obsahující generovaný kód testu JUnit.

Kód by se měl zkompilovat automaticky při svém vygenerování a při každé změně by se měl zkompilovat znovu. Pokud vypnete volbu automatického sestavování v předvolbách pracovní plochy, máte možnost kompilaci zahájit ručně:


 obsah

Krok 4: Spustit vygenerovaný editor

Pro otestování nových modulů plug-in musí být spuštěna druhá instance Eclipse. Moduly plug-in poběží na této pracovní ploše.

Nyní je možno použít průvodce modelu Knihovna pro vytvoření nové instance modelu.

Kořenový objekt v tomto editoru odpovídá prostředku My.library. Pod ním leží jednoduchá knihovna, objekt vybraný jako modelový objekt v průvodci.


obsah