[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.tools.emf] Re: [ATL] OCL checker for EMF models in transformation chain

Hello Damien,

Firstly, I added [ATL] as a prefix to the subject of this post because I am answering from the ATL point of view :-).


Secondly, here is a possible approach to do what you described:

1- Write the OCL constraints as a transformation (e.g., in ATL). Source: Ma, target: a diagnostic (e.g., a model containing the list of failed constraints). Examples: http://www.eclipse.org/m2m/atl/atlTransformations/#ATL2Problem, http://www.eclipse.org/m2m/atl/atlTransformations/#KM32Problem,
http://dev.eclipse.org/viewcvs/indextech.cgi/org.eclipse.gmt/org.eclipse.gmt.tcs/dsls/TCS/WFR/TCS2Problem.atl?view=markup



2- Use a query to check if there are errors.


3- Run the actual transformation if there is no error.


2 and 3 are for instance used in the TCS compiler, at lines 122 to 142: http://dev.eclipse.org/viewcvs/indextech.cgi/org.eclipse.gmt/org.eclipse.gmt.tcs/scripts/AMMAScripts/build.syntax.xml?view=markup

Note that because we use TCS to parse the source model, we can apply markers for the detected errors using the am3.applyMarkers task.


The TCS compiler that I mentioned above is implemented using the AM3 ant tasks:
http://wiki.eclipse.org/AM3_Ant_Tasks


Note that it is also implemented as an Eclipse plugin. This means that you can also implement such a scenario in Java.


Regards,

Frédéric Jouault


Ed Merks wrote:
Damien,

Comments below.


Damien Thivolle wrote:
Hello,

I'm relatively new to Eclipse and the modeling technology. I want to write a transformation from a meta-model MMa to a meta-model MMb using ATL. The problem is that the transformation will only concern a subset of MMa.
There's a newsgroup for ATL. I've included it on the "to" list of the reply.

I've been hinted to write a checker in OCL that would just tell me whether a model Ma (conforming to MMa) is included in the subset I'm interested in.


In the end, if the checker answers true when asked if the input model is correct, the transformation would take place, if not an error message would be yielded.

I've been looking for some clues as to where to start and I was expecting to find something suitable for a newbie like me. Like, I define a file with a set of OCL constraints, right click on my model and choose "Validate constraints from file...". But I guess it's not gonna be that easy.

More generally, I'm having a hard time finding my way around Eclipse, EMF and such... I've been reading all the material I could find about using OCL to check constraints on EMF models, and it's like Chinese to me.
Note really. If it were Chinese it would use an alphabet you'd not recognize. :-P
For example, I've seen a lot of EMF models with annotations named "OCL" and having several entries, but I can't really find anything that would explain me what to do with those.
Did you look at the Eclipse help?

I'm just saying is that I find it hard to understand this technology and I'm wondering if it's normal or if this is where my comprehension reaches its limits.
There's an awful lot of technology to learn all at once for sure. And the documentation is sometimes a little lacking or hard to find...

Best regards,