Tavaly hallgattam a tárgyat, és mi úgy csináltuk anno, hogy a strukturális és a dinamikus részeket leíró metamodellek külön-külön ecore fájlokban voltak. Nálunk is szükség volt arra, hogy a dinamikusban legyenek referenciák a strukturális metamodellre, így a következőket tettük:
A dinamikus metamodellt megnyitjátok Sample Ecore Editorral (fastruktúra), és kerestek egy nagy fehér területet az editorban. Jobb klikk -> Load Resource.. Itt vagy az első lehetőségnél ahogy defaultban feljött az ablak a szövegbeviteli mezőbe beírjátok a strukturális metamodellnek az NS URI-ját, vagy a gombokkal megkeresitek a strukt. metamodellt tartalmazó projektet, és azon belül az ecore fájlt.
Ekkor elvileg megjelent a strukturális metamodell is egy helyen a dinamikussal (látszólag egy ecore fájlban). Hogyha most elmentitek az ecoret, és megnyitjátok az .aird-ben (Siriusos editor), akkor elvileg fel tudtok venni új elemeket a metamodellbe az Add paranccsal, és ott elvileg látszódnia kell a strukturális metamodell elemeinek is.
Miután összeraktátok, hogy mi kell nektek, azaz mire akartok referálni a strukt. metamodellből, akkor ideje lenne kódot generálni. Viszont ehhez kell egy új codegen fájl.
Laboron tanult módon jobbklikk a project explorerben -> new -> New Generator Model. Megadjátok neki, hogy a metamodell a dinamikus metamodell legyen (ecore fájl), és azt hiszem a következő fülön ahol ki kell választani, hogy tényleg melyik ecoret / metamodellt akarjátok, akkor látjátok egymás alatt a két ecorenak a gyökérelemét, mint ahogy a 2. lépés végén is.
Nah ekkor kell figyelni és rá kell klikkelni arra, hogy a strukturális metamodellhez használja a hozzá tartozó (referenced) codegent. A mellette lévő négyzetet értelemszerűen ki kell jelölni az ablak alsó részén. Ekkor ha jól csináltátok, akkor a strukturálisra vonatkozó részek elszürkülnek az ablakban. Most ki kell választani a megmaradt dinamikus metamodell melletti kis jelölőnégyzetet, és next-next-finishhel meglesz a genmodel.
Ha nyomtok egy jobb klikk generate allt ezen az új genmodelen, akkor elvileg kulturáltan fogja legenerálni a kódot, azaz nem lesz olyan hogy a dinamikus metamodellhez legenerált kódban lennének a strukturális metamodellnek az osztályai.
Indítsatok egy Runtime eclipset, abban hozzatok létre egy strukturális példánymodellt, és vegyetek fel bele olyan elemeket, amikre hivatkoztok majd a dinamikus példánymodellből. Ha ez megvan, akkor hozzatok létre egy dinamikus példánymodellt, de mielőtt beleraknátok elemeket fogjátok meg a strukturális példánymodellt és húzzátok bele az egérrel a dinamikus példánymodell editorába. Azaz ha jobban megnézitek így egy resource setbe kerül a dinamikus és a strukturális példánymodell. Így most már elvileg hivatkozni is fogtok tudni a dinamikusból a strukturálisba.
Disclaimer: a fenti szövegben a dinamikus/strukturális meta/példánymodell kifejezéseket természetesen úgy értettem, hogy a dinamikus/statikus (strukturális) részeket leíró meta/példánymodellek.
Lehet, hogy valamit kihagytam, mert emlékezetből írtam. Ha elakadtok szóljatok, esetleg válaszba küldjetek screenshotot és akkor pontosítom a leírtakat. Sok sikert!