|
Jeroen: EMF is based on strong containment, like a tree: every element of a model has a single parent. This can be very restrictive, and is actually at the heart of many of the problems of EMF, in particular with scaling, multiple users etc.
MetaEdit+ is more object-oriented: elements just exist on their own, without any single particular parent; they can be referred to by many other elements, e.g. a graph refers to its objects, and an object refers to its properties. The objects aren't owned by the graph, though: the same object can be in many graphs.
Everything is loaded by starting from the projects, which are simple flat collections of graphs. Once created and committed, an object remains in the repository forever (until an explicit garbage collect of the repository); of course if there are no references to it from anywhere, you won't be able to get to it. The slight exception to that is that once you have loaded an object in a particular MetaEdit+ session, it will remain in memory until you exit (unless you run out of memory and the cached objects are flushed), even if there are no more references to it. This lets you delete an object from a graph and still be able to find it a few minutes later from the Type Browser or Component Selection Tool. Both of these show only loaded objects, not every object of that type in the whole repository (which would of course be too slow in a large repository, and impossible in a multi-user repository).
Just to correct one thing: there is actually a clear distinction between diagram and graph, and in general between representation and concept. You can have a graph G containing object O, and with diagrams D1 and D2, both containing representations of O, OR1 and OR2. If you remove OR1, object O remains in the graph G, because it still has a representation in D2. If you remove OR2 too, O is removed from G because it no longer has a representation. This behavior can be changed by the setting "Automatically delete unused objects" - I wouldn't advise changing that in general, because it can be confusing to have a graph with a single diagram, remove all the objects, and then discover that generators still find them all!
Sections http://www.metacase.com/support/45/manuals/meplus/Mp-6_2.html - 6.2 -6.3 in the MetaEdit+ User Guide and http://www.metacase.com/support/45/manuals/mwb/Mw-1.html - Chapter 1 in the Workbench User Guide talk more about these areas.
Hope this helps,
Steve
|