My Projects


GMF, the Graphical Modeling Framework supports the creation of graphical editors. For beginners it is very hard to learn. The included wizard has a lot of disadvantages, but it is o.k. for a start. Furthermore the GMF models are very complex and hard to handle. There are different solutions to shorten the time needed for creating a graphical editor:

EuGENia
… supports the development of GMF based editors using annotations in your metamodel (*.ecore) - preferably generated using Emfatic. Dimitrios Kolovos has written a nice tutorial and created a screencast.
ATLflow
Like in EuGENia - annotations in the metamodel are used to create a graphical editor. It is part of a complete tool chain for model transformations based on ATL. It is used for bootstrapping parts of ATLflow itself.
GenGMF
… uses a completely different approach. The GMF models are created from template-like tree structures. A template consist of GMF elements - just ready for duplicating for each metamodel element it is associated with. It is recommended to have some experience with the GMF models, before starting with GenGMF. GenGMF has been developed to support the creation of editors with a lot of metamodel elements.

Both annotation based solutions are not able to cover all the features possible with GMF, because the GMF models are created using the information stored in the metamodel. The template based approach GenGMF offers a lot more flexibility at the cost of a more complex model.

I am happy to announce that I have finished the writing part of my diploma thesis and that everything has been bundled and filed to the university.

The thesis was written about the creation of a graphical editor for a model driven software development process. The abstract follows below:

„base“ is a model-driven software development environment for internal use by „b+m Informatik GmbH Berlin“. For editing models in „base“ a tree-based editor has been used in the past, which builds on the Eclipse Modelling Framework (EMF). A tree representation in particular is difficult to manage for the dataflow model, because conceptionally the model represents a graph in the mathematical sense of the word. The objective of this thesis was essentially optimizing the developmental process in „base“. To this end, a graphic editor for dataflow models was developed on the basis of the Graphical Modelling Framework (GMF). The meta-model, on which the dataflow models are based, contains 20 element types, which can be placed directly in the editor’s drawing area. The complexity of the models used in GMF increases over proportionally though with the number of element types and is consequently difficult to administrate. This was the reason for developing „GenGMF“ instead of implementing a graphic editor with GMF itself. „GenGMF“ is a Domain Specific Language with an appropriate generic model-to-model transformation for the automatic construction of GMF models. The dataflow editor was modeled using this new development for the construction of graphic editors. Using „GenGMF“ for development of the dataflow editor allowed construction of a „GenGMF“ model requiring 72% less model elements than generated GMF models. In addition, it did not have to be manually adjusted. The result is ease of use for presentation in the graphic dataflow editor.

If you have any questions regarding the thesis, „GenGMF“ or „base“ just send me a note.

Step 1 (real live): You have the wish to get a cup of tea of “Pai Mu Tan”.

Step 2 (model): You are creating a wish-model containing an element of type “Cup” which has an attribute named “content” of type string and the value “Pai Mu Tan”. The model is the digital representation of a real-life-wish.

Step 3 (metamodel): You want to create other wishes too and you are designing a metamodel. The wish-metamodel contains a the root element “Wishes” containing a many-containment reference “wishes” to the type “Wish”. The abstract type “Wish” is derived by the types “Cup”, “Book”, “FreshAir” and “OtherWish”. “Cup” has an attribute “content” while “Book” has an attribute “title” of type String. “FreshAir” does not need an attribute and “OtherWish” has no meaningful attributes. Using the wish-metamodel you could express a lot of wishes.

Step 4 (editor): You want others to express their wishes. Let’s create an editor, they could use to do that. Using Eclipse and your metamodel it is really simple to create an EMF based tree editor. You are happy.

Step 5 (great models): Your models grow (you have extended your metamodel with other wish-types) and you want to group your wishes by occasion (Birthday, Christmas, other) if they are of long-term, short-term or just-now. You are doing that by extending the metamodel with other types (AbstractOccasion, Birthday, Christmas, AbstractWhen, LongTerm, ShortTerm, JustNow) and some connection types connecting your wish with when they should be active. it is hard to keep the overview about all your wishes - you want a better editor (which is a wish-type of it’s own).

Step 6 (graphical editor): You have chosen GMF as your editor framework. It is great - you could express all you want - your wishes, the occasions and whether your wishes are more short- or long-term in a model driven way and without writing one single line of java-code. Now you have the overview about all the wishes.

Step 7 (more wish-types): Every time you create a new wish-type in your metamodel you have to copy-and-paste-and-change some parts of the GMF-models to express the editor object for your new type. You want more abstraction like a templating engine for GMF-models.

I am currently developing such a model-templating engine called GenGMF. You could create a template-tree for the GMF-Graph and for the GMF-Map models having place-holders for the type-names you want to instantiate (e.g. “__TYPENAME__NodeFigure”) and some modelled instructions how to instantiate the tree in the GMF-models. It is even possible to change the instantiated trees on-the-fly. For example - I reengineered the sample editor from one of my last posts. The rectangle and the elliptic nodes are instantiated from the same template (which only knows rectangles). A XTend-based creation Filter changes the Rectangle to Ellipse - the rest of the tree is the same. Post processing (also via XTend) is also available to insert more stuff into the generated models.