Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF Diff/Merge » Co-Evolution Basic Concepts(Pointer to relevant documentation of the basic concepts of co-evolution)
Co-Evolution Basic Concepts [message #1776208] Mon, 13 November 2017 19:36 Go to next message
Sergio Feo-Arenis is currently offline Sergio Feo-ArenisFriend
Messages: 1
Registered: November 2017
Junior Member
Dear All,

We are trying to develop an interactive bridge between an internal EMF model and Capella using Co-evolution.

Our starting point is the useful Capella2APA example provided with the source code.

However, it is not entirely clear to us what the starting point for developing bridges using co-evolution is. There are prevalent concepts such as queries, rules, matching policies, etc. We thus would like to kindly ask for a pointer to where relevant information regarding the use of Co-evolution could be found.

One main goal of our search is to resolve the following issue:
The provided APA<->Capella bridge does not synchronize a physical structure recursively. Only nodes directly owned by the main Physical System are synchronized. Nodes containing other nodes, contained in other nodes, etc, are not.

The bridge we intend to develop does require that recursive structure synchronization. That way we figured out that our knowledge is at this stage quite limited regarding the underlying concepts of Co-evolution and what the intended programmatic use of queries, rules, etc, is. Hence our call for help in this forum.

Thanks in advance, and best regards.
Re: Co-Evolution Basic Concepts [message #1776473 is a reply to message #1776208] Thu, 16 November 2017 17:33 Go to previous messageGo to next message
Olivier Constant is currently offline Olivier ConstantFriend
Messages: 106
Registered: January 2012
Senior Member
Hi,

You are definitely right about requesting a documentation that is of a higher level of abstraction than the Javadoc. This has been needed for quite some time. I have initiated one although it is small at this stage. It can be accessed from here:
https://wiki.eclipse.org/EMF_DiffMerge/Co-Evolution#Usage

The sub-part about mappings and queries and rules is not well developed yet. In short, queries should only be seen as the triggers of rules. They do not particularly help you to navigate a model recursively. But you can embed a recursive navigation into a query. This is a pretty common need that we have encountered many times, so I guess an example of this would be useful in the /examples folder of the repo.

In the meantime, to help you implement such queries: you can find support for recursive navigation in org.eclipse.emf.diffmerge.structures.impacts. The idea is to define a set of basic navigation operations (IImpactRule, the naming could be improved). Then you may create a query whose evaluate method does this: Impacts.create(Collections.singleton(input_p), <your navigation operations>);
When the query is executed on an element, it will progressively perform the transitive closure of the union of the navigation operations. On this query you can plug sub-queries that return the element received if it has the expected type and possibly conforms to some assertion. Then you can plug rules onto these sub-queries.

Hope it helps.

Olivier
Re: Co-Evolution Basic Concepts [message #1776519 is a reply to message #1776473] Fri, 17 November 2017 08:59 Go to previous message
Olivier Constant is currently offline Olivier ConstantFriend
Messages: 106
Registered: January 2012
Senior Member
A small addition to my post.
Similarly to the idea that Co-Evolution should allow you to use the transformation technology you want, the idea behind mapping queries is that you can use the query technology you want to implement them (as long as it can be called from Java). Depending on the technological constraints you have, you may consider to stick to Java (that is usually what we do) or use higher-level technologies. We did experiments with Viatra Queries, but OCL and Xtend should also be pretty simple to integrate, to name a few. OCL and Viatra Queries have high-level support for recursive navigation (built-in for VQ, using the closure operator in OCL).
Previous Topic:Coevolution with an existing project & Rule used twice in the same bridge.
Next Topic:Plan to support e4 UI?
Goto Forum:
  


Current Time: Wed Apr 24 22:11:12 GMT 2024

Powered by FUDForum. Page generated in 0.02761 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top