Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaLóránd Kerekes Megváltozta több, mint 10 éve
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 a @generated 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 a @generated 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)
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.