Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Domain specifikus nyelvek Eclipse Modeling.

Hasonló előadás


Az előadások a következő témára: "Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Domain specifikus nyelvek Eclipse Modeling."— Előadás másolata:

1 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

2 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ó

3 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”

4 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

5 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

6 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

7 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

8 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

9 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

10 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

11 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 11 EObject interfész  Minden interfész ezt terjeszti ki

12 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ó

13 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

14 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

15 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”

16 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

17 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

18 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

19 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

20 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…

21 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á

22 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

23 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 23 Generator struktúra

24 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 24 EMF.Edit és a minták

25 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

26 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

27 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

28 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

29 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

30 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

31 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

32 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

33 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

34 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

35 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

36 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

37 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 37 JET példa

38 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 38 JET példa JET fejléc

39 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 39 JET példa Bemenő paraméter definició

40 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 40 JET példa Céldokumentum kezdete

41 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 41 JET példa Ciklus a bemenő paraméter alapján

42 Budapest University of Technology and Economics Fault-tolerant Systems Research Group 42 JET példa Ciklusmag

43 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ó!

44 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!

45 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  …

46 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ő

47 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)


Letölteni ppt "Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Domain specifikus nyelvek Eclipse Modeling."

Hasonló előadás


Google Hirdetések