Home » Archived » M2M (model-to-model transformation) » [ATL] xmi::id for elements refereced by diagram
[ATL] xmi::id for elements refereced by diagram [message #69483] |
Thu, 13 December 2007 15:44 |
Eclipse User |
|
|
|
Originally posted by: bordinmatteo.yahoo.it
This is a multi-part message in MIME format.
--------------080106090400020205070307
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Hi all,
I am facing this problem: I have a model whose elements are referenced
by a diagram: diagram elements refer model elements by their xmi::id.
I want to transform the model with ATL and still have the output model
to contain valid references for the diagram. The original model may well
be overwritten by the newly generated model.
The first solution that comes to my mind is to modify the xmi::id of the
output - but I am not sure it is possible (and I can just read but not
write using element.__xmiID__ ).
Could anyone please help?
Thank you in advance,
Matteo
--------------080106090400020205070307
Content-Type: text/x-vcard; charset=utf-8;
name="bordinmatteo.vcf"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="bordinmatteo.vcf"
begin:vcard
fn:Matteo Bordin
n:Bordin;Matteo
org:University of Padua
email;internet:bordinmatteo@yahoo.it
note:The ASSERT research project
url:http://www.math.unipd.it/~mbordin
version:2.1
end:vcard
--------------080106090400020205070307--
|
|
| | |
Re: [ATL] xmi::id for elements refereced by diagram [message #69949 is a reply to message #69765] |
Tue, 18 December 2007 20:46 |
Frédéric Jouault Messages: 572 Registered: July 2009 |
Senior Member |
|
|
Hi Matteo,
I now better understand your problem, thanks for the precision.
You mentioned __xmiID__ in your original message. This is one possible
solution. However setting of __xmiID__ is only supported in the EMF
driver for the moment. Not for the UML2 driver.
If your transformation does not use "non-EMF" features of UML2 (i.e.,
profiles) then you can probably use the EMF driver.
Note, however, using __xmiID__ is not a very high-level solution. If
your transformation only performs some minor refactorings on the model,
then you should consider using refining mode (only available in ATL 2004
so far).
Regards,
Frédéric Jouault
Matteo Bordin wrote:
> Frédéric Jouault wrote:
>> Hello,
>>
>> > I am facing this problem: I have a model whose elements are referenced
>> > by a diagram: diagram elements refer model elements by their xmi::id.
>> >
>> > I want to transform the model with ATL and still have the output model
>> > to contain valid references for the diagram. The original model may
>> well
>> > be overwritten by the newly generated model.
>> >
>> > The first solution that comes to my mind is to modify the xmi::id
>> of the
>> > output - but I am not sure it is possible (and I can just read but
>> not
>> > write using element.__xmiID__ ).
>>
>> I am not sure to fully understand your question, but if you use
>> inter-resource references, did you try to simply initialize the
>> property "normally"?
>>
>> For instance:
>>
>> rule R {
>> from
>> s : MM1!A
>> to
>> t : MM2!B (
>> elementInOtherModel <- s.elementInOtherModel
>> )
>> }
>>
>> If you make sure that the other model can be automatically loaded by
>> EMF (e.g., retrieved as a relative path to the URI of your source model).
>>
>>
>> Regards,
>>
>> Frédéric Jouault
>
> Dear Frederic,
>
> thanks for your reply, but it doesn't solve my problem. I will try to
> explain my self better:
> - I have a UML2 model + diagram designed with TOPCASED/Papyrus/etc.
> - I want to perform an ATL model transformation, overwrite the original
> model with the output of the transformation and still have the diagrams
> to correctly reference the new model.
>
> One possibly seems to be using AMW, have a AMW as model handler (instead
> of EMF), and use setElementIDbyRefType and similar in the ATL
> transformation. However, the results I get don't seem consistent (the
> xmi::id is not always copied) and I wondered if there was another way to
> achieve the same result.
>
> Thanks again,
>
> Matteo
>
>
|
|
|
Re: [ATL] xmi::id for elements refereced by diagram [message #70107 is a reply to message #69949] |
Fri, 21 December 2007 08:36 |
Eclipse User |
|
|
|
Originally posted by: bordinmatteo.yahoo.it
This is a multi-part message in MIME format.
--------------020406040707060005040505
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Hi Frederic,
unfortunately I use ATL on a UML2 profile (SysML/MARTE) - and the
transformation and I expect it to grow up quite complex in the future.
Anyway, trying refining mode gives this error
(even with -- @atlcompiler atl2004):
****** BEGIN Stack Trace
message: feature feature is not changeable
A.main() : ??#24 null
local variables = {self=changeName : ASMModule}
local stack = []
A.__exec__() : ??#8 null
local variables = {e=TransientLink {rule =
'PackageImport2PackageImport', sourceElements = {i1 = IN!<unnamed>},
targetElements = {i2 = OUT!<unnamed>}, variables = {}}, self=changeName
: ASMModule}
local stack = []
A.__applyPackageImport2PackageImport(1 : NTransientLink;) : ??#13 8:17-8:54
local variables = {i2=OUT!<unnamed>, i1=IN!<unnamed>,
link=TransientLink {rule = 'PackageImport2PackageImport', sourceElements
= {i1 = IN!<unnamed>}, targetElements = {i2 = OUT!<unnamed>}, variables
= {}}, self=changeName : ASMModule}
local stack = [OUT!<unnamed>, OUT!<unnamed>]
A.__resolve__(1 : J) : ??#19 null
local variables = {value=IN!UMLPrimitiveTypes, self=changeName : ASMModule}
local stack = []
A.__refiningCopy(1 : J, 2 : B) : ??#115 null
local variables = {isEMF=true, recurseCopy=false,
value=IN!UMLPrimitiveTypes, self=changeName : ASMModule, setValue=true,
targetFeature=UML2!ownedType, ref='EReference', attr='EAttribute'}
local stack = [OUT!<notnamedyet>, OUT!<notnamedyet>, OUT!<notnamedyet>,
'ownedType']
A.__resolve__(1 : J) : ??#29 null
local variables = {e=IN!Boolean, value=Sequence {IN!Boolean,
IN!Integer, IN!String, IN!UnlimitedNatural}, self=changeName : ASMModule}
local stack = [Sequence {}]
A.__resolve__(1 : J) : ??#19 null
local variables = {value=IN!Boolean, self=changeName : ASMModule}
local stack = []
A.__refiningCopy(1 : J, 2 : B) : ??#137 null
local variables = {isEMF=true, recurseCopy=false, value=IN!Boolean,
self=changeName : ASMModule, setValue=true, targetFeature=UML2!feature,
ref='EReference', attr='EAttribute'}
local stack = [OUT!<notnamedyet>, OUT!<notnamedyet>, OUT!<notnamedyet>,
OUT!<notnamedyet>, OUT!<notnamedyet>, OUT!<notnamedyet>]
NativeOperation public static
org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny
org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny.refSetValu e(org.eclipse.m2m.atl.engine.vm.StackFrame,org.eclipse.m2m.a tl.engine.vm.nativelib.ASMOclAny,org.eclipse.m2m.atl.engine. vm.nativelib.ASMString,org.eclipse.m2m.atl.engine.vm.nativel ib.ASMOclAny)
args = [OUT!<notnamedyet>, 'feature', Sequence {}]
****** END Stack Trace
Execution terminated due to error (see launch configuration to allow
continuation after errors).
Is using the AMW handler the only solutions to my problem (which I admit
I still have to try it)?
Thanks again,
Matteo
Fr
|
|
| |
Goto Forum:
Current Time: Fri Sep 20 14:18:25 GMT 2024
Powered by FUDForum. Page generated in 0.04209 seconds
|