1 EMF2VIATRA Live prototípus Valahol az erdőben, 21/11/2008
2 Cél Eclipse EMF előnyei: Elterjedt, kiforrott technológia Ipari alkalmazásokban is elfogadott Viatra előnyei: Lehetőség komplex modelltranszformációkra Inkrementális mintaillesztés, triggerek Cél: EMF „működés” Viatra modelltér felett Lehetőleg minimális változtatások EMF oldalon Folyamatos kétirányú szinkron az EMF EObject struktúra és a Viatra modelltér entitásai/relációi között (Alternatív lehetőség: EMF feletti mintaillesztés közvetlenül ) Valahol az erdőben, 21/11/2008
3 Ötlet EMF elemek perzisztálása Viatra modelltérben Ötlet: CDO technológia Viatra notifikációk delegálása EMF felé Alacsony szintű notifikációkból (new entity/relation) magas szintűt delegálni (new ENotification) Valahol az erdőben, 21/11/2008
4 Perzisztálás Statikus rész Ecore.ecore kompakt viatra-ecore metamodell Resource Kitüntetett elem alatt lévő modellrész metamodell és modell importer Dinamikus rész: ResourceSet Viatra framework Modell manipuláció saját EStore implementáción keresztül (ViatraStore) Saját InternalEObject tárolja a hozzá tartozó Viatra elemet Reflective Feature delegation (minden eGet()-, eSet()-en keresztül) Valahol az erdőben, 21/11/2008
Nem internál elemek változatlanok EMF felöl átlátszó EStoreEObjectImpl Delegál minden manipulációs hívást egy ESore implementációnak ViatraObjectImpl Tárolja az adott EObject-hez tartozó Viatra Entity-t. 5 Osztályhierarchia Valahol az erdőben, 21/11/2008 InternalViatraObject EStoreEObjectImpl EObjectImpl InternalEObject ViatraObjectImpl EObject BasicEObjectImpl CompanyImpl
6 Példa : Company.getName() Valahol az erdőben, 21/11/2008 EStoreEObjectImpl CompanyImpl ViatraStore:EStore VIATRA framework getName() eDynamicGet(name_EStrFeature) get(company_Eobj, name_EStrFeature) EMF2Viatra getViatraEntity(company_Eobj) getViatraRelation(name_EStrFeature) Viatra2EMF getObject (company_viatraEntity, name_viatraRelation)
7 Notifikáció delegálás Cél: Ha a ViatraStore által látott kép változik, akkor legyen notifikáció Kihívás: Egy adott EMF notifikáció különböző VIATRA szekvenciából állhat elő ViartaNotificationListener ICoreNotificationListener implementáció Főleg instanceOf változás figyelése Resource állítja rá a framework-re Valahol az erdőben, 21/11/2008
8 TODO Implementációs TODO Hiányos ViatraStore Hiányos ViatraNotificationListener Koncepcionális TODO Nem perzisztált EMF elemek állapotának tárolása Valahol az erdőben, 21/11/2008