- Xtext 2.1 by Sven Efftinge
- OCL by Ed Willlink
Slides are also available.
- Acceleo Interpreter by Stéphane Bégaudeau
- EMF-IncQuery by István Ráth
- EMF Store Demo by Maximilian Koegel
- EMF Profiles by Hugo Brunelière
- MPS by Markus Völter
- EMF Compare by Mikael Barbero
- EEF alternative generation by Goulwen Le Fur
- GMF Tooling revival by Mariot Chauvin
Showing posts with label GMF. Show all posts
Showing posts with label GMF. Show all posts
November 8, 2011
Modeling Symposium @ EclipseCon Europe 2011
The modeling symposium at EclipseCon Europe 2011 was really nice with several talks on various topics related to modeling. I would like to thank all presenters and particularly István who filmed all presentations with his smartphone.
September 15, 2011
Modeling 2.0 : Let's collaborate!
A bit of history
4 years ago, when I joined Obeo, I started to work on a new modeling tool dedicated to system engineering. The main focus of this tool was to enable system engineers to model graphically complex systems with different representations, for each speciality, depending on their viewpoint. The tool was associated to a methodology and integrated in a modeling workbench.
Separation of concerns by representations was a first step to scalability of graphical representations, another was to add several mechanisms (layers, filters, hide/reveal) to allow end users to hide some elements. The approach is somehow similar on what Miles is working on.
We took the decision to create a generic runtime with the possibility to specify graphical representations and to drive the tooling by the viewpoints. The approach has similarities with Jan current's work, and I think our work inspired him a little bit.
Since the runtime has been used for safety analysis (diagram screenshot) and several other use cases.
However, although our tool primary concerns was collaborate modeling since its inception, we did not offer directly a solution to the concurrent access problem. In fact, we left it to the Revision Control System (RCS) used by end users. As Alex wrote concurrent access management by RCS have several drawbacks, so we decided to offer the possibility for end users to collaborate more seamlessly.
On the technical side, we decided to use CDO, a technology we had experienced successfully in others projects, and which seems to match the most to our requirements. As our graphical modeling technology is based on GMF Runtime, our global technical task was to integrate GMF and CDO.
GMF and CDO, integration challenges
If you are used to component architecture like the Eclipse platform one, you may think that these two components will plug together quite easily. Unfortunately, this is not the case for various reasons :
- EMF Transactions and CDO Transactions
GMF Runtime relies on EMF Transaction to manage read and write accesses to models. To simplify this means that one is not allowed to do a modification without encapsulating its change in a recording command. On its side CDO provides its own transaction mechanism, which relies on the database store one. So it is necessary to integrate the two mechanisms. This is one of the features Dawn provides (see those bugzilla entries for further information).
- Transactional model break in GMF Runtime
GMF Runtime is a bridge between EMF models and GEF. Among others things, it provides a notation model, to store graphical information. The synchronization between the graphical model and the semantic model, is one of the responsibility of edit parts. The choice to split the synchronization responsibility in each edit part enables one to easily override the default behavior for a given edit part. This choice is consistent with the high extensible approach of the framework. However, it has one major drawback, edit parts should be instantiated to update the notation model ! As GMF Runtime edit parts creation is done in an post commit listener, when no models changes are allowed, the runtime have to force the transaction using a special option.
This behavior prevents one to have triggers for those modifications. If you need to avoid conflicts (see below), you will not be able to acquire lock before commit. In this case it means that one have to extract the synchronization from edit parts and to call it at the right time. - Avoiding conflicts
If CDO provides live updates of shared models, it does not prevents conflicts. There is two ways to handle them. The first one is to write your own conflict resolver, which will take a decision when a conflict occurs. The second one is to avoid conflicts through locks. Easier to said than to implement, but that the way we choose. - Lock integration
To avoid conflicts, the simplest way is to lock automatically elements before their edition. In practice, one could use the EMF Transaction trigger mechanism to do this. Edit parts need to listen to locks events to deactivate accordingly their edition capabilities and provide visual indicators of the lock. Lastly, to provide logical lock for end-users, one may provide a lock strategy. - Consistency maintenance on client side
EMF Transaction enables one to rollback a transaction, before its commit. This is generally done for validation or lock acquisitions purposes. The recording command manages this rollback and will abort properly the transaction if it occurs. However with the abort, the CDO state of the object will change (see bug 312534 for more details). To avoid conflicts a solution is to use CDO save points to restore the object to a clean state if a transaction aborts.
- Native mode for GMF Runtime notation models ?
One of the coolest thing of CDO is its EObject implementation, but to benefit from the scalability it provides, you need to regenerate your metamodel with a CDO dependency. When one works with such CDO model instances, the mode in which one is, is called native. As GMF Runtime notation metamodel depends on the EMF one (don't do this at home), using notation models in native mode is far from being easy. So we worked on a solution which keeps source and binary compatibility with legacy code (see bug 336707 for technical details) and provides notation cdo native models, the code is available here (no builds yet).
- Content and cross reference adapters
These two utilities should not be used as they will break the lazy loading mechanism of CDO. By default GMF runtime initializes one cross reference adapter when configuring the editing domain. You could quite easily override the default behavior. EMF Transaction uses an adapter that walk through its content, but removing it is much harder.
On our product, the work is still in progress, but we he have implemented solutions for most challenges presented above. During this work we opened several issues :
- fixed : bug 345719, bug 352191, bug 355915, bug 337870, bug 353167, bug 329753, bug 315570, bug 329869, bug 329752, bug 353076, bug 351393, bug 351921, bug 325436, bug 346378
- not yet fixed : bug 339908, bug 352189, bug 352977, bug 352204, bug 357400, bug 329786
As you may seen, the CDO team has been very responsive, and already provided fixes for most of them. I would like to thank them for their availability and help.
This blog entry present results coming from a work collaboration between Thales and Obeo.
Ce message de blog est issu d'un travail en commun entre Thales et Obeo.
This blog entry present results coming from a work collaboration between Thales and Obeo.
Ce message de blog est issu d'un travail en commun entre Thales et Obeo.
Labels :
CDO,
Collaboration,
GMF,
Modeling,
Obeo Designer,
Viewpoint
March 11, 2011
Graphical modeling @ EclipseCon 2011
If your read this blog entry, you probably already heard about EMF, but you may still wondering how modeling and all this meta stuffs could help you in your daily developer work.

If you are in this case, then you have to attend to the EMF tutorial for at the next EclipseCon. In the first part you will have time to discover the basics of EMF on a case sudy. In the second part you will have an overview of additional powerful technologies, such as EEF and GMF, 2 projects I will present related to being able to create and modify a model in a graphical manner.

EEF is a tool which enables one to generate sexy properties, but not only. It's a framework, which could be use to generate several kinds of user interface to edit your model.
It has been designed to be compatible with validation and transaction existing EMF components. Let's have a look to to see how you could easily generate an eclipse form editor in one click from your metamodel.

Even EEF if is a quite young project, it is already used in the industry and arouses interest with frequent questions on the newsgroup.
By the way EEF has been nominated and is finalist for the eclipse community award 2001 in the most innovative project category.

GMF is a project dedicated to the creation of diagram editors. It is split in 2 components, the runtime and the tooling.
The runtime connects GEF and EMF. It plugs your EMF model as the model in the GEF model-view-controler architecture and provides a diagram metamodel.
The tooling enables you to generate an editor based on the runtime.

The runtime has been designed for extensibility, you could extend it or redefine some parts very simply.
The tooling uses code templates, that you could extend to generate custom code. This enables you to keep your GMF models and the generated code always synchronized.
That's all for this EEF and GMF preview, if you want to know more, come to the tutorial !

If you are in this case, then you have to attend to the EMF tutorial for at the next EclipseCon. In the first part you will have time to discover the basics of EMF on a case sudy. In the second part you will have an overview of additional powerful technologies, such as EEF and GMF, 2 projects I will present related to being able to create and modify a model in a graphical manner.

EEF is a tool which enables one to generate sexy properties, but not only. It's a framework, which could be use to generate several kinds of user interface to edit your model.
It has been designed to be compatible with validation and transaction existing EMF components. Let's have a look to to see how you could easily generate an eclipse form editor in one click from your metamodel.

Even EEF if is a quite young project, it is already used in the industry and arouses interest with frequent questions on the newsgroup.
By the way EEF has been nominated and is finalist for the eclipse community award 2001 in the most innovative project category.

GMF is a project dedicated to the creation of diagram editors. It is split in 2 components, the runtime and the tooling.
The runtime connects GEF and EMF. It plugs your EMF model as the model in the GEF model-view-controler architecture and provides a diagram metamodel.
The tooling enables you to generate an editor based on the runtime.

The runtime has been designed for extensibility, you could extend it or redefine some parts very simply.
The tooling uses code templates, that you could extend to generate custom code. This enables you to keep your GMF models and the generated code always synchronized.
That's all for this EEF and GMF preview, if you want to know more, come to the tutorial !
Labels :
Eclipse,
EclipseCon,
EEF,
GMF
November 4, 2010
Highlights from ESE
ESE is already over, and from this edition I would like to retain 3 things :
Eclipse is a community, and ESE is an awesome opportunity to meet in real life members of Eclipse community. I have found that the attendance was a good mix of committers, adopters and end users which lead to interesting discussion and feedback about projects and technologies. I have liked the accessibility and open mindedness of every person I met.

It was impressive to see that people have understood that modeling is not limited to UML and code generation.
On a textual side Xtext and Acceleo were the 2 stars with a lot of talks presenting their functionalities or exemplary usage. There was also a tutorial combining them to learn how to use these 2 great technologies to model and generate android applications.
On graphical side, there were plenty of eye candy things to see. EEF presentation from Goulwen showed how you could easily generate sexy properties and wizards for a metamodel. Mitra, a semi-automated model transformation tool, presentation showed a 3D user interface where each model is displayed on a 2D plane. I am not sure this is scalable but it was a great demo of what's can be done with GEF3D. Papyrus presentation showed the progress they have made in providing an UML (but not limited to it) reference graphical editor. Bonita Open Solution presentation showed a very attractive and intuitive BPMN editor. In its presentation of modeling for WTP, Etienne showed briefly modelers build with Obeo Designer, our DSL Studio on top of the eclipse modeling platform. Papyrus, Bonita Open Solution, and Obeo Designer relies on the GMF Runtime. Graphiti is a new alternative runtime, and its presentation was a demo of a beautiful library modeler. Last but not least and good transition, Dawn demo of collaborative edition between editors, including diagram ones was amazing.
Model management concerns had a very good coverage this year. CDO is aimed at scalability, sharing and storage of models and Eike presentation about it was very comprehensive. The more I know about CDO, the more I find it well-designed. COPE focus on models migration and its presentation pointed up the advanced tooling they provide to facilitate metamodel evolution. EMF Store is dedicated to models storage and versioning. It uses EMF Compare for comparison and COPE for migration. A talk and a poster were presented.
Other great stuffs were presented like collaboration of EMF and GWT for modeling in the cloud, or Sphinx an initiative to have a more coherent modeling platform.
According to this the modeling symposium was a real success. Many talks on various topics from different speakers. My only regret is that with such a crowd, it was a bit difficult to start a discussion just after a talk, but that's probably the price of fame.
In past I had some headaches with eclipse build technologies. There are several approaches and several projects (PDE Build, Athena, Pluginbuilder, Buckminster, B3), but I think that the gap with them to create and maintain a build remains quite high. The demo I have seen from Pascal of tycho, let me think that it's a promising approach as I have found that it hides the complexity.
Of course there was lot of other pretty cool talks and demos, like the Jeff Noris keynote, that you missed if you weren't at ESE this year. See you next time !
- Community is open and diverse
Eclipse is a community, and ESE is an awesome opportunity to meet in real life members of Eclipse community. I have found that the attendance was a good mix of committers, adopters and end users which lead to interesting discussion and feedback about projects and technologies. I have liked the accessibility and open mindedness of every person I met.
- Modeling is everywhere

It was impressive to see that people have understood that modeling is not limited to UML and code generation.
On a textual side Xtext and Acceleo were the 2 stars with a lot of talks presenting their functionalities or exemplary usage. There was also a tutorial combining them to learn how to use these 2 great technologies to model and generate android applications.
On graphical side, there were plenty of eye candy things to see. EEF presentation from Goulwen showed how you could easily generate sexy properties and wizards for a metamodel. Mitra, a semi-automated model transformation tool, presentation showed a 3D user interface where each model is displayed on a 2D plane. I am not sure this is scalable but it was a great demo of what's can be done with GEF3D. Papyrus presentation showed the progress they have made in providing an UML (but not limited to it) reference graphical editor. Bonita Open Solution presentation showed a very attractive and intuitive BPMN editor. In its presentation of modeling for WTP, Etienne showed briefly modelers build with Obeo Designer, our DSL Studio on top of the eclipse modeling platform. Papyrus, Bonita Open Solution, and Obeo Designer relies on the GMF Runtime. Graphiti is a new alternative runtime, and its presentation was a demo of a beautiful library modeler. Last but not least and good transition, Dawn demo of collaborative edition between editors, including diagram ones was amazing.
Model management concerns had a very good coverage this year. CDO is aimed at scalability, sharing and storage of models and Eike presentation about it was very comprehensive. The more I know about CDO, the more I find it well-designed. COPE focus on models migration and its presentation pointed up the advanced tooling they provide to facilitate metamodel evolution. EMF Store is dedicated to models storage and versioning. It uses EMF Compare for comparison and COPE for migration. A talk and a poster were presented.
Other great stuffs were presented like collaboration of EMF and GWT for modeling in the cloud, or Sphinx an initiative to have a more coherent modeling platform.
According to this the modeling symposium was a real success. Many talks on various topics from different speakers. My only regret is that with such a crowd, it was a bit difficult to start a discussion just after a talk, but that's probably the price of fame.
- Build simplification is moving forward
In past I had some headaches with eclipse build technologies. There are several approaches and several projects (PDE Build, Athena, Pluginbuilder, Buckminster, B3), but I think that the gap with them to create and maintain a build remains quite high. The demo I have seen from Pascal of tycho, let me think that it's a promising approach as I have found that it hides the complexity.
Of course there was lot of other pretty cool talks and demos, like the Jeff Noris keynote, that you missed if you weren't at ESE this year. See you next time !
May 10, 2010
Resize matters !
A spam like title because recently I worked was on resize stuffs :
- On GEF Bot there was a painful bug . If the edit part was resizable, a drag behaves like a resize. Now drag behaves correctly and a new resize method is available to resize an edit part :
- Do you find useful the ability to drag the selector figure in the outline of GMF Editors ? you will probably like the ability the resize this figure (fullscreen video) :
I will try to contribute this feature for 3.7
November 6, 2009
GEF support in SWTbot and GMF
Back from ESE where I gave my presentation about GEF support in SWTBot last week, I am happy to announce that GEF feature is available in SWTBot update site. Thanks Ketan for that.

Quite obviously there are several bugs opened and there is room for improvement but current API is not frozen, so it's time to test and ask for enhancements !
On GMF side I updated yesterday its main wiki page to use tabs. There is a lot of valuable information available on the wiki for GMF, but it was scattered. I hope you find the new page clearer and useful.

Quite obviously there are several bugs opened and there is room for improvement but current API is not frozen, so it's time to test and ask for enhancements !
On GMF side I updated yesterday its main wiki page to use tabs. There is a lot of valuable information available on the wiki for GMF, but it was scattered. I hope you find the new page clearer and useful.

January 22, 2009
Obeo grid layout contribution
Open source projects are like plants.

Photo from A National Acrobat
As there is already some gardeners, there is no obligation to provide them with water, but I am convinced that giving some compost will help them to grow.
It could be feedback and help, translations ,articles, bugs tracking or patches.
Recently we contributed a generic grid layout provider for GMF runtime.
We hope it could be included in GMF, and people could benefit from it, as we benefited from both EMF and GMF projects.
Basically you inherit from the generic grid layout provider, and only define 3 parameters :
- the vertical padding
- the horizontal padding
- the number of columns
Here is an example showing the results with the GMF logical example, and 5 as value for each parameter.
Before arrange all.

After arrange all.

Photo from A National Acrobat
As there is already some gardeners, there is no obligation to provide them with water, but I am convinced that giving some compost will help them to grow.
It could be feedback and help, translations ,articles, bugs tracking or patches.
Recently we contributed a generic grid layout provider for GMF runtime.
We hope it could be included in GMF, and people could benefit from it, as we benefited from both EMF and GMF projects.
Basically you inherit from the generic grid layout provider, and only define 3 parameters :
- the vertical padding
- the horizontal padding
- the number of columns
Here is an example showing the results with the GMF logical example, and 5 as value for each parameter.
Before arrange all.
After arrange all.
Subscribe to:
Posts (Atom)