Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Domain specifikus nyelvek Eclipse Modeling Framework Technológia részletesen
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 2 EMF - kódgenerálás A generálás alapja a genmodel −Platform specifikus −Az ecore modell alapján készül −részletes Létrejön −Alapértelmezett editor −Perzisztencia kezelés −Modell manipuláció
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 3 EMF - kódgenerálás Mi jön létre? −Néhány Eclipse plug-in Minden esetre megoldás? −NEM! −Nem feltétlenül kényelmes editor −Nem feltétlenül elégséges „üzleti logika”
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 4 EMF – a generált komponensek Tree editor Modell manipuláció Modell tárolás
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 5 EMF.Model A modell kód a PIM 100%-os implementációja Hatékony perzisztencia kezelés XML fájlok támogatásával 100% folytonosság a modell és a kód között −Előre tudjuk mit kapunk −Általában nem akarjuk módosítani
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 6 EMF.Model Lehetséges kiegészítések −Saját fájlformátum támogatás ●Parser ●Okos szerkesztő −Extra információk beszúrása a fájlokba ●Kerülendő ●Inkább legyen a PIM része
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 7 EMF.Model – EClass implementáció A generált implementáció egy előre definiált keretrendszert terjeszt ki
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 8 EMF.Model – EClass implementáció EAttribute -> get és set metódusok EReference −„many” -> get metódus −„one” -> get és set metódus
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 9 EMF.Model – EClass implementáció Minden osztály tartalmaz framework-specifikus elemeket −Reflektiv set/get −Kezőértékek tárolása és inicializálása
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 10 Az ecore keretrendszer Igen összetett −Csak néhány elemét nézzük át Általában csak egy kis részét kell megérteni a használathoz −Az EObject interfészt −A reflexiót −Az értesítési mechanizmust A keretrendszer viselkedést az EObjectImpl és gyerekei valósítják meg
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 11 EObject interfész Minden interfész ezt terjeszti ki
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 12 eClass() Gyakran használt metódus Minden üzleti objektum megkaphatja a saját EClass reprezentációját Hasonló a Java getClass() hívásához −reflexió
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 13 eResource() Egy objektumhoz rendelhetünk egy Resource példány −Resource eResource() Az erőforrás a perzisztens tárat reprezentálja
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 14 EAttribute implementáció Az attribútum get, set metódussá alakul Általában nem akarjuk módosítani az implementációt
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 15 EReference implementáció Hasonló az EAttribute-hoz A típus itt egy másik objektum lesz Néhány kiegészítés szükséges, ha nem tartalmazás jellegű reláció van −Az objektum más tárban is lehet ●Referencia-feloldás −Ellenőrizni kell a kétirányú referenciák integritását ●„opposite”
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 16 EOperation implementáció Az ecore modellben metódusokat is megadhatunk Nincs támogatás a szemantika definiálására Ötlet: −Az ecore modellben definiáljuk a metódus ●Nevét ●Paramétereit, típusukat ●Visszatérési típust −Implementáljuk Java-ban A kódgenerátor csak vázat generál, amit kitöltünk
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 17 EOperation implementáció Első generálásnál az EMF egy Exception-t dobó implementációt készít Át kell venni a felügyeletet −Beállítjuk taget NOT-ra −Implementáljuk a metódust
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 18 EOperation implementáció Ha definiáltunk egy metódust −Hozzáadja az interfészhez −Egy dummy implementációt készít az implementáló osztályban
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 19 Értesítés implementáció Minden modell objektum támogatja az értesítés-küldést −Observer minta −Event objektumok az értesítésben −A genmodel-ben beállíthatjuk, hogy mi váltson ki értesítést
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 20 Értesítés implementáció A megvalósítás részletei nem fontosak −Tipikusan sose akarjuk módosítani…
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 21 EMF.EDIT Szerepe −A GUI és a modell szétválasztása −GUI független akciók implementálása Nagyobb eséllyel módosítjuk −Módosítjuk az elem provider-t −Új parancsokat adunk hozzá
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 22 Generator minta Minden modell objektumhoz egy adapter jön létre az EMF.Edit-ben −Neve: ItemProvider −Pl. ArtistItemProvider Az item provider az org.eclipse.emf.edit. provider.ItemProviderAdapter −Alapértelmezett implementáció az alap funkcionalitáshoz −Általában felüldefiniáljuk bizonyos részét
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 23 Generator struktúra
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 24 EMF.Edit és a minták
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 25 Címkék változtatása Tipikus példa a testre szabásra a címkék változtatása −A genmodel-ben megadhatjuk, hogy egy objektum mely attribútuma jelenjen meg címkeként −Mi van, ha többől akarjuk összerakni? Változtatni kell a ItemProvider.getText-en −Megváltoztatjuk tag-et −Saját implementációt írunk
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 26 Ikon változtatása Másik tipikus példa az ikonok megváltoztatása A genmodel egy egyszerű ikont rendel minden elemhez −Az elemek az emf.edit/icons/obj16 és ctool16 könyvtárban találhatóak ●Minden elemhez, illetve minden elem létrehozási lehetőséghez A legegyszerűbb a fájlok lecserélése saját ikonra
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 27 Parancsok használata EMF.Edit-ben Minden módosítás parancsokon (command) keresztül történik −Menü akció −Attribútum változtatás −Drag-n-drop A keretrendszer generált és általános kód keverékét hsaználja −Common Command Framework (CCF) −EMF.Edit Generated Commands
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 28 Parancsok használata EMF.Edit-ben A parancsok használata a template method mintára épül Az ItemProvider implementálja a createCommand() metódust, a kéréseket továbbítja protected metódusaiknak −createAddCommand() −createRemoveCommand() −… A módosítás során a protected metódusok egyikét módosítjuk általában
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 29 Parancsok használata EMF.Edit-ben : Példa Egyszerű példa: loggolás hozzáadása Bonyolultabb példák esetén az összetett parancsok módosítása is szükséges lehet
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 30 EMF.Editor Az EMF.Editor generálja az SWT/JFace kódot a grafikus editorhoz Két fő opció −Hagyjuk ahogy van −Újraimplementáljuk, mivel köze sincs ahhoz, amit akarunk
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 31 Mi generálódik? Editor −Fastruktúra −Események – akciók összekötése −Workbench elemek beállítása Menük Varázsló (új modell…) Plugin osztály
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 32 Konklúzió – EMF.Edit Az editor a leggyengébb láncszem Több próbálkozás van a javításra Egyik: GEF – Graphical Editing Framework −Eclipse túránk következő állomása
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 33 Kódgenerálás a gyakorlatban - keretrendszerek Eclipse Eclipse Modeling Framework Java Emitting Templates J2EE Velocity (Jakarta) JSP (XML/HTML).NET CodeDOM
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 34 CodeDOM.NET alapú nyelvek kezelése Forráskód – DOM – forráskód transzformációk parser code generator nyelvek közötti fordítás dinamikus forráskód-generálás és fordítás
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 35 Velocity/JSP Velocity Általános template nyelv Java objektumok használata Könnyen integrálható modellező eszközökbe Szöveges kimenet JSP Elsősorban XML alapú dokumentumokhoz (Web) J2EE-be integrált
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 36 Java Emitting Templates Java Emitting Temlates (JET) JSP alapú template nyelv Szabad kimeneti formátum (Szöveges) Java objektumok átadhatóak
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 37 JET példa
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 38 JET példa JET fejléc
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 39 JET példa Bemenő paraméter definició
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 40 JET példa Céldokumentum kezdete
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 41 JET példa Ciklus a bemenő paraméter alapján
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 42 JET példa Ciklusmag
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 43 Kódgenerálás - összefoglaló A program-generálásból indult UML -> Java, C++, …. ma már széles körben használt dokumentum generálás (web) report generálás (XML, XLS, CSV, nyomtatás) Széles körű támogatottság EMF – JET Velocity CodeDOM NEM CSAK az MDA környékén használható!
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 44 EMF extrák – UML Org.eclipse.uml2 – UML2 plugin −Modell perzisztencia −Modell manipuláció −Default (tree) editor −Több ipari tool is használja ●Egyszerű eyüttműködés!
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 45 Emf extrák - OCL OCL kényszerek kezelése Tetszőleges EMF modell felett Meta- és példány szinten Interaktív OCL editor …
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 46 EMF extrák - query Egyszerű, SQL szerű query api Modellek elemek kinyerésére Könnyen programozható Rugalmas Bővíthető
Budapest University of Technology and Economics Fault-tolerant Systems Research Group 47 EMF extrák - reldb Modell sorosítás/betöltés relációs adatbázisba Hibernate alapú HQL alapú lekérdezések Projekt: Teneo (EMFT sub)