Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » M2M (model-to-model transformation) » [QVTO]Aggregation Relationship?
[QVTO]Aggregation Relationship? [message #78734] Thu, 10 April 2008 20:26 Go to next message
Eclipse UserFriend
Originally posted by: comouraf-lixo.yahoo.fr

(sorry, this duplicate post is just because I forgot to put the [QVTO]
marker)

Hi,

After using the transformation down below, I expected to have a Model
containing a StructuredComponent, which, in turn, should contain an
AssemblyPart, since the attributes "parts" and "ownedElement" below are
aggregation-type. However, the result was simply:

<MARTE.CoreElements.Foundations:Model name="MyModel"/>
<MARTE.GCM:StructuredComponent name="A"/>
<MARTE.GCM:AssemblyPart name="propA"/>

While I expected something like:

<MARTE.CoreElements.Foundations:Model name="MyModel">
<ownedElement xsi:type="MARTE.GCM:StructuredComponent" name="A">
<parts xsi:type="MARTE.GCM:AssemblyPart" name="propA"/>
</ownedElement>
</MARTE.CoreElements.Foundations:Model>

Can anyone tell me what I am doing wrong? The transformation is reproduced
below.

Thanks for any clue,


César

------------------------------------------------------------ -----------------------------
transformation UML2MarteTemplate(in uml : UML, out marte:Marte);

main( in umlmodel:UML::Model, out martemodel:Marte::Model) {
martemodel:= umlmodel.map umlmodel2martemodel();
}
mapping UML::Model::umlmodel2martemodel() : Marte::Model {
name:=self.name;
ownedElement:=self.ownedElement->select(oclIsKindOf(UML::Class))- > collect(oclAsType(UML::Class)).mapClass2StructuredComponent( );}mappingUML::Class::Class2StructuredComponent() : GCM::StructuredComponent {name:=self.name; parts:=self.ownedAttribute.mapProperty2Part()->asBag();}mapping UML::Property::Property2Part() :AssemblyPart { name:=self.name;}
Re: [QVTO]Aggregation Relationship? [message #78749 is a reply to message #78734] Thu, 10 April 2008 21:19 Go to previous messageGo to next message
Radomil Dvorak is currently offline Radomil DvorakFriend
Messages: 249
Registered: July 2009
Senior Member
Hi César,

At the first glance, you seem to be doing things correctly.
Simple assignment to containment references should work as you expect.
At the moment I have no other hint then a re-check of containment=true on
the
affected references (which I suppose you have done).
Or you might have hit a bug.

Would you be willing to post or e-mail a fragment of your model&transf to
me?

Regards,
/Radek

On Thu, 10 Apr 2008 22:26:22 +0200, kaiserlautern <comouraf-lixo@yahoo.fr>
wrote:

> (sorry, this duplicate post is just because I forgot to put the [QVTO]
> marker)
>
> Hi,
>
> After using the transformation down below, I expected to have a Model
> containing a StructuredComponent, which, in turn, should contain an
> AssemblyPart, since the attributes "parts" and "ownedElement" below are
> aggregation-type. However, the result was simply:
>
> <MARTE.CoreElements.Foundations:Model name="MyModel"/>
> <MARTE.GCM:StructuredComponent name="A"/>
> <MARTE.GCM:AssemblyPart name="propA"/>
>
> While I expected something like:
>
> <MARTE.CoreElements.Foundations:Model name="MyModel">
> <ownedElement xsi:type="MARTE.GCM:StructuredComponent" name="A">
> <parts xsi:type="MARTE.GCM:AssemblyPart" name="propA"/>
> </ownedElement>
> </MARTE.CoreElements.Foundations:Model>
>
> Can anyone tell me what I am doing wrong? The transformation is
> reproduced
> below.
>
> Thanks for any clue,
>
>
> César
>
> ------------------------------------------------------------ -----------------------------
> transformation UML2MarteTemplate(in uml : UML, out marte:Marte);
>
> main( in umlmodel:UML::Model, out martemodel:Marte::Model) {
> martemodel:= umlmodel.map umlmodel2martemodel();
> }
> mapping UML::Model::umlmodel2martemodel() : Marte::Model {
> name:=self.name;
> ownedElement:=self.ownedElement->select(oclIsKindOf(UML::Class))- > collect(oclAsType(UML::Class)).mapClass2StructuredComponent( );}mappingUML::Class::Class2StructuredComponent()
> : GCM::StructuredComponent {name:=self.name;
> parts:=self.ownedAttribute.mapProperty2Part()->asBag();}mapping
> UML::Property::Property2Part() :AssemblyPart { name:=self.name;}



--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: [QVTO]Aggregation Relationship? [message #78781 is a reply to message #78749] Thu, 10 April 2008 22:06 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: comouraf-lixo.yahoo.fr

This is a multi-part message in MIME format.

------=_NextPart_000_0015_01C89B67.D5F0E450
Content-Type: text/plain;
format=flowed;
charset="utf-8";
reply-type=response
Content-Transfer-Encoding: 8bit

Hi, Radek,

Thanks for your quick answer. In fact I made a mistake here. I checked one
of the references (ownedElement), which was aggregation-type and assumed the
other (parts) to be an aggregation as well, which it is NOT
(containement=false). Anyway, since one of them is containement-true, I
should have this reflected in my target model, or? In case you wanna check
this little detail, I send one metamodel (the other is UML).

Thanks,

César

"Radek Dvorak" <radek.dvorak@borland.com> a écrit dans le message de
news:op.t9eyt3e8hj1a1g@czprl-rdvorak2.emea.borl.net...
> Hi César,
>
> At the first glance, you seem to be doing things correctly.
> Simple assignment to containment references should work as you expect.
> At the moment I have no other hint then a re-check of containment=true on
> the
> affected references (which I suppose you have done).
> Or you might have hit a bug.
>
> Would you be willing to post or e-mail a fragment of your model&transf to
> me?
>
> Regards,
> /Radek
>
> On Thu, 10 Apr 2008 22:26:22 +0200, kaiserlautern <comouraf-lixo@yahoo.fr>
> wrote:
>
>> (sorry, this duplicate post is just because I forgot to put the [QVTO]
>> marker)
>>
>> Hi,
>>
>> After using the transformation down below, I expected to have a Model
>> containing a StructuredComponent, which, in turn, should contain an
>> AssemblyPart, since the attributes "parts" and "ownedElement" below are
>> aggregation-type. However, the result was simply:
>>
>> <MARTE.CoreElements.Foundations:Model name="MyModel"/>
>> <MARTE.GCM:StructuredComponent name="A"/>
>> <MARTE.GCM:AssemblyPart name="propA"/>
>>
>> While I expected something like:
>>
>> <MARTE.CoreElements.Foundations:Model name="MyModel">
>> <ownedElement xsi:type="MARTE.GCM:StructuredComponent" name="A">
>> <parts xsi:type="MARTE.GCM:AssemblyPart" name="propA"/>
>> </ownedElement>
>> </MARTE.CoreElements.Foundations:Model>
>>
>> Can anyone tell me what I am doing wrong? The transformation is
>> reproduced
>> below.
>>
>> Thanks for any clue,
>>
>>
>> César
>>
>> ------------------------------------------------------------ -----------------------------
>> transformation UML2MarteTemplate(in uml : UML, out marte:Marte);
>>
>> main( in umlmodel:UML::Model, out martemodel:Marte::Model) {
>> martemodel:= umlmodel.map umlmodel2martemodel();
>> }
>> mapping UML::Model::umlmodel2martemodel() : Marte::Model {
>> name:=self.name;
>>
>> ownedElement:=self.ownedElement->select(oclIsKindOf(UML::Class))- > collect(oclAsType(UML::Class)).mapClass2StructuredComponent( );}mappingUML::Class::Class2StructuredComponent()
>> : GCM::StructuredComponent {name:=self.name;
>> parts:=self.ownedAttribute.mapProperty2Part()->asBag();}mapping
>> UML::Property::Property2Part() :AssemblyPart { name:=self.name;}
>
>
>
> --
> Using Opera's revolutionary e-mail client: http://www.opera.com/mail/

------=_NextPart_000_0015_01C89B67.D5F0E450
Content-Type: application/octet-stream;
name="marte.ecore"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="marte.ecore"

<?xml version=3D"1.0" encoding=3D"UTF-8"?>
<ecore:EPackage xmi:version=3D"2.0"
xmlns:xmi=3D"http://www.omg.org/XMI" =
xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore=3D"http://www.eclipse.org/emf/2002/Ecore" =
name=3D"metamodel"
nsURI=3D"http:///org.marte.metamodel.ecore" nsPrefix=3D"marte">
<eAnnotations source=3D"http://www.eclipse.org/emf/2002/GenModel">
<details key=3D"documentation" value=3D"This model is an =
implementation of MARTE domain model&#xD;&#xA;It is released under EPL =
1.0 by CEA LIST and LIFL."/>
</eAnnotations>
<eSubpackages name=3D"designModel" =
nsURI=3D"http:///MARTE/DesignModel.ecore" =
nsPrefix=3D"MARTE.DesignModel">
<eAnnotations source=3D"http://www.eclipse.org/emf/2002/GenModel">
<details key=3D"documentation" value=3D"This package should be =
removed and replaced by package described in MARTE DesignModel part"/>
</eAnnotations>
<eSubpackages name=3D"RTEMoCC" =
nsURI=3D"http:///MARTE/DesignModel/RTEMoCC.ecore" =
nsPrefix=3D"MARTE.DesignModel.RTEMoCC"/>
<eSubpackages name=3D"DRM" =
nsURI=3D"http:///MARTE/DesignModel/DRM.ecore" =
nsPrefix=3D"MARTE.DesignModel.DRM"/>
</eSubpackages>
<eSubpackages name=3D"analysisModel" =
nsURI=3D"http:///MARTE/AnalysisModel.ecore" =
nsPrefix=3D"MARTE.AnalysisModel">
<eAnnotations source=3D"http://www.eclipse.org/emf/2002/GenModel">
<details key=3D"documentation" value=3D"This package should be =
removed and replaced by package described in MARTE AnalysisModel part"/>
</eAnnotations>
<eSubpackages name=3D"GQAM" =
nsURI=3D"http:///MARTE/AnalysisModel/GQAM.ecore" =
nsPrefix=3D"MARTE.AnalysisModel.GQAM"/>
<eSubpackages name=3D"SAM" =
nsURI=3D"http:///MARTE/AnalysisModel/SAM.ecore" =
nsPrefix=3D"MARTE.AnalysisModel.SAM"/>
<eSubpackages name=3D"PAM" =
nsURI=3D"http:///MARTE/AnalysisModel/PAM.ecore" =
nsPrefix=3D"MARTE.AnalysisModel.PAM"/>
</eSubpackages>
<eSubpackages name=3D"vsl" nsURI=3D"http:///MARTE/VSL.ecore" =
nsPrefix=3D"MARTE.VSL">
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"ValueSpecification" =
abstract=3D"true"/>
<eSubpackages name=3D"LitteralValues" =
nsURI=3D"http:///MARTE/VSL/LitteralValues.ecore"
nsPrefix=3D"MARTE.VSL.LitteralValues">
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"LiteralSpecification" =
eSuperTypes=3D"#//vsl/ValueSpecification"/>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"EnumerationSpecification" =
eSuperTypes=3D"#//vsl/ValueSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"enumLiteral" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/DataTypes/EnumerationLiteral"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"LiteralNull" =
eSuperTypes=3D"#//vsl/LitteralValues/LiteralSpecification"/ >
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"LiteralDefault" =
eSuperTypes=3D"#//vsl/LitteralValues/LiteralSpecification"/ >
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"LiteralDateTime" =
eSuperTypes=3D"#//vsl/LitteralValues/LiteralSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"value" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/DateTime"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"LiteralBoolean" =
eSuperTypes=3D"#//vsl/LitteralValues/LiteralSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"Value" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/Boolean"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"LiteralString" =
eSuperTypes=3D"#//vsl/LitteralValues/LiteralSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"value" ordered=3D"false"
unique=3D"false" eType=3D"#//primitiveTypes/String"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"LiteralInteger" =
eSuperTypes=3D"#//vsl/LitteralValues/LiteralSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"value" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/Integer"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"LiteralUnlimitedNatural" =
eSuperTypes=3D"#//vsl/LitteralValues/LiteralSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"value" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/UnlimitedNatural"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"LiteralReal" =
eSuperTypes=3D"#//vsl/LitteralValues/LiteralSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"value" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/Real"/>
</eClassifiers>
</eSubpackages>
<eSubpackages name=3D"DataTypes" =
nsURI=3D"http:///MARTE/VSL/DataTypes.ecore" =
nsPrefix=3D"MARTE.VSL.DataTypes">
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"DataType">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"ownedAttribute" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//vsl/DataTypes/Property" containment=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"ownedOperation" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//vsl/DataTypes/Operation" containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Property"/>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Operation">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"ownedParameter" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//vsl/DataTypes/Parameter" containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Parameter"/>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Subtype" =
eSuperTypes=3D"#//vsl/DataTypes/DataType">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"baseType" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/DataTypes/DataType"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"BoundedSubtype" =
eSuperTypes=3D"#//vsl/DataTypes/Subtype">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"minValue" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/String"/>
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"maxValue" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/String"/>
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"isMinOpen" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/Boolean"/>
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"isMaxOpen" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/Boolean"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"EnumerationType" =
eSuperTypes=3D"#//vsl/DataTypes/DataType">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"ownedLitteral" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//vsl/DataTypes/EnumerationLiteral"
containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"PrimitiveType" =
eSuperTypes=3D"#//vsl/DataTypes/DataType"/>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"CompositeType" =
eSuperTypes=3D"#//vsl/DataTypes/DataType"/>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"IntervalType" =
eSuperTypes=3D"#//vsl/DataTypes/CompositeType">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"intervalAttribute"
ordered=3D"false" unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/DataTypes/Property">
<eAnnotations source=3D"subsets" =
references=3D"#//vsl/DataTypes/DataType/ownedAttribute"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"CollectionType" =
eSuperTypes=3D"#//vsl/DataTypes/CompositeType">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"collectionAttribute"
ordered=3D"false" unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/DataTypes/Property">
<eAnnotations source=3D"subsets" =
references=3D"#//vsl/DataTypes/DataType/ownedAttribute"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"TupleType" =
eSuperTypes=3D"#//vsl/DataTypes/CompositeType">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"tupleAttributes" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//vsl/DataTypes/Property">
<eAnnotations source=3D"subsets" =
references=3D"#//vsl/DataTypes/DataType/ownedAttribute"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"ChoiceType" =
eSuperTypes=3D"#//vsl/DataTypes/CompositeType">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"choiceAttributes" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//vsl/DataTypes/Property">
<eAnnotations source=3D"subsets" =
references=3D"#//vsl/DataTypes/DataType/ownedAttribute"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"defaultAttribute" ordered=3D"false"
unique=3D"false" eType=3D"#//vsl/DataTypes/Property">
<eAnnotations source=3D"subsets" =
references=3D"#//vsl/DataTypes/DataType/ownedAttribute"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"EnumerationLiteral"/>
</eSubpackages>
<eSubpackages name=3D"Expressions" =
nsURI=3D"http:///MARTE/VSL/Expressions.ecore" =
nsPrefix=3D"MARTE.VSL.Expressions">
<eClassifiers xsi:type=3D"ecore:EEnum" =
name=3D"VariableDirectionKind">
<eLiterals name=3D"in"/>
<eLiterals name=3D"out" value=3D"1"/>
<eLiterals name=3D"inout" value=3D"2"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Expression" =
eSuperTypes=3D"#//vsl/ValueSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"symbol" ordered=3D"false"
unique=3D"false" eType=3D"ecore:EDataType =
http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"operand" unique=3D"false"
upperBound=3D"-1" eType=3D"#//vsl/ValueSpecification" =
containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"OpaqueExpression" =
eSuperTypes=3D"#//vsl/ValueSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" name=3D"body" =
unique=3D"false"
upperBound=3D"-1" eType=3D"#//primitiveTypes/String"/>
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"language" unique=3D"false"
upperBound=3D"-1" eType=3D"ecore:EDataType =
http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"VariableCallExpression" =
eSuperTypes=3D"#//vsl/Expressions/Expression">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"variable" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" eType=3D"ecore:EDataType =
http://www.eclipse.org/emf/2002/Ecore#//EString"
volatile=3D"true" transient=3D"true" derived=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"definingVariable" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/Expressions/Variable"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Variable" =
eSuperTypes=3D"#//vsl/Expressions/Expression">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" name=3D"name" =
ordered=3D"false"
unique=3D"false" lowerBound=3D"1" eType=3D"ecore:EDataType =
http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"direction" ordered=3D"false"
unique=3D"false" =
eType=3D"#//vsl/Expressions/VariableDirectionKind"/>
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"datatypeName" ordered=3D"false"
unique=3D"false" eType=3D"#//primitiveTypes/String" =
volatile=3D"true" transient=3D"true"
derived=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"initExpression" ordered=3D"false"
unique=3D"false" eType=3D"#//vsl/ValueSpecification" =
containment=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"datatype" ordered=3D"false"
unique=3D"false" eType=3D"#//vsl/DataTypes/DataType"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"context" ordered=3D"false"
unique=3D"false" =
eType=3D"#//vsl/Expressions/ExpressionContext"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"ExpressionContext">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" name=3D"name" =
ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/String"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"subContext" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//vsl/Expressions/ExpressionContext"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"PropertyCallExpression" =
eSuperTypes=3D"#//vsl/Expressions/Expression">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"property" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/String" volatile=3D"true"
transient=3D"true" derived=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"definingProperty" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/DataTypes/Property"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"OperationCallExpression" =
eSuperTypes=3D"#//vsl/Expressions/Expression">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"operation" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/String" volatile=3D"true"
transient=3D"true" derived=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"argument" unique=3D"false"
upperBound=3D"-1" eType=3D"#//vsl/ValueSpecification" =
containment=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"definingOperation"
ordered=3D"false" unique=3D"false" =
eType=3D"#//vsl/DataTypes/Operation"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"ConditionalExpression" =
eSuperTypes=3D"#//vsl/Expressions/Expression">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"ifFalseExpr" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/ValueSpecification" containment=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"ifTrueExpr" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/ValueSpecification" containment=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"conditionExpr" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/ValueSpecification" containment=3D"true"/>
</eClassifiers>
</eSubpackages>
<eSubpackages name=3D"TimeExpressions" =
nsURI=3D"http:///MARTE/VSL/TimeExpressions.ecore"
nsPrefix=3D"MARTE.VSL.TimeExpressions">
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"InstantIntervalSpecification" =
eSuperTypes=3D"#//vsl/CompositeValues/IntervalSpecification "/>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"InstantExpression" =
eSuperTypes=3D"#//vsl/TimeExpressions/TimeExpression"/>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"TimeExpression" =
abstract=3D"true"
eSuperTypes=3D"#//vsl/ValueSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"obsExpr" unique=3D"false"
upperBound=3D"-1" =
eType=3D"#//vsl/TimeExpressions/ObsCallExpression" =
containment=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" name=3D"expr" =
ordered=3D"false"
unique=3D"false" eType=3D"#//vsl/ValueSpecification"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"ObsCallExpression" =
eSuperTypes=3D"#//vsl/ValueSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"observation" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/TimeExpressions/Observation"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"conditionExpr" ordered=3D"false"
unique=3D"false" eType=3D"#//vsl/ValueSpecification" =
containment=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"occurIndexExpr" ordered=3D"false"
unique=3D"false" eType=3D"#//vsl/ValueSpecification" =
containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Observation"/>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"DurationIntervalSpecification" =
eSuperTypes=3D"#//vsl/CompositeValues/IntervalSpecification "/>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"DurationExpression" =
eSuperTypes=3D"#//vsl/TimeExpressions/TimeExpression"/>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"JitterExpression" =
eSuperTypes=3D"#//vsl/TimeExpressions/DurationExpression"/ >
</eSubpackages>
<eSubpackages name=3D"CompositeValues" =
nsURI=3D"http:///MARTE/VSL/CompositeValues.ecore"
nsPrefix=3D"MARTE.VSL.CompositeValues">
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"CollectionSpecification" =
eSuperTypes=3D"#//vsl/ValueSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"itemValue" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//vsl/ValueSpecification"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"TupleSpecification" eSuperTypes=3D"#//vsl/ValueSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"tupleItem" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//vsl/CompositeValues/TupleItemValue"
containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"TupleItemValue">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"tupleItemName" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/String" volatile=3D"true"
transient=3D"true" derived=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"tupleAttribute" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/DataTypes/Property"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"itemValue" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/ValueSpecification" containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"ChoiceSpecification" eSuperTypes=3D"#//vsl/ValueSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"chosenAlternative"
ordered=3D"false" unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/String"
volatile=3D"true" transient=3D"true" derived=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"choiceAttribute" ordered=3D"false"
unique=3D"false" eType=3D"#//vsl/DataTypes/Property"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"value" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/ValueSpecification" containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"IntervalSpecification" =
eSuperTypes=3D"#//vsl/ValueSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"isLowerOpen" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//primitiveTypes/Boolean"/>
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"isUpperOpen" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" eType=3D"ecore:EDataType =
http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" name=3D"min" =
ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/ValueSpecification" containment=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" name=3D"max" =
ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//vsl/ValueSpecification" containment=3D"true"/>
</eClassifiers>
</eSubpackages>
</eSubpackages>
<eSubpackages name=3D"primitiveTypes" =
nsURI=3D"http:///MARTE/MARTE_PrimitiveTypes.ecore"
nsPrefix=3D"MARTE.MARTE_PrimitiveTypes">
<eClassifiers xsi:type=3D"ecore:EDataType" name=3D"Integer" =
instanceClassName=3D"int"/>
<eClassifiers xsi:type=3D"ecore:EDataType" name=3D"Boolean" =
instanceClassName=3D"boolean"/>
<eClassifiers xsi:type=3D"ecore:EDataType" name=3D"DateTime" =
instanceClassName=3D"java.util.Date"/>
<eClassifiers xsi:type=3D"ecore:EDataType" name=3D"Real" =
instanceClassName=3D"double"/>
<eClassifiers xsi:type=3D"ecore:EDataType" name=3D"UnlimitedNatural" =
instanceClassName=3D"int"/>
<eClassifiers xsi:type=3D"ecore:EDataType" name=3D"String" =
instanceClassName=3D"java.lang.String"/>
</eSubpackages>
<eSubpackages name=3D"coreElements" =
nsURI=3D"http:///MARTE/CoreElements.ecore" =
nsPrefix=3D"MARTE.CoreElements">
<eSubpackages name=3D"Foundations" =
nsURI=3D"http:///MARTE/CoreElements/Foundations.ecore"
nsPrefix=3D"MARTE.CoreElements.Foundations">
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Model" =
eSuperTypes=3D"#//coreElements/Foundations/ModelElement">
<eAnnotations =
source=3D"http://www.eclipse.org/emf/2002/GenModel">
<details key=3D"documentation" value=3D"Not present in Marte =
MM.&#xD;&#xA;Needed to have a container of elements."/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"ModelElement" =
abstract=3D"true">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"ownedElement" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//coreElements/Foundations/ModelElement"
containment=3D"true" =
eOpposite=3D"#//coreElements/Foundations/ModelElement/owner "/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"owner" ordered=3D"false"
unique=3D"false" =
eType=3D"#//coreElements/Foundations/ModelElement" =
eOpposite=3D"#//coreElements/Foundations/ModelElement/ownedElement "/>
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" name=3D"name" =
ordered=3D"false"
unique=3D"false" eType=3D"#//primitiveTypes/String"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Instance" =
eSuperTypes=3D"#//coreElements/Foundations/ModelElement">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"exBehavior" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D" #//coreElements/Causality/RunTimeContext/CompBehaviorExecuti on "
containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Classifier" =
eSuperTypes=3D"#//coreElements/Foundations/ModelElement">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"ownedProperties" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//coreElements/Foundations/Property"
containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Property" =
abstract=3D"true" =
eSuperTypes=3D"#//coreElements/Foundations/ModelElement">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"aggregation" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//coreElements/Foundations/AggregationKind"
defaultValueLiteral=3D"none"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" name=3D"type" =
ordered=3D"false"
unique=3D"false" =
eType=3D"#//coreElements/Foundations/Classifier"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EEnum" name=3D"AggregationKind">
<eLiterals name=3D"none"/>
<eLiterals name=3D"shared" value=3D"1"/>
<eLiterals name=3D"composite" value=3D"2"/>
</eClassifiers>
</eSubpackages>
<eSubpackages name=3D"Causality" =
nsURI=3D"http:///MARTE/CoreElements/Causality.ecore"
nsPrefix=3D"MARTE.CoreElements.Causality">
<eSubpackages name=3D"CommonBehavior" =
nsURI=3D"http:///MARTE/CoreElements/Causality/CommonBehavior.ecore"
nsPrefix=3D"MARTE.CoreElements.Causality.CommonBehavior">
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Trigger" =
eSuperTypes=3D"#//coreElements/Foundations/ModelElement">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"event" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//coreElements/Causality/CommonBehavior/Event"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Event" =
eSuperTypes=3D"#//coreElements/Foundations/ModelElement"/>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"BehavioredClassifier" abstract=3D"true"
eSuperTypes=3D"#//coreElements/Foundations/Classifier">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"ownedTrigger" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//coreElements/Causality/CommonBehavior/Trigger"
containment=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"mainBehavior" ordered=3D"false"
unique=3D"false" =
eType=3D"#//coreElements/Causality/CommonBehavior/Behavior" >
<eAnnotations source=3D"subsets" =
references=3D" #//coreElements/Causality/CommonBehavior/BehavioredClassifi=
er/ownedBehavior"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"ownedBehavior" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//coreElements/Causality/CommonBehavior/Behavior"
containment=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"classifierTypeExtensions"
ordered=3D"false" unique=3D"false" upperBound=3D"-1" =
eType=3D"#//coreElements/extensions/ClassifierTypeExtension "
containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Behavior" =
eSuperTypes=3D"#//coreElements/Foundations/ModelElement">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"parameter" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//coreElements/Causality/CommonBehavior/Parameter "
containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Parameter" =
eSuperTypes=3D"#//coreElements/Foundations/ModelElement"/>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Action" =
eSuperTypes=3D"#//coreElements/Causality/CommonBehavior/Behavior "/>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"CompositeBehavior" =
eSuperTypes=3D"#//coreElements/Causality/CommonBehavior/Behavior ">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"action" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//coreElements/Causality/CommonBehavior/Behavior"
containment=3D"true"/>
</eClassifiers>
</eSubpackages>
<eSubpackages name=3D"Invocation" =
nsURI=3D"http:///MARTE/CoreElements/Causality/Invocation.ecore"
nsPrefix=3D"MARTE.CoreElements.Causality.Invocation">
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"TerminationOccurence" =
eSuperTypes=3D"#//coreElements/Causality/RunTimeContext/EventOccurence ">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"endEvent" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//coreElements/Causality/Invocation/TerminationEvent "
containment=3D"true">
<eAnnotations source=3D"subsets" =
references=3D" #//coreElements/Causality/RunTimeContext/EventOccurence/eve=
nt"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"TerminationEvent" =
eSuperTypes=3D"#//coreElements/Causality/CommonBehavior/Event ">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"behavior" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//coreElements/Causality/CommonBehavior/Behavior"
containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"StartEvent" =
eSuperTypes=3D"#//coreElements/Causality/CommonBehavior/Event ">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"behavior" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//coreElements/Causality/CommonBehavior/Behavior"
containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"StartOccurence" =
eSuperTypes=3D"#//coreElements/Causality/RunTimeContext/EventOccurence ">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"startEvent" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//coreElements/Causality/Invocation/StartEvent"
containment=3D"true">
<eAnnotations source=3D"subsets" =
references=3D" #//coreElements/Causality/RunTimeContext/EventOccurence/eve=
nt"/>
</eStructuralFeatures>
</eClassifiers>
</eSubpackages>
<eSubpackages name=3D"Communication" =
nsURI=3D"http:///MARTE/CoreElements/Causality/Communication.ecore"
nsPrefix=3D"MARTE.CoreElements.Causality.Communication">
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"InvocationOccurence" =
eSuperTypes=3D"#//coreElements/Causality/RunTimeContext/EventOccurence ">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"sender" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//coreElements/Foundations/Instance"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"ReceiveOccurence" =
eSuperTypes=3D"#//coreElements/Causality/RunTimeContext/EventOccurence ">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"receiver" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//coreElements/Foundations/Instance"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"Request" =
eSuperTypes=3D"#//coreElements/Foundations/Instance">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"sender" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//coreElements/Foundations/Instance"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"receiver" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//coreElements/Foundations/Instance"/>
</eClassifiers>
</eSubpackages>
<eSubpackages name=3D"RunTimeContext" =
nsURI=3D"http:///MARTE/CoreElements/Causality/RunTimeContext.ecore"
nsPrefix=3D"MARTE.CoreElements.Causality.RunTimeContext">
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"EventOccurence" =
eSuperTypes=3D"#//coreElements/Foundations/Instance">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"event" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//coreElements/Causality/CommonBehavior/Event"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"BehaviorExecution" =
eSuperTypes=3D"#//coreElements/Foundations/Instance">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"start" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//coreElements/Causality/Invocation/StartOccurence "
containment=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"finish" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//coreElements/Causality/Invocation/TerminationOccurence "
containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"ActionExecution" =
eSuperTypes=3D"#//coreElements/Causality/RunTimeContext/BehaviorExecution=
">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"action" ordered=3D"false"
unique=3D"false" =
eType=3D"#//coreElements/Causality/CommonBehavior/Action"/ >
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"CompBehaviorExecution" =
eSuperTypes=3D"#//coreElements/Causality/RunTimeContext/BehaviorExecution=
">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"exAction" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//coreElements/Causality/RunTimeContext/BehaviorExecution "
containment=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"behavior" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//coreElements/Causality/CommonBehavior/CompositeBehavior "/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"participants" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" upperBound=3D"-1" =
eType=3D"#//coreElements/Foundations/Instance"/>
</eClassifiers>
</eSubpackages>
</eSubpackages>
<eSubpackages name=3D"extensions" =
nsURI=3D"http:///MARTE/CoreElements/extensions.ecore"
nsPrefix=3D"MARTE.CoreElements.extensions">
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"AssemblyConnectorEnd">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"assemblyPart" ordered=3D"false"
unique=3D"false" eType=3D"#//gcm/AssemblyPart"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"endPort" ordered=3D"false"
unique=3D"false" eType=3D"#//gcm/InteractionPort"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" =
name=3D"ClassifierTypeExtension" abstract=3D"true">
<eAnnotations =
source=3D"http://www.eclipse.org/emf/2002/GenModel">
<details key=3D"documentation" value=3D"The types used to =
extend the classifier type&#xD;&#xA;Allows to add &quot;types&quot; to =
classifiers, like uml stereotypes."/>
</eAnnotations>
</eClassifiers>
</eSubpackages>
</eSubpackages>
<eSubpackages name=3D"gcm" nsURI=3D"http:///MARTE/GCM.ecore" =
nsPrefix=3D"MARTE.GCM">
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"StructuredComponent" =
eSuperTypes=3D"#//coreElements/Causality/CommonBehavior/BehavioredClassif=
ier">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"ownedPorts" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//gcm/InteractionPort" containment=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" name=3D"parts" =
ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//gcm/AssemblyPart" volatile=3D"true"
transient=3D"true" derived=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"ownedConnectors" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//gcm/AssemblyConnector" containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"InteractionPort" =
abstract=3D"true" eSuperTypes=3D"#//coreElements/Foundations/Property"/>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"AssemblyPart" =
eSuperTypes=3D"#//coreElements/Foundations/Property"/>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"FlowPort" =
eSuperTypes=3D"#//gcm/InteractionPort">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"isConjugated" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" eType=3D"ecore:EDataType =
http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
defaultValueLiteral=3D"false"/>
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"isAtomic" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" eType=3D"ecore:EDataType =
http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
volatile=3D"true" transient=3D"true" =
defaultValueLiteral=3D"false" derived=3D"true"/>
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"direction" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//gcm/DirectionKind"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"specification" ordered=3D"false"
unique=3D"false" eType=3D"#//gcm/FlowSpecification"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EEnum" name=3D"DirectionKind">
<eLiterals name=3D"in"/>
<eLiterals name=3D"out" value=3D"1"/>
<eLiterals name=3D"inout" value=3D"2"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"FlowSpecification">
<eStructuralFeatures xsi:type=3D"ecore:EReference" =
name=3D"property" ordered=3D"false"
unique=3D"false" upperBound=3D"-1" =
eType=3D"#//gcm/FlowProperty" containment=3D"true"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"FlowProperty" =
eSuperTypes=3D"#//coreElements/Foundations/Property">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"direction" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" =
eType=3D"#//gcm/DirectionKind"/>
</eClassifiers>
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"MessagePort" =
abstract=3D"true" eSuperTypes=3D"#//gcm/InteractionPort">
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"isConjugated" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" eType=3D"ecore:EDataType =
http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
defaultValueLiteral=3D"false"/>
<eStructuralFeatures xsi:type=3D"ecore:EAttribute" =
name=3D"isAtomic" ordered=3D"false"
unique=3D"false" lowerBound=3D"1" eType=3D"ecore:EDataType =
http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
volatile=3D"true" transient=3D"true" =
defaultValueLiteral=3D"false&quo
Re: [QVTO]Aggregation Relationship? [message #78795 is a reply to message #78781] Thu, 10 April 2008 22:35 Go to previous messageGo to next message
Radomil Dvorak is currently offline Radomil DvorakFriend
Messages: 249
Registered: July 2009
Senior Member
Which build have you been using for this?

On Fri, 11 Apr 2008 00:06:05 +0200, kaiserlautern <comouraf-lixo@yahoo.fr>
wrote:

> Hi, Radek,
>
> Thanks for your quick answer. In fact I made a mistake here. I checked
> one
> of the references (ownedElement), which was aggregation-type and assumed
> the
> other (parts) to be an aggregation as well, which it is NOT
> (containement=false). Anyway, since one of them is containement-true, I
> should have this reflected in my target model, or? In case you wanna
> check
> this little detail, I send one metamodel (the other is UML).
>
> Thanks,
>
> César
>
> "Radek Dvorak" <radek.dvorak@borland.com> a écrit dans le message de
> news:op.t9eyt3e8hj1a1g@czprl-rdvorak2.emea.borl.net...
>> Hi César,
>>
>> At the first glance, you seem to be doing things correctly.
>> Simple assignment to containment references should work as you expect.
>> At the moment I have no other hint then a re-check of containment=true
>> on
>> the
>> affected references (which I suppose you have done).
>> Or you might have hit a bug.
>>
>> Would you be willing to post or e-mail a fragment of your model&transf
>> to
>> me?
>>
>> Regards,
>> /Radek
>>
>> On Thu, 10 Apr 2008 22:26:22 +0200, kaiserlautern
>> <comouraf-lixo@yahoo.fr>
>> wrote:
>>
>>> (sorry, this duplicate post is just because I forgot to put the [QVTO]
>>> marker)
>>>
>>> Hi,
>>>
>>> After using the transformation down below, I expected to have a Model
>>> containing a StructuredComponent, which, in turn, should contain an
>>> AssemblyPart, since the attributes "parts" and "ownedElement" below are
>>> aggregation-type. However, the result was simply:
>>>
>>> <MARTE.CoreElements.Foundations:Model name="MyModel"/>
>>> <MARTE.GCM:StructuredComponent name="A"/>
>>> <MARTE.GCM:AssemblyPart name="propA"/>
>>>
>>> While I expected something like:
>>>
>>> <MARTE.CoreElements.Foundations:Model name="MyModel">
>>> <ownedElement xsi:type="MARTE.GCM:StructuredComponent" name="A">
>>> <parts xsi:type="MARTE.GCM:AssemblyPart" name="propA"/>
>>> </ownedElement>
>>> </MARTE.CoreElements.Foundations:Model>
>>>
>>> Can anyone tell me what I am doing wrong? The transformation is
>>> reproduced
>>> below.
>>>
>>> Thanks for any clue,
>>>
>>>
>>> César
>>>
>>> ------------------------------------------------------------ -----------------------------
>>> transformation UML2MarteTemplate(in uml : UML, out marte:Marte);
>>>
>>> main( in umlmodel:UML::Model, out martemodel:Marte::Model) {
>>> martemodel:= umlmodel.map umlmodel2martemodel();
>>> }
>>> mapping UML::Model::umlmodel2martemodel() : Marte::Model {
>>> name:=self.name;
>>>
>>> ownedElement:=self.ownedElement->select(oclIsKindOf(UML::Class))- > collect(oclAsType(UML::Class)).mapClass2StructuredComponent( );}mappingUML::Class::Class2StructuredComponent()
>>> : GCM::StructuredComponent {name:=self.name;
>>> parts:=self.ownedAttribute.mapProperty2Part()->asBag();}mapping
>>> UML::Property::Property2Part() :AssemblyPart { name:=self.name;}
>>
>>
>>
>> --
>> Using Opera's revolutionary e-mail client: http://www.opera.com/mail/



--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: [QVTO]Aggregation Relationship? [message #78812 is a reply to message #78781] Thu, 10 April 2008 23:02 Go to previous messageGo to next message
Radomil Dvorak is currently offline Radomil DvorakFriend
Messages: 249
Registered: July 2009
Senior Member
------------vSkMZ8KcB7u8oggSBcedQO
Content-Type: text/plain; format=flowed; delsp=yes; charset=utf-8
Content-Transfer-Encoding: 8bit

Hi,

I think I have solved that, see the small attached QVT project.
The 'parts' property was actually containment=false, and even
transient=true so was actually excluded from
serialization.

/Regards,
Radek


On Fri, 11 Apr 2008 00:06:05 +0200, kaiserlautern <comouraf-lixo@yahoo.fr>
wrote:

> Hi, Radek,
>
> Thanks for your quick answer. In fact I made a mistake here. I checked
> one
> of the references (ownedElement), which was aggregation-type and assumed
> the
> other (parts) to be an aggregation as well, which it is NOT
> (containement=false). Anyway, since one of them is containement-true, I
> should have this reflected in my target model, or? In case you wanna
> check
> this little detail, I send one metamodel (the other is UML).
>
> Thanks,
>
> César
>
> "Radek Dvorak" <radek.dvorak@borland.com> a écrit dans le message de
> news:op.t9eyt3e8hj1a1g@czprl-rdvorak2.emea.borl.net...
>> Hi César,
>>
>> At the first glance, you seem to be doing things correctly.
>> Simple assignment to containment references should work as you expect.
>> At the moment I have no other hint then a re-check of containment=true
>> on
>> the
>> affected references (which I suppose you have done).
>> Or you might have hit a bug.
>>
>> Would you be willing to post or e-mail a fragment of your model&transf
>> to
>> me?
>>
>> Regards,
>> /Radek
>>
>> On Thu, 10 Apr 2008 22:26:22 +0200, kaiserlautern
>> <comouraf-lixo@yahoo.fr>
>> wrote:
>>
>>> (sorry, this duplicate post is just because I forgot to put the [QVTO]
>>> marker)
>>>
>>> Hi,
>>>
>>> After using the transformation down below, I expected to have a Model
>>> containing a StructuredComponent, which, in turn, should contain an
>>> AssemblyPart, since the attributes "parts" and "ownedElement" below are
>>> aggregation-type. However, the result was simply:
>>>
>>> <MARTE.CoreElements.Foundations:Model name="MyModel"/>
>>> <MARTE.GCM:StructuredComponent name="A"/>
>>> <MARTE.GCM:AssemblyPart name="propA"/>
>>>
>>> While I expected something like:
>>>
>>> <MARTE.CoreElements.Foundations:Model name="MyModel">
>>> <ownedElement xsi:type="MARTE.GCM:StructuredComponent" name="A">
>>> <parts xsi:type="MARTE.GCM:AssemblyPart" name="propA"/>
>>> </ownedElement>
>>> </MARTE.CoreElements.Foundations:Model>
>>>
>>> Can anyone tell me what I am doing wrong? The transformation is
>>> reproduced
>>> below.
>>>
>>> Thanks for any clue,
>>>
>>>
>>> César
>>>
>>> ------------------------------------------------------------ -----------------------------
>>> transformation UML2MarteTemplate(in uml : UML, out marte:Marte);
>>>
>>> main( in umlmodel:UML::Model, out martemodel:Marte::Model) {
>>> martemodel:= umlmodel.map umlmodel2martemodel();
>>> }
>>> mapping UML::Model::umlmodel2martemodel() : Marte::Model {
>>> name:=self.name;
>>>
>>> ownedElement:=self.ownedElement->select(oclIsKindOf(UML::Class))- > collect(oclAsType(UML::Class)).mapClass2StructuredComponent( );}mappingUML::Class::Class2StructuredComponent()
>>> : GCM::StructuredComponent {name:=self.name;
>>> parts:=self.ownedAttribute.mapProperty2Part()->asBag();}mapping
>>> UML::Property::Property2Part() :AssemblyPart { name:=self.name;}
>>
>>
>>
>> --
>> Using Opera's revolutionary e-mail client: http://www.opera.com/mail/



--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
------------vSkMZ8KcB7u8oggSBcedQO
Content-Disposition: attachment; filename=marte.zip
Content-Type: application/zip; name=marte.zip
Content-Transfer-Encoding: Base64

UEsDBBQAAAAIAG4Bizg1Odov+QAAAPgBAAAOAAAAbWFydGUvLnByb2plY3R1 UU1P
xCAUPNfE/7DpXVBPHt6yiRqPJsb1bJC+bVA+6oM27r8XKHXTTbwxAzPz5gG7 H2s2
E1LQ3m3bG3bdbtAp32nXb9u3/dPVXbsTlxcwkP9EFR8xKNJDTK8T24CTFoWV FBF4
OWdSeWvRRQF8OWW2OoQC+Ap9jNp0rwOqjCp8SFLpusLUHE89Q2X0EJDZW8u+ p8i8
NexlivdZgnQaImkk9WNODzNuoNMqDy7pWJkGvvAoAql35V2U2mWHTC3XkzQj ikjS
hYMnG4DPTDXk547A16HAz7tUZimbisWRsL6ewb89687YfplH5vDnIsrNi7hk nFz/
Nr3+uV9QSwMECgAAAAAAaweLOAAAAAAAAAAAAAAAABAAAABtYXJ0ZS8uc2V0 dGlu
Z3MvUEsDBBQAAAAIAMsCizjxnw0t0QAAAE0BAAA1AAAAbWFydGUvLnNldHRp bmdz
L29yZy5lY2xpcHNlLm0ybS5xdnQub21sLm1tb2RlbC51cmltYXB1kMFOwzAM hu9I
vEOUB4jZjlHLhHbqoRfQJK5RZ0qkOg5utu7xcVMYJw6Rovj/vvxyc7jRZK4o c+TU
2p17sgbTwOeYxta+vB27zh6eHx+ai8Q+ZK8n6+jIqYSYUMyNor/j+xVXYZq9 vrf2
s5TsAZZlcUyjYxnhve9+I5vynqoxHKaYZ6xR2hN8XQswTdD3fMbpVAnQlvqR tjKm
oa2QmfkiA55euz+fOhwFKegIS6BVoH4WtKYEGbHUdJ5C+WAhD4KbBCoEFdju Pxis
i4B/NqGzb1BLAwQUAAAACABPBYs4p4LjOkYBAABWBQAAGAAAAG1hcnRlL01h cnRl
TGF1bmNoLmxhdW5jaK2UTU/DMAyG70j8hyp3UtYTQhsTGtuJDpCKOKKs80pE Porj
VNu/J2thnbQhoS2XHKLXz2s7jofjtVZJA+ikNSM24NcsAVPapTTViL0Ws6sb Nr67
vBgq4U35MbFmJSuPgoI8oU0NI2ax4lAqWTvgOtP8qyFuteIvDRUojFtZ1K2e bTkL
axUIc0+EcuEJkk/Y/M2QhgBrhHDyMsRhSIDAkBuwpBHKB3tCDyyNiM6OoLWo T8Hu
d+sZbQ1IElyHDMITkKBAT6w3tEsy63AuoEx1AnEFgjzCXGjomxqPmcViarv0 Cna0
VAskSOl3wlx3sQ21ZzqRwAoot0tQfUdqJWjrc5siOOuxhJ8M8g33WsWzzP5j mbe1
rrWM4luEf9xXOp++vedPD9PHaOwsPhtFCTN5OA/da7RT0GrO3QzeQXHg1e+F 9Mha
DPffUEsDBAoAAAAAAGsHizgAAAAAAAAAAAAAAAAMAAAAbWFydGUvbW9kZWwv UEsD
BBQAAAAIAEIHizjVsHG6Wy8AAD1UAgAXAAAAbWFydGUvbW9kZWwvbWFydGUu ZWNv
cmXtfVlz3Li56PupOv+hS6k6TzfiZJKz3EnGKVnLjHIkq6OW7fvmYpNQN2I2 2cNF
y/z6C4AbCILEwo/spuw8TGQJBL59wwfgb39/2QWLJxQnOAp/PvnT6Q8nCxR6 kY/D
zc8nHx+u/vg/J39/9+//9jfkRTH66XLpel/dDVq87PBP1Vc/kq/+/d8W5H9k sjD5
ifzx55Ntmu5/cpzn5+fTaLc5jeKN8/9ur0/KIUlzyPOf2Ygff/jhT2TYzcrb op37
RxwmqRt6qDE7g6TxMfICvE8QmwHtHuksPzqXdNjJInR3ZPAOpe4u8lFQzBQm H++v
qzkc8uHpzo1TdFoNPEXF98kyRo/4hcxBB5y8oxP8DZ2FYZS6KUE/WSRRFnsa EP2C
wlsGw7sciL/5ZDEcJIuv6PXnEz/ysh0K80lPFk9ukJE5H7Y4WTCAFuQHN1zg 3T5A
1bhF9Li4Pbt/uFz40c7FYT70P/7wcvFX8p+zv16n9LMYBchNkL/IQh/Fi8vl zYIw
erF+XZxfni1urlcPZGaf/HB1c3ri5Bg6PIoF0qtsvc/5nxR09VGCNwVWIlEZ XM5F
PaJNUjbklBtSkQaEwAYkLvBaJNsoC/zFGhGi7aInQjNKmRjtA9cj/yAkK0cS 1L0Y
r8kvCdlzHnCIkGFxWtBSSk05Pckst9H5uZqWTjFSg6an5aROz8IX97cai5JR OgvS
ySox4tbqFCM3dIPXBCd9gnTGj+mCojFo3sLUQMVSnH7551kXWxvTO3SgFk1P 2ZR9
krTSXHKlu+JKseBSc8Gl7oLLM0PxfUq6hPbT6qZrTfKnWkDPAzdJ8CMmHnVB XONP
6euezFv4XPbH0pN9onK22iOPjPYK2XPXSRq7XvrzSRpnqJdYNzhNUewGbJqk G2qn
ObBAotSEhQybU2HuWm8M0CNz0CkEBAkiexQ/kK+Sn0/+4DiE4I6EEI7Vkpch 0eOY
zWC37LuaLITkhAVemhEcrpBL/h9Jlr9HjyhGNK4pQEAEhALzk0UUEyeN/J9P Ht0g
4WlO/5eF+DdqZ/K/LYLoGcXvI+LXSexGAH5gyxSgXripy4B3OBTLZThaOTyx hnDt
QxYEcqo1RcORctmOe8VUF+jRzYL0UKu7KXrAO2S/vLEMnaUpcRhZWskQc0BA 0rOP
8Q6n+Anl4lOhN4bQvI8iEp12aNs0pPs0HulK7MagHMGVZGkzk7lOShXYjEGo 6zBF
GxS/Ue0ssRuDch/DgK6F/A8uw/iNkrCF5hi0vEdvln4MNQXNJLG0PEStwpae 6LQa
0xNdn9YTWbGt/BwgvoueQ+RzDDHhQbbfVzz4Y0+Mt4wjMjB9PVl4EclKcUiT UyEj
GIrC3b6IIsdBgZu+DwcAlayIZRf21YACEXbpxuQfKfVRo8hGPf3YhK1WsqMs MQf0
j3I7WSMEqJtrN2FkGyXxquAEJTJbF/matCqHDfcgOxyOGCq3AkB7ON2XWcCJ k1sc
EltiaE7tc48hkLovU0IKoCVc0eNhWpPCTHoZ1I1j0SUVnea8oztQjoHapLXz CefR
bh8lBMsJ1qLJVEwiZZ2lmnANFxtcrF1rX5OlghxZuqQq9HnHzy7fI0mydYJS Qpy4
hLWP5I4Q5jbsjiOhCaRAnkdBgDxdZYdmnVet/p15Fsx7yPaBlnZD8y2lC1dI JyNn
Zm9M47YR9g7CNY+t/C2yzZpkfr4/YlmD+MYku2e7TLuKdfmyJ1DR/qi+OhY3 qq+S
xU+mixFFokTokxtjdx2gCxznXup/ceg3FbFAtAQfi2mD8PcoS6uehz/1D8Uh P/hH
4CC/oozcCEFs17ayoeR1t44MA/tChYopSzFfaHWxEVwurbPOdnZCi1eE/QKE AvS9
RlLWhDBywnG3dwmwB2H3OvJfbak1Wu0gcMNNRuyNFWBwUgjA2dI4nbtBoOIv Zwi5
n0E2R3IgIOobQ6nbXPIpCoggB6hQqkVKlDfBtZYtCLhEvny4Uj+JFXBIAPkE SBMJ
/6rpR5GmieWH/vcYZAfAsvhlkDAkRpQxuhl9QEBKqERHfDAmvspAK7WuOTu4 ChL9
S3lbaM8IU1dtbzUKZsBkFuVPEJBRdNFLCiXO9c/nxcQjRbTl9MdjnQADmhaX SH54
bsOo/kh1QsaVyfBB45h91QUwIrdF69ice7oAZQmLbEdtAziNKQoLB5WSqITi TYuJ
G2/YCY0pM93BMl23ljTBVOwfdElxPR2oGBMD6mM6rTuZELdjpMcrijudE9AA TMZw
/PgQZ7OF3isF4MAIDGs1pE3teoVaYaTWeRhxditNu2ZHYNNyX1rjhEq121K0 k8o/
td0eZ9CodF7AXPi35drCJOKpJ17mxioNtmup6yRXAHsPI9Lqbp2IscEoGoyM FVep
qbCRUpsOU7KVqgxghNTB6WqVw5rkAzmRyPOy+Dr00cvUIMPIp4R7Rg3mWR6a HYlt
L8E5iHH/B+uWM11aAnK5vHYMIJC0JwYQRmrFAOLsltF22V10qAOqBIGdRUut cW4F
qqGsq+hQFGOdRdeEbJAUE9X/oVwk501z5pHtn7C2McVaRYmKYh/ckauVhy5M NLvO
pqpeTa384+d5hlaUdY1NZA9a0u1towSFZwHxcqFLJdKsvmMo4c25p99CFjr0 gLvN
AAB8mr88G4SNo0g0Tm4oRWZyfuUjdaxQsBbLmO/S26PUkuAdhsxNJ8v5du7L DMqF
sl9JcoemwHakDuy/XxoHZsTcQcwcZJ+UGqswEdXGOWcl2N0H5V167OsPuVaE 3J1S
ZtNWt3ZIpl0LQm449UV1mYpk7n+5T+5pRpwZPd2NbJfIj+JLpvejjO9IMpy2 fVsC
LNHL8LWLLrQn8HTF78hryjFd7jK/VrBLis+5IV2tyvyYWlzby11RbWbaqrOa ww1X
5twNMPl1rFxscR+d6FK9DugcNr74S9PDwtxAx+bSuIXuQ5QuaEWE/IFdKEdv rlzc
3p7WF0N+QMhH/iKNFlv3CS3c0mqimF4piUoKNi2+7No5kFCmQTexsD/c57Cz BNX0
MOm4ngw0J297pgW62+cZvf6k7GhE3OSMPV2sy656BLBGsOIXQPQXGhcUVPkV cCBf
3HILYWgs94LeI2IHcAR2/0QD8nM3S9wAp6/OfRZS1170X7F6Vrny5QvyMmbF VEoD
WxWoRh6O/PkVIHl2i+GOs3WCXyXSk1K67tYSDPxUdG/ZBXezidGmcJ0gOUkn 5Gf1
Uqz7uTl9cTqPZTPF6SlitaIQptr4at+U24kPpzZDhYQ/qCaSqYG9cK5MQh9h RLJ1
Ccq659S8sriuf1ZNf5OptIA68W412CzardfgKC/d79pFYW3vDeBxmt+2wNMF 8FSA
ocEVfYPyEOON9Fo/Y/th7zif1CGlpfXoorpz+dQKi+R6Z0bNfFpLWjqWi5ZI IZ/3
wz2dPe3eHh0TBcFq5qQrkTPjuHGcJLC8XFZcpr9CZ40qfUlAMyDU9R2dqMmM QA66
ySFys7V4acuTjQoKgX6Kw/jDhMmWxEOlqVp3InHyKmJTQC9fUhTmDZHi+oo9 ME28
UbUAZwIaKxsiDmJea2YfzlvtNW8ZBJe4+lbAA1Ceu/xwWud25sl35Ay11Hb5 qllE
U/QMTbSlDLo6R0uPxeR1JTSysF8ebV+HT1G5MWUSadff2UfZ3Nq2ETaKdzhk U9zR
Xk2krlJ11npYfFnPAhJ9h/7lFAF4TUiHo0i+tFqgxghsemnroFaGoA5lQExt izqW
Fif/GEJE1pYx1sAcDdbemDFhlbpx+p38ByX/MVrLhJOLyewlJ4xv3FIaBAVU WgmJ
beKCxqfDCnA1BJaSXrP5KMUd0ccOxxF1PlWodu/ALck98hB+QsdI3DgHbebk JZAl
JiXPCpbZy+cbY7yB7W3qhpnxbX5rb30FGCzlV1DrA4mx1Q7I0HR+pC2Qcv66 FeFQ
toFGTVNHabUoqSM1EFtCL7xItodJ3m2RBZGzvDCoK2Wdfr0trhBcsSvQmWpw URsF
J628o+ioCIxezqapgSqxmUjPD1QEaNe/QbChLzFjD+/dMFV1aqkwsmjdGhwV abes
1NtoOkFSPdqsaYVbhQvbDExpkqDdOnglQh4iLyXSLXYN2RnBYtql2g93GsKN t3PO
+HkAerlIzrCMhoHEjo3lRp5NBdrjV4+ka9Ybrr093dP2xj9s0YIikCyyJO+A ZzJI
fiJ/8Cr42Zi6X/4sILqb0NGu7y/+47csSv/KZsl/pH+ov03+zyLAX9Ei2wWL hFAb
RWyofTe9RGllv5JoMeF4h/r+ct75HDr5U0lXs8pnLtHIZ6Y3RPYV6PKHRl8Q n9fZ
KE/eZktkvt9ua7tdmTb1N9HaexxAkBs2aQx4GZ0rgzwC5NXcfeDLFcmovCmw 1rpt
uXVw2cbD5eyaZs0rYuxynMX1ZDJvKC+Sw7mEof/KNm5Km3X1hWWks7n8itLG 7Hx5
UzWRoH2WRjvsHRnKGpcFdNKk8yIBSxLpXUWumzZQ2e26g9y2UNM8eqwPZBMq qm/y
i3BsrBjfUN/x4kv/ey/ar71ov/Uy2Bi3KTTYq+pcHmzknpjV1HiFGYQY9ULm LmEu
ajmYULcoSUgwrOe+v7u2767tu2urXRvehOLlMjxo1s3aFNaVZPLheVIcPWHf TNEU
YKL4qXVn1GA4Y/RbRng1FZyDraiMWTDSBUgBNl8BwKjOt7nSN+NKpSI2WAry ScEV
YRI5aC5lk2bXW5PljlDnyTe7Mlox7VA2lQUQIAntqkAPZsn7OHJ9z03SXEe7 zl/k
MAikhzFoDxEJsv0MVKQb9gZafOkV29PSKV/3IaIrj6b4sHknCv1JaeTTaDei y46U
nIKR56xVkeVwh9rX0dnVuYgWz2gRIuSTQD0orhCooFr8vd7JqX+5RukzQiHb /4mJ
ji32xBot3NBf4JD7Db9t07VpY8fnNNpHQbQxKkHUXI2TnRPg8OtDMYtzw/1j lMI+
mEA2vBd3XrMlTpfCVRlG/lxzi4zQ8US+RXa/6twiI3+y2SK7wEkVAIqmhNjD yMv/
WxRszvKfjaNMyQ4SvV09XG1dxVUgum6cyl5CZ3PYnOAJ0h6l7CmDFeHVHCB+ jKPd
Aw4UfbEmsDY0m00NDHIaHQbgDp/T1sskl9Yuzcz52KOfp7m4c3TS19PbLEjx PsAe
CaoLQ2VQaAW+pojZUduWD+H+svYVldPehd5+x5rKFBBy1V2nB369lTHM4sb0 GrFJ
r+RlLJgPuInSiymCpk43MPYNaJIlhytQgn83pEZHXFYsYF5qvw6VXWTaXYdB I4bt
tP18qKtsOKS+oBEbWzFP4tKGy3IU443pPd61MAd4Hbvxq+MXTy9XFvBTnosB KNve
fWJXDpsA2BkmdMJ76xKhfoGA9xGnqTHANhACmIOLfLeJimY7uOjP7hyrBVnh 7b4K
rk0XHW6rcEJCoyyIgOQJ7L0AVQZyQf4Z+mxAE1LFJpi5JrQ0F0DOijh/ZGaD 2DYA
gn03dSMDDCCR96gI4qaWSe1CCHhhAcoUzQTqJPbU5YWhBYaREozUjTcoPTT4 AGom
DRnszxKw0mRHUM5KlV3FGPbHulzaMXNePOmbvyyIYp1jRjlE3BeWB4z2tAyU 7+5U
c9GytH79tvigIZjTnnkhgZjrbRckhmFHWJJoh9It8R3scYjGsxAE5/Lm/cXf m8o0
2usPTTLZhbbVocZl4KaPUbxrTsoT7Dvfil8P9uLuIw4ti5wto+sRkn89JxCm sYvh
nulI8Q6xZ2PvUUCbMC9D6ksRvRq0sV7rFxCOZINCFCu6nPSdiEpOIWINxtH+ TT4V
wN280EcAzqhAPB+T6/l0ROnyOGChDZRytWFXmGEADPCOUIcdLysVtQm8IiPv RiZ8
3CfOh6vll9pasn/CmgStLf+RNv1hT5am7Ik2abBG7W1XLMhedusJBd+7Cfbo IOYy
u8JBOsARhiojQgaWOL+uceEP1dDP2f4ZUj5S4ePEi1Eq5iXiKBRSNstO2ECU f3aI
YA3xRHPIRgL5s1TCQ0cgLYTBYDcm0AO0TcCaQGvbaynU+a0M6ue+ANDxspj8 Oy1X
HJEV5RLNqNXoTsZOFlN5dCrOCOFqmy6Q6iBBy1IbfBfs8W6hks3ep4Tdayjs UGUM
WmlQL68gAvzoCdG30x7e2/q+fghByfWPLGStnJWaaVGrHN1TapE7vaLdBOn5 vfZo
PdcnWcWKOPw8QMKRJiw/ywtAgJlfG2VGwhJGVK4KYZnzB2LewyLQKe4TuJoQ JSRj
voVGScKTlkTpYwcUILUlQjyLYVeXKjHqnJbHVGpktEV4OMPjvEbCGK4bLP0I JsJb
N9wgdx3UgqRxXpPv3NIIVAhWorKPHW9QdAvHMCch+Me1QggMud7yqG1+N+d/ Q8wn
uR5J7UD6J26o6t3tEdS+OlgLhQTWj1RCjhHWlsyvWUQ8blYrBKnWsFp0A5sB K2oq
AMwWTb5QMAMo8XmEQw+z9p/agpuYadH8QyRTBUgps9O2hDV33iKhNcxub3FA j2IO
55Qmtd9Let/5UXF+jR6jcUtwc2KxNRndR/UzeN8MFYEDnVu0W5Mvtnh/aGVJ Oagg
md2JQLEUgMvc5UQctZgwexnVLrBRMM48AmyCektr/Di9olpjZk51JK/+0AYD 7dXz
foQ2EBpgnBYrNYTQINyhX6uvy5LtlxY/Vq0ookRZK/F7dYA+0F63CuQOBOwu Ycme
0ONjiEe8LbxiRb5z5tDVYOAvLsRiE0KRXwrtu+ZsFsZHojz5/zlNJgh0GeuF Z9bP
9ICpJpnRrSYUnVn3LRRxUkVBWO7wzezETbTBnhsU5kLq6Dt5AmIYiHDiEIcb qzft
7MisQUSpT+r2SuzYpL5XqD+x8gzcipZcr2bou9Ndl6V2DQbjtRhYi2JmYSCn sN9R
WKgnJEG7tRrcxhShYyFwahtTy3f9I5CtIe4I+XptF9BxOThZ6VplsmJNI9np Phxq
1Hs1xa1Yxv7qTxsNkiHlvswcqXZyqTyXN8QkcErY0F8Y0N2XuYJe2BBe+Vqg W7ev
MlyM6hKDw5cLgj81U4YhTPMzqzBGWNnSCjZmOah3wQ1bPIl4t10AuJcp6TuS p7mA
s8p/0NpcHALu2cvRgivzDhcjCmFTeZv/BPMRR4HAcBN7vo2jkJ76irFnWj9s fWpX
S2xDoG8OxKb5FfGovhv7Yts8nUhoiX84u24JgzDk48MP0p75jsF/krxL0Tn4 vBr8
Z9Xgh4dq7F+UYy/eV4P/Uzn4/Jdq8H+pB9cz/7dq8ApT1WC3f+Vf/I/qC3qK px7+
f1XDf1muatb8AO9aWlI5RQGqffVSIc72mb8EyJa+OS3NAXFKBPg1ppUue+j7 u9b1
YWuXLR4fE+UxNSOygjudNj2/oufDk7J9SCHGjwMoqYILRJuX29eElpIpx7jZ 5bt7
Jlt+wqFfle8UhutvAIrr9Pp0+oHPnTw2hMoRvzdx6yKGLVgsOSjM09vg2tHi 2olq
VZvn/7Xo2IHsPbFpiE9RAeDRMoOcP14uUsgWsgIowl8fs/PN7WtJn6rixeXL nliJ
RGimsDfLa3p7e9EGNdJeZj9F72oI2r8Zp07ql77iuOSghEohCOWw75IwcJ+u MkNW
5rp+73qgra6gGCLR1Y3GRlaazmZ03bG9dE0gVNYbWKZywwuqlezwEwyWnwY0 AM6R
VzpDq9ivwRCxL7FSLF8ankeoEWD9AXAbyijy+l/Pk8DdWcJqaG7d4XCfhRQP 4oxS
9JLmGNx5XpYDAuFM+fpPTSCBPkLpgIhV3N79FgbRxo9kq1/9SdjTFbrlH9r0 TVIe
/RKQRyQg29Uf/AWEet2hyFvUOt5m/3gkSvhirIOmSlf2F1UX58BAnhCijdIR Rb7J
r/Nx7hH5OAHqU7Exd50CczBz11bYhqKOnRNDR/YFpUz3qE0ZQcRq368GUBE8 5bj6
eoVuotffD4/jOVgaAtYHeyWtg+F3ZJNKkBqA1qkUbkFETROXps72pyiamr+A UDZr
dXPVtVnIZIf+45Okv6W9Zn8DcY+NNGPrCu+ygMCBoiypWLJCqtd2dK06DJOI c1pp
bEcYtP0NdlF9TkpuFlXGBdKmjGdKQCyIaczcWYHuCZRareNWoihpJcmPUdHs ZKDd
MGwmsQY55h6cMAW5gLGYeujTNCZotIzA81ajfccgJ38qak7IZya4+6H1/H8q e2wf
ej+hWL0H3JctPAn7qUaPQJkbMtOwbxlH1PvhcDMg9hMnGRwAtqDSMtRleAyD hCNM
CmC1W3QS4R5ovqv8wDI+aCUahw3/8jqW/PpI+j9FqjVCJAhkVVgVT/e0xBQR LpS1
LOWmtHiTMs2kiwUuPKx1GtLscLOOZnd4yIcZnnomRR1nhErOMCUc5NoN4lsg BSsr
+7MC2i+NwXhh1CjZN5O5kiTAgq3UevEX+glVBbFYezbE/MzTKMweEd4FvAOx viXL
EhN/5GirNxr00b4gAL+aJv2aCJXUFOrVAxMX8XUSU78rfj8kXWnB0ogZ9Lkg PrCi
daOI0M8niICVsfbK6ZBfHGgQJd8ggFPfoEZJqtGCTtExufNCTSyHQ7SMK1pe pE3B
phzLvIxuX67sVxJZp5h0yDdBqBTdlrzSv5UklE1LiXGBvMAtXXPnCo4wVNn3 y8AS
5+f0uVcn+J6ICxwjZtOV70jg0IuRy+JPp2+cj6pxcM9J8CCvqKwlKW3X/mdG zDX9
RAk9PbTbCzY7kCxt5mgPpaVJeStHu5GDXjHb0cbRGky02CM6ggPU1cchedwj r3Uy
+ZIe65EwiPxzR4NcQkPp8R47HjVMLZFNaoTaJpY+1F5WUYkDy+hZYTqwAbFd CKx9
U1BnBKy8BsN2jy2gFlvrDibtDZyxYGXywJXQTaDtrDU3uU5CGIJV+io6UxPv 0yFH
Tkp/qsCf5CZHQoTUkmDfCIXQyz7+TqE+Cv1WejJu2SZdFCFht6GYA91gPI65 E5Gd
SWwGFyg244PEQHMxmtMZvJhb7vZBuzKWG+z+eIibESKAg6F/BXIrUoDL0AMA 1CKk
yKvbA8yW6aakVB3kSU9H3pEHBaqUIx/Vl9+ccpNZqeVZUeKh6gnzoAnRG1oY YC0I
sll5vnQm+EXQxEM3XFxIYpBkpldj60d4t+X0/fvZlsDT0/j4d50isjUCK3dH HMQ9
t1BzYmOVMBOcin7d1wYOYzwF/BjTj31xurnQHMOnP7WvUa2mh7C80c5VXhFm u62p
lktQuavJDi54B0gsAQjSpjeYZwiO0jHsSWyyo2WXsXjEgwvKKnoRdaf8Kqko sQhm
uybsfaXO9U0YOhCUj8IV0ZaCQJ/5OQIP0UodiOd9uiKEjQwltIZMeU2HPWB3 Onex
WAI2PNKuE2dVtF2P1K/vc7Pryi1fK6/3YpQV8hj9lpFUT0zxhFHRI5VoX7dU TiM6
qrDScjmAeaqu+2c7pBAOtaI3IZ2HYjFEheqskm2eMRxwuClXBgijome450y1 nlto
zj1KosJeOb3PAvg8q3vXVx8tiDxFkIPhVtRHiRfj/ZDakGBGCRjtnUDLvDNA T8Q3
s4gNmKFCWQh8i6ujMcCSS1/VZ5bVgQEnw4LxB+BV0ixhgW0NmTftD++8kFss 6yq7
lnUcx/eVsw+/L8WSqgT3Rp/DZFo8BGKLom7/HstYRV7NJhbvqauH5fzTqqvE S/5U
d7Doi173saHuFE3WCNDTZWoCDt9mbwtO/2moAVDl/+eVT5bI1u2G32bdvpNQ ByTH
ynMD1hQkW6oHZs42WnnVR3Vaq+uqFKmkZaUz0zCbuhAqaMlP2W2a5IbJQgI1 RF+j
39xmZe6yuanlLXndraP+tx6tg2xbEbsjBHBpcNlcuQFT90lx69OVgwVptXdH Z2C7
Roc2ip0HE23s8U29wYEd7EiRQYwOOaDtyJ9sEFaeWJl1n7u39CDtc+7WcH6k +gsD
Z7GI+Vl3W3Ta+6mKJ3YmdYf2WACakcM79QfiQZKgRw277cVw6X5Pcp1n1T33 um4V
TEzVpxuP395WWYq2uR2Tz4DWdnIrNq5RHlGMIa3ttOEOpIU9qPqp8pXxdO4I 0xU8
OF2ZVgo13go5tKvXrCEGeB279C4eaR2R/ffLTT6mq6LYGNR3Om5Nnxz98Lhn sqOz
Yv5IKS0Is0+Ue+hNcJsfW22mr1hbvHIjXTwpLDs/lmhvoLuBp33WDP0mPWk2 /Mid
2SnBfijp+cDvJwPtTgYaHgs0ORG463joq90Bkm5RzcD/HszAhjvM91TplQNU TSHO
czCdBdqqLMyj0zBdDmcWHACAiQz/c1x4xz2CMirs4IdR6Mk0wI3sOo5LuJ/h daSM
/VvBopxs4Gr1lFf0QeimTmtgaMZaJukTgm+PZh/DgP4b+SWO4MQrYvs3SLt2 1gJD
MbY7+AbppdNAa04tWn/a0Lji7RGsRA2cZhduyt5Zf4tEq3ADp9oVbXQmIYDk OqZu
sjGhH04wEhB4OK/yzEc1aQV1hX83ErNvml5Z2dAxOb28/CHiSdzkt8PUszjG xNQt
3TS1asduHwdDMY58rHpvZliqtCwWKcEGSJbcSQA/28NDnuyj2B0b8FWxCCDc 6yxO
DE8+GQLNVgCEGMcx2mSBO24doFoFEHJiPBNk2IBvCPY5W6INM4CREtUdykqN So+G
uwRg4b9wanzI9sAg77duAhVDG0EM4RhFSz2cHM0L7UamCpcMgdJFdASageAI 5Nzh
vJHOzUOYWWnGzn2ZLeyHM0QA4tsICb7L7rcmu4Tu7Gr6siVsboSfL/BM8fJS y8hQ
j1KTbAXlh7MdB4uq7PMmzlwkZpB390JN7Tma+Q0AG6N9VrYcT64R1lCjl7S4 7/9I
3L+k+4sh1+rJ8t3Upbjp9WPl/yobbE0bsoSvtTuyGgJXcO3WJUnDC0TMwSai J6Oh
VbAibbkf9Amxc4mg+tec2pgc7Q0eNhEkOez2xmTti3odjZt41yHLv9zfdvUw kj/1
dS7eo7yr6DzqvGGTzODww5S6QaFpzGvF/3KG8uBl2wPTj6RXApSf0EdRwr67 DKBu
2kEvaEVCNOwhMHdHmN2gevWPYqH67b7mAiPf59IJRT939F8Q5MG1gKsNh1oA Wm/n
EMBQmDc+1RDQGS/LPwDITNykpJnc6MuJrEu8OTW62++jBKd68zkl3BDRBbv+ qLry
Y2TFGekaln0cPWHftNhucVXIWFflFlelzRX84hfF40NAWCjeGjqkydW2tF3P vMGZ
LnCbdaJrjCorVBIFKmsoF8jjeHVAxMYZRUT5zHYpKf+SW7fH6yavnW8leoDD zXTr
rUicTlgy4YKvobedbjl6F14WU416nXLR3Z4EWFPy8QJR1RyynrHafqSvB+ro bT7Q
SHGLuR0NMG7dkPw2j2qUoNSDjcDh1ugDaeVtkZ/ltxV1glIP6kkjT7mpHJO8 1fO6
OHJ+3n2b17nVbV7l5dHcZYadN5VbB3zIpza43/11Oj9CDWdZTzHiedx6Fcfi 6/Nt
HIURi9xaAQdBQULooYT12IpJ31FZobBoFMCx2XcojbFXBnPir+Boz6Zjb3/K k+OR
KFgEwd0EtA55naGwuWEUvu6iLMnns4KRko19zp8xH1GDxLXG588QAZexazAJ iuPn
Y4tyq1wbI43NEt1tBwqjgIhw6M56p6uY9FGbq8Ibtz92wlktBSvg/CFjGU04 krQu
QMehh30GlNM9jPZEo3xU+6gxnDyW5BkqaARnBHNniHo/YIDVAIFwKqPBprsg 4VyI
J/V/ZFk3OJ+KXPyUI1zF4TP6hRvWA2IZa0Y6laF8AQh430d+/05xb1Q8zLNr JiN+
5ybaRfcm2kX/JlrSN6ez6p33dFXPLZ999fkLnyX3r+QIozWeqi+AOBXXeVd/ ZFRM
eSazlCl/9yNR9i6XuJaUQVJKtlB2HHDxeUNfOi8ZdyDQoHcjVGspCqkGhesJ Mdih
XRS/0havqyhKl3H7bYl5cII+8Z5qbsMBbuDCAE+IgWYLPAsP6MNp1bRg8mOE QMcm
jandy6OEzm0aJUgWJG1Fs9cJURAGr6kw6Ia17Tst9MFtFwXywKrjAQvTJ4o0 zEf1
ZLQG/6XV504fzVX11S6aG2zmoflVrAXVKydJSxHsl9ac8ZJtC9o5QQIqhwRA YuDh
8HEAhKjQv4LJdEfzbvNwrI2EtxSSBD9kTip8LpEZ+mgflIwr0019qNs1btbF POvw
hJAnigm95x4lel9piGVpII8CCTJR/LqMsLLHx0CQOKvD2SXnsl4Khv5bl0BL G3sr
SwnGAQ6F/HwNuwzMWVVLkjS9WhUoYk+SfGN9Ilxu8wVzRCAxSZ5vszRzg8sX L8gS
vhtidPZ0rgyCWBjR3Fbo8Bgbpw+yRWHiOz+mITHxfMa+W6nrtyz/XLpxWhYZ G71D
el857VgoAUI9d/x1YzAYF6dJzsiobKfb1nx8eTFO3HWAKs6nJSKHzTTto18U 73B4
eHECSZU5L63f1N/1zp+9gEe0H8rYLunlnOo2THCqtu2hQNqpMrWiMEiN/kh2 g+Hk
iH2CIIr2GMVf52r00AtO5wq7zA8bmjjt3omO0EBaGBFhaO9J6cUdsskdPjwa oSBZ
NOxRR1jh02cVlMSAKIjghF3a7NXdhMXHYxVGhhQsJdAvY4R2+5QSdRYlVh+5 /g3x
c7Z1EPMaK3wFocSBrj1nPGgvwSqg5+ZmjMS/SOA2Vy/zilHgzzanoQfxDww8 iGdi
tYc429eO5eBeSeO9en1z3gF8hXbrwv8B7ujWTb7OxhfVZ/Bnu62wI/SeNQI4 iev8
GxCFiSryRdZOlgiJMM22uJZjcYETYs8IHsg/MCa2dr3ZTczbN4FMQpPwr27s P7sx
qr7BUdvGCN8s44h2C0TxBUoZzS5fUP6h/Ekj+RSb2N3tJN/+qPr2Y+ijx45H jiTD
7xpvC/0FhNoNL3oWuLTvUNNztn0ujP/57Kbe1o82s/A/tKE3Ht/mrZ5poB/f S/e8
gHJ7YQWN/g3hGC9IRJoVT9QfPp2BLqEesoA631qYBkfMuqq4bcoTZVcVN9is q4pf
xVojuUmM9FJ6qn/EziqJESegx66wf8DTBEqtx6zMPbuYHm//Z4YytIwC7MF1 WnVs
m3NLwWV0PBrnc2oZKwDP6TFjh8BHtCKH+yO+q+urO1VUeEPHGISreQ/bfIPU 1bNo
3jQqPs1+G6lddazhYZd9xFGIf1dco2IE0EJq2psXi9jD3NVypA9zF9YQJquO FPIO
eJJkpZEXBWPb3/OOda2Nccum5fM+RF/RMYS41gzaIW/rhjhR3XxpVeFs9PvJ 5RSS
Iey2svn2VJF4J5lrDw/vGXt1T+HUrpdKv3e+1HeSH6J9viU7t2oOT88+zemH rAii
V2jn7rc051Fgck7kJ61Ha5OZQEjPyY9J32TMSETa5HocDrRIV0Y2znce0Vhq jQam
LC2rVk08Tivd8e7nfFO+XdAfaM/+SAzfdq478wnehG4wV+hp5j7fngg3nmlL BO/+
ZbZZ4Y5ptQ7/jtrq14oPCIL0fl9tR8/qgAFKktlGU922SkEr+miJpCAmDCtu ZNEl
aJM4Slo2ifNnEOIIuxztU1n6gVBHPQfCl+HkCr8gv4CPPR4kqvARVJ4l/e4V vN+r
BDpVAuEYIlzxvODEzPYAugSqsQcw547RBIWzbbqkl9kRs/EGSjZStVOFArUg qtzW
EtP7GXR94vvA9b6+j9zYn1WQ0azLS09qH8KTSqTWna3GPceYO+Z4VDG9We/C +zj6
iuLum7e5zoVqqFnfQr2CpQjnV7Tn0/RKboNy0A0I+S1A41XBKjI5Z9xKkF3Y 77NH
IsVwHeTjHggaUbNyeIWb/0HA9tbJoa2CPexRmMZRcOAgwhr8aI9me+Lnuyc8 fOTZ
srr9gds9YZkquPtMSaMfbtIpm5/MLtrMy3LfXbUR/C2VKqhIbxo+88knyZzz 6l2N
zMyKTy1UGA4zNdNZeDNj6Hfufr6Evz048CaZovyXkuRx23uh+K/9F4r/qrpQ /NfP
X35BIXVe/Ys49UDNtJRCxs1u6el+rX1Y29F1MgfmQAtKvBgXrURA3q37zXMC Yv2Y
1kDI918I2Wx1wei0CBFOTjIcjlulfoir9Z8TsQ/th6A8FEeYxIq+f/vr56lg b6oI
hbp+EzlZ5GN+PkkykmnTZpi4BFeheU7jGV+BMI6EMtChsYQ95rdv13AbVPnI yjfR
Bns6prQYaGZKy9kblJHCUT3wqA2Jw38lAUsHsNPGyoJOGHFQ44HKfumWt+C3 p20p
gWVN5MsVfTuZ/A5LKjr2QXe3uyBJbNBWL7n6GJO/OlzdS3aZ5DhS5sFQ2Y29 LaaH
vTMa7SisJIRLprs50saDxeIpoq9kBai89iuN3TDBtU9bEODwEwVP4uLsw3O8 V/s2
CMw/uAw0KLjx3psEbKYUx8KscE1dyyz5Fa7pBm6Aw7mCv0rdzVxhP7v5OFPI r5bz
hJyFrNers+HAawXjXX6TQCB6StOwvD8ocsoUo0U3RWCeA2K32+V6WxtNNKVk cf8r
Iypd8mgpCRelUXkxDIuBIrFHd4cDdcl/tLKIfSASJumXz9hPt9MGkHbgtzZc 6F8B
AVfZJCJgX9iSUHlG44KocvIWacTtuuvVuYSA4kk2OqprC1Ay/tPN9efO/T/J +NX1
7UXnBqBkfN8WoPQDtsVIIq66B+4/x8vvbi4Omdm15Rp52zAKog2kTVHhQ4jw 5aFe
GCqWiDdueS5wYmTu+KXBgrqbjw8zDUcJ5F+uQ0KguYbTAd5fBdE8U/41exy5 rga2
QVbUxAaF0kpDNf/AOifw/dntpLE1Xe/tRdZ8XCK4BWVcQCmidO5n9JXijNJe P0K5
IhBvTUKUvrNi0g/aIYcYpwCFHC3vBGUi76PnmRr38yjIduEcgG9f8ZOzdtLY Jhen
MfKQenalqr/uECEFge8sjl1ZxChmLtHzezfpOW4rWwS50eMvbkprJvqq/yvB k22P
EOBYcH+ciUrHZiqTRNk2ZuF4Tkw2MYtvBmxhlqtamzsyR95aCLNrKT5tBGOC 6hfb
51AKaW8G+j4ZmMwW/pRdwDthYTS/8Xcc/17MDeQbi0hyhuVFk46x44OeWfNp lCmL
ZVUK8AYGQhwNQyzPdIoPYUKmGO2DL5qN8kMDpxKHe7YmWxIo8GNHUCbG4jO3 5hjh
H0clVeBzc/9RHR19uPpolOTxV8BqBHr3buhHu9kWonnK85xVwcTGvifxoRp8 NvRh
G0fZZmvCiSadNFjRplPrXBCYPSu04SDGrF15YudbzS2AQZmpZb/fibO/ud1c Vskz
ZqyKUHPYxSjRyTEYYxcDJ+WNjVE2TXum/JD2EATYO5mTRGfgsH+Iwk9FC94B iQ+k
qhIphaHT92rmgYB/74ZfZwn6MwH50AUQQAd4Z+MAm5GRFV0P02ZTpWl3t1/o UCih
OE7XDZSslbRSxeb0IUzkU4lShvGXSyZ4BonCw/JL8yONZOGy+YVG3tbc/tPI 25oJ
jJizaSUw/zWacl/QBvvDqHdLQxL28Oh8DWfj6n3a66qlEhQMtUxchwkjKe55 SFEq
ShTY7uvblOJ6TLvVjKalZEFtt4TrFZpnIxJtNJnvNlGSRB4mHulJ9nTWGMmH nPpw
ljTvbj+aSkGAnlAwxy6GSYO82kwDyXVSmadJUaitoqZ4m+74N67BPDE8vFx/ OewA
MweBowY5v9/OCNb8kwFAFmsOisiQ/Gy8TYeC4oo/I7iu73SNW75q/dOwdcmS +yhO
QRY3lfpi/9xEhPJPBohQqx/A7KaD5fY1oVOpgS5Hmt11UM2vpt6N+xplqT4g TvWN
KfkqVOpVB4gc7XCLQvZ6gLsmBt31ygPJog0/yCGvTYzVd5j2tqf8+UAFvSW2 KUUe
ANSYPrPssxd2x+oEagu9cxk+1euCBSTZupJniy0WW1x4LXonrvq29gibbDv2 IFjC
qwr4AYFwC4OEsDcbqRtZikMhbXQ/Diyan1XfWLu5yQ03kFKk9zA1TPmsIZIt cggV
qAe0I1bKleQ/ksG/Zjvs8881a5TRzoIUp5mPTOponyiXG/U6jVraaht5X2db XG5y
sKGQSjwYA+XCL9KobD5/Gz1E51u8701uzLyr7e4U9aIfQ2xTCrWPEeiCgOFB P6Wc
ZihkHi9YE3eUY9SGXgRMXhnPDi6vhJffpXWK6JYaKDcMaS350DwP159xfNDb o+Bo
yt5UsifokIraUlVNG4OZh81wKMoskhwj0qkmVwUVt26gEZ9eoR0dd6TRjWkF dUkZ
ZlYCZJ8MqQDmayoKqJJftn5FfpGze5n/jnz6/wFQSwMEFAAAAAgARAeLOLHh Ua/q
AAAAcAEAAAwAAABtYXJ0ZS9NeS51bWx1kF9LwzAUxd8Fv0PJu8lWpozSOMaY MLTq
g4X5NLLk2oXln01q5rc3rVCH4uO995xzf5xycdIq+4DWS2somuIJysBwK6Rp KKpf
7q7maHF7eVF2WhWVFaCyk5bFaMjxFKWNMr5Ie4oOIbiCEM8PoBm2usG2bYh3 wMm2
2pAzeQoc5TFGDFxJ52HQp1vea/GE1NUDGl5KQdHudc9W9VI8rkW+U2E2e44b 10WU
ALOsdIwfWQNirUCDCYMrfDqgqIdfKeb9WRQ8Xb/P/4lKYTYaEMsQWrnvAvzY 3rb3
N8e/NvKNQH4x9M2Rsbo0fQFQSwMEFAAAAAgARAeLONb45C76AQAA+AgAABYA AABt
YXJ0ZS9NeS51bWwucXZ0b3RyYWNlzZZva9swEMbfD/YdjPJ61uZ1o5h4bQkd lOEl
bAl0r4JqX1IT/askx8m371m207rtGIN46xtbOt3d85z4YTw+2wkebMHYQsmE fAjf
kwBkpvJCrhOymH99d0rOvrx9M3aGZRDP62ewE0V8KInqEmwibYzxhNw6p2NK q6oK
lViHyqzpdXrVpfg2hySfBRkvtAWfKSJB77aOKg2GOezPOPUlmKUMEHQSBI2X H3Uk
tz6CMcG0Rs/TrjCQTKBQKbhQOfBIMOPAL0mgWbZhazwlAUZKjit/TNpm2M6U 0hUC
0qddbw2sEqIyXrvHF8htY21EP9K0br+ccGYtfUmYdmbpU7fdQaakg5178NEG 2mks
8BUJ3F7j2os9OMbcLeMlPArUt1InXXIQIF3rXXPmVsqImBqwqjQZUG+RpvsQ TY+W
v27YZHGRf7/MoyV3Jyez6kqX1cF8M0Bfa0z7xp/tNTM4gENmDneA6iV/NGmz DzaF
zBMyXcxJO3MTH3DqtH6HyO6I/mHInuXedkyfMfk3lHpkop/OlJkrDeQTJbSS 6H44
Vr1ky+rv5Y9KrJcZgliYfro7fa3EvnStQ/FLz1UlIW9L8cP8n3iemfoD7vbR DL0N
x3An02LcVz0qul3rIehdXX/7vHmt9F5YC+KG7/2V/its6Tn6d/aY/LaB5gcG 9/dQ
SwMEFAAAAAgARAeLOM7s8XkHAQAAXQIAABEAAABtYXJ0ZS9NeU1hcnRlLnht aZWS
UUvDMBDH3wW/Q4jPy3XzRUrrkLKJsL64Cb6W9OgKTVKS1M5v77XV0IkTfb37 /X+5
JJesT6phb2hdbXTKlyLiDLU0Za2rlL8ctos7vr6/vkryh+fDRmTG4qZBhdo7 sTWd
LgtPQRfnpsSGnVQdB9dqcJGdulRP+dH7Ngbo+14YVQljK3jNnwLizpH+diRW UbQk
bLeXR1TFotbOF1riV+r3qYIQRg7mHMw4gZI6587HLP8ep1IgXR27caSdkaPk f2cx
NbwXqMJ6nCo3APJChF0Y40dJJRWn/2IsMb3G8tM3DuzfW0x5uF6897aTvrNY Zka1
RhM3RSncktTBJIK5adgF+MsyEPgBUEsDBAoAAAAAAGsHizgAAAAAAAAAAAAA AAAR
AAAAbWFydGUvdHJhbnNmb3Jtcy9QSwMEFAAAAAgAXQeLOJk2NCG5AQAAXAMA ABsA
AABtYXJ0ZS90cmFuc2Zvcm1zL21hcnRlLnF2dG9tkk1v2zAMhs/WryB6qQ3U 9uqj
ggTIig0YtmDFPk5DD4rNeNr0YUjyjKDofx+lOMtS+GSKel+SD2WmbYcqHAeE 77tP
MHr0cPMzhIHX9TRNFbZKDh4r6/p61Kqpm+q+elOT9mbFLt6dcAGv3TVZKh3z lcYg
kpbKWYfkzBgLThh/sE6LIK2BpMylsWOApAUeJ7qDf4l7yqQ+xYoxLaTJC3hm 2R/h
Tvce+PoUVXb/C9vg8+LHLp6fqOFJUm60GIBA0rFJTVOYF6uMvTCgwsMgTR97 c57c
nC/qz9NwHpneKdRoguf8vR1Nl5j8XCBOaYRGvvaoDlUMaSA7GexmGw2erv7P lRuW
ZZQlkNy26oP/KE33+ZCnwR6U8L4oyk1Goqy16izb+m/0HleiKiKnuPka3NiG 0WH3
YPVgDbUhcOKmItfkST9/lm0X/r7VnC9olriBZWUJX5A2+ZufDrcDlfG3MAkP 1sle
GqHUkRYSgDKtNYHeOm5kfRDK4x2kP0fGBPVEKpIKzF3SCrchOLkf469H7I/O DujC
sXkkXU5LE/6t6AkcgNCvuc/aSzS7XuFuvUe9V8d4Cc+w8MAv7C9QSwMECgAA AAAA
aweLOAAAAAAAAAAAAAAAAAYAAABtYXJ0ZS9QSwECFAAUAAAACABuAYs4NTna L/kA
AAD4AQAADgAAAAAAAAABACAAtoEAAAAAbWFydGUvLnByb2plY3RQSwECFAAK AAAA
AABrB4s4AAAAAAAAAAAAAAAAEAAAAAAAAAAAABAA/0ElAQAAbWFydGUvLnNl dHRp
bmdzL1BLAQIUABQAAAAIAMsCizjxnw0t0QAAAE0BAAA1AAAAAAAAAAEAIAC2 gVMB
AABtYXJ0ZS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UubTJtLnF2dC5vbWwubW1v ZGVs
LnVyaW1hcFBLAQIUABQAAAAIAE8FizinguM6RgEAAFYFAAAYAAAAAAAAAAEA IAC2
gXcCAABtYXJ0ZS9NYXJ0ZUxhdW5jaC5sYXVuY2hQSwECFAAKAAAAAABrB4s4 AAAA
AAAAAAAAAAAADAAAAAAAAAAAABAA/0HzAwAAbWFydGUvbW9kZWwvUEsBAhQA FAAA
AAgAQgeLONWwcbpbLwAAPVQCABcAAAAAAAAAAQAgALaBHQQAAG1hcnRlL21v ZGVs
L21hcnRlLmVjb3JlUEsBAhQAFAAAAAgARAeLOLHhUa/qAAAAcAEAAAwAAAAA AAAA
AQAgALaBrTMAAG1hcnRlL015LnVtbFBLAQIUABQAAAAIAEQHizjW+OQu+gEA APgI
AAAWAAAAAAAAAAEAIAC2gcE0AABtYXJ0ZS9NeS51bWwucXZ0b3RyYWNlUEsB AhQA
FAAAAAgARAeLOM7s8XkHAQAAXQIAABEAAAAAAAAAAQAgALaB7zYAAG1hcnRl L015
TWFydGUueG1pUEsBAhQACgAAAAAAaweLOAAAAAAAAAAAAAAAABEAAAAAAAAA AAAQ
AP9BJTgAAG1hcnRlL3RyYW5zZm9ybXMvUEsBAhQAFAAAAAgAXQeLOJk2NCG5 AQAA
XAMAABsAAAAAAAAAAQAgALaBVDgAAG1hcnRlL3RyYW5zZm9ybXMvbWFydGUu cXZ0
b1BLAQIUAAoAAAAAAGsHizgAAAAAAAAAAAAAAAAGAAAAAAAAAAAAEAD/QUY6 AABt
YXJ0ZS9QSwUGAAAAAAwADAAbAwAAajoAAAAA
------------vSkMZ8KcB7u8oggSBcedQO--
Re: [QVTO]Aggregation Relationship? [message #78893 is a reply to message #78812] Fri, 11 April 2008 09:58 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: comouraf-lixo.yahoo.fr

Hi, Radek,

Thank you for your answer. In fact I cannot touch the metamodel (since
it was not created by me), so I decided to use the 'ownedElement'
reference (as I had done between model and component), which is common
to everything (and is of containement-type).

By the way, your transformation uses the construction
myCollection[MyType], which does not work on my build
(1.0.0.v20080110-1849). Where can I get a more recent binary? Or do I
have to download the source projects from the CVS and compile and export
myself?

A final question: what is generated by qvto and where? What I need is a
plugin for each transformation, so I can chain them up in big
transformation chains.

César

Radek Dvorak wrote:
> Hi,
>
> I think I have solved that, see the small attached QVT project.
> The 'parts' property was actually containment=false, and even
> transient=true so was actually excluded from
> serialization.
>
> /Regards,
> Radek
>
>
> On Fri, 11 Apr 2008 00:06:05 +0200, kaiserlautern
> <comouraf-lixo@yahoo.fr> wrote:
>
>> Hi, Radek,
>>
>> Thanks for your quick answer. In fact I made a mistake here. I checked
>> one
>> of the references (ownedElement), which was aggregation-type and
>> assumed the
>> other (parts) to be an aggregation as well, which it is NOT
>> (containement=false). Anyway, since one of them is containement-true, I
>> should have this reflected in my target model, or? In case you wanna
>> check
>> this little detail, I send one metamodel (the other is UML).
>>
>> Thanks,
>>
>> César
>>
>> "Radek Dvorak" <radek.dvorak@borland.com> a écrit dans le message de
>> news:op.t9eyt3e8hj1a1g@czprl-rdvorak2.emea.borl.net...
>>> Hi César,
>>>
>>> At the first glance, you seem to be doing things correctly.
>>> Simple assignment to containment references should work as you expect.
>>> At the moment I have no other hint then a re-check of
>>> containment=true on
>>> the
>>> affected references (which I suppose you have done).
>>> Or you might have hit a bug.
>>>
>>> Would you be willing to post or e-mail a fragment of your
>>> model&transf to
>>> me?
>>>
>>> Regards,
>>> /Radek
>>>
>>> On Thu, 10 Apr 2008 22:26:22 +0200, kaiserlautern
>>> <comouraf-lixo@yahoo.fr>
>>> wrote:
>>>
>>>> (sorry, this duplicate post is just because I forgot to put the [QVTO]
>>>> marker)
>>>>
>>>> Hi,
>>>>
>>>> After using the transformation down below, I expected to have a Model
>>>> containing a StructuredComponent, which, in turn, should contain an
>>>> AssemblyPart, since the attributes "parts" and "ownedElement" below are
>>>> aggregation-type. However, the result was simply:
>>>>
>>>> <MARTE.CoreElements.Foundations:Model name="MyModel"/>
>>>> <MARTE.GCM:StructuredComponent name="A"/>
>>>> <MARTE.GCM:AssemblyPart name="propA"/>
>>>>
>>>> While I expected something like:
>>>>
>>>> <MARTE.CoreElements.Foundations:Model name="MyModel">
>>>> <ownedElement xsi:type="MARTE.GCM:StructuredComponent" name="A">
>>>> <parts xsi:type="MARTE.GCM:AssemblyPart" name="propA"/>
>>>> </ownedElement>
>>>> </MARTE.CoreElements.Foundations:Model>
>>>>
>>>> Can anyone tell me what I am doing wrong? The transformation is
>>>> reproduced
>>>> below.
>>>>
>>>> Thanks for any clue,
>>>>
>>>>
>>>> César
>>>>
>>>> ------------------------------------------------------------ -----------------------------
>>>>
>>>> transformation UML2MarteTemplate(in uml : UML, out marte:Marte);
>>>>
>>>> main( in umlmodel:UML::Model, out martemodel:Marte::Model) {
>>>> martemodel:= umlmodel.map umlmodel2martemodel();
>>>> }
>>>> mapping UML::Model::umlmodel2martemodel() : Marte::Model {
>>>> name:=self.name;
>>>>
>>>> ownedElement:=self.ownedElement->select(oclIsKindOf(UML::Class))- > collect(oclAsType(UML::Class)).mapClass2StructuredComponent( );}mappingUML::Class::Class2StructuredComponent()
>>>>
>>>> : GCM::StructuredComponent {name:=self.name;
>>>> parts:=self.ownedAttribute.mapProperty2Part()->asBag();}mapping
>>>> UML::Property::Property2Part() :AssemblyPart { name:=self.name;}
>>>
>>>
>>>
>>> --
>>> Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
>
>
>
Re: [QVTO]Aggregation Relationship? [message #78904 is a reply to message #78893] Fri, 11 April 2008 11:20 Go to previous message
Radomil Dvorak is currently offline Radomil DvorakFriend
Messages: 249
Registered: July 2009
Senior Member
Hi César,

The 'myCollection[MyType]' construct came in M5.
There is couple of handy iterator shorthands which may help you in
wrinting a well concise
QVT code (check ptc/07-07-07, 8.2.2.7 ImperativeIterateExp).
You could just utilize these in your 'umlmodel2martemodel' mapping.

See all binaries at
http://download.eclipse.org/modeling/m2m/qvto/downloads/inde x.php

The deployment of transformations is actually an area (as many others ;-))
in which quite some work still has to be done. So far,
nothing is automatically generated by QVTo.
In fact, there is a 'DSL Toolkit', a part of Borland modeling product,
which
allows to chain even heterogenous transformations and can generate
deployment plugins.
This is not part of QVTo itself but rather integrates QVT with other
transf. tools.

However, with QVTo you can still deploy your transfs by simply including
them in build.properties
of your QVT plugin. Then you can run it using launch configurations and
reference it like
platform:/plugins/org.eclipse.m2m.qvto.example.foo/transf/Fo o.qvto.

As for chaining, the only possible way now is using Ant tasks and
let Ant realize your workflow execution logic.

IMO, the ideal way is use of QVT transformations composition,
where you can code the execution flow in QVT itself. Typically,
in the main() operation you instantiate transfs explicitly,
pass input models and use the outputs in other tranfs.

This is not available in QVTo yet, but we plan to implement it soon.


Regards,
/Radek


> Hi, Radek,
>
> Thank you for your answer. In fact I cannot touch the metamodel (since
> it was not created by me), so I decided to use the 'ownedElement'
> reference (as I had done between model and component), which is common
> to everything (and is of containement-type).
>
> By the way, your transformation uses the construction
> myCollection[MyType], which does not work on my build
> (1.0.0.v20080110-1849). Where can I get a more recent binary? Or do I
> have to download the source projects from the CVS and compile and export
> myself?
>
> A final question: what is generated by qvto and where? What I need is a
> plugin for each transformation, so I can chain them up in big
> transformation chains.
>
> César
>
> Radek Dvorak wrote:
>> Hi,
>> I think I have solved that, see the small attached QVT project.
>> The 'parts' property was actually containment=false, and even
>> transient=true so was actually excluded from
>> serialization.
>> /Regards,
>> Radek
>> On Fri, 11 Apr 2008 00:06:05 +0200, kaiserlautern
>> <comouraf-lixo@yahoo.fr> wrote:
>>
>>> Hi, Radek,
>>>
>>> Thanks for your quick answer. In fact I made a mistake here. I checked
>>> one
>>> of the references (ownedElement), which was aggregation-type and
>>> assumed the
>>> other (parts) to be an aggregation as well, which it is NOT
>>> (containement=false). Anyway, since one of them is containement-true,
>>> I
>>> should have this reflected in my target model, or? In case you wanna
>>> check
>>> this little detail, I send one metamodel (the other is UML).
>>>
>>> Thanks,
>>>
>>> César
>>>
>>> "Radek Dvorak" <radek.dvorak@borland.com> a écrit dans le message de
>>> news:op.t9eyt3e8hj1a1g@czprl-rdvorak2.emea.borl.net...
>>>> Hi César,
>>>>
>>>> At the first glance, you seem to be doing things correctly.
>>>> Simple assignment to containment references should work as you expect.
>>>> At the moment I have no other hint then a re-check of
>>>> containment=true on
>>>> the
>>>> affected references (which I suppose you have done).
>>>> Or you might have hit a bug.
>>>>
>>>> Would you be willing to post or e-mail a fragment of your
>>>> model&transf to
>>>> me?
>>>>
>>>> Regards,
>>>> /Radek
>>>>
>>>> On Thu, 10 Apr 2008 22:26:22 +0200, kaiserlautern
>>>> <comouraf-lixo@yahoo.fr>
>>>> wrote:
>>>>
>>>>> (sorry, this duplicate post is just because I forgot to put the
>>>>> [QVTO]
>>>>> marker)
>>>>>
>>>>> Hi,
>>>>>
>>>>> After using the transformation down below, I expected to have a Model
>>>>> containing a StructuredComponent, which, in turn, should contain an
>>>>> AssemblyPart, since the attributes "parts" and "ownedElement" below
>>>>> are
>>>>> aggregation-type. However, the result was simply:
>>>>>
>>>>> <MARTE.CoreElements.Foundations:Model name="MyModel"/>
>>>>> <MARTE.GCM:StructuredComponent name="A"/>
>>>>> <MARTE.GCM:AssemblyPart name="propA"/>
>>>>>
>>>>> While I expected something like:
>>>>>
>>>>> <MARTE.CoreElements.Foundations:Model name="MyModel">
>>>>> <ownedElement xsi:type="MARTE.GCM:StructuredComponent" name="A">
>>>>> <parts xsi:type="MARTE.GCM:AssemblyPart" name="propA"/>
>>>>> </ownedElement>
>>>>> </MARTE.CoreElements.Foundations:Model>
>>>>>
>>>>> Can anyone tell me what I am doing wrong? The transformation is
>>>>> reproduced
>>>>> below.
>>>>>
>>>>> Thanks for any clue,
>>>>>
>>>>>
>>>>> César
>>>>>
>>>>> ------------------------------------------------------------ -----------------------------
>>>>> transformation UML2MarteTemplate(in uml : UML, out marte:Marte);
>>>>>
>>>>> main( in umlmodel:UML::Model, out martemodel:Marte::Model) {
>>>>> martemodel:= umlmodel.map umlmodel2martemodel();
>>>>> }
>>>>> mapping UML::Model::umlmodel2martemodel() : Marte::Model {
>>>>> name:=self.name;
>>>>>
>>>>> ownedElement:=self.ownedElement->select(oclIsKindOf(UML::Class))- > collect(oclAsType(UML::Class)).mapClass2StructuredComponent( );}mappingUML::Class::Class2StructuredComponent()
>>>>> : GCM::StructuredComponent {name:=self.name;
>>>>> parts:=self.ownedAttribute.mapProperty2Part()->asBag();}mapping
>>>>> UML::Property::Property2Part() :AssemblyPart { name:=self.name;}
>>>>
>>>>
>>>>
>>>> -- Using Opera's revolutionary e-mail client:
>>>> http://www.opera.com/mail/
>>



--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Previous Topic:[ATL] references between in and out models
Next Topic:[ATL] specify the UML2 metamodel
Goto Forum:
  


Current Time: Thu Apr 25 10:22:59 GMT 2024

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

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

Back to the top