[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[news.eclipse.modeling.m2m] EMF M1 model transformation with ATL

Hello!

as a beginner, I face some trouble with transforming a model (MOF M1), which is an instance of my own meta-model (MOF M2).
Enclosed, you can find the SOURCE MOF M2, SOURCE MOF M1, TARGET MOF M2 and ATL Model.


Following structure of the SOURCE MOF M2:
- root Element is "Geschaeftsprozess" which has 0.* "GPElement"
- "BetrieblichesObjekt" extends "GPElement"
- "DiskursweltObjekt" extends "BetrieblichesObjekt"

I want to transform all "DiskursweltObjekt" in a "Person" of the TARGET MOF M2....(just a sample).
However, the output is just an empty xmi-file (<?xml version="1.0" encoding="ISO-8859-1"?><xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>).


I came up with the following possible sources:
- Addressing "GP!DiskursweltObjekt" is not correct due to the structure of the Metamodel (SOURCE MOF M2)
- the SOURCE MOF M1, which was generated from EMF Editor is not correct


Can you help me?

By the way: I tried to start the debug mode. I set some breakpoints (in the outline of the atl-file).
however, I didn't succeed to do that. It just "runs through" and generates the empty target-file without even switching to the debug-perspective!


Thanks a lot

Rainer




SOURCE MOF M2:
------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"; name="geschaeftsprozess"
nsURI="de.unibamberg.wiai.seda.som" nsPrefix="som">


<eClassifiers xsi:type="ecore:EClass" name="Geschaeftsprozess">
<eStructuralFeatures xsi:type="ecore:EReference" name="GPElemente" upperBound="-1"
eType="#//GPElement" containment="true"/>
</eClassifiers>


<eClassifiers xsi:type="ecore:EClass" name="GPElement" abstract="true">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>


<eClassifiers xsi:type="ecore:EClass" name="BetrieblichesObjekt" abstract="true"
eSuperTypes="#//GPElement"/>


<eClassifiers xsi:type="ecore:EClass" name="UmweltObjekt" eSuperTypes="#//BetrieblichesObjekt"/>
</ecore:EPackage>



SOURCE MOF M1 (generated with the generated emf editor)
-------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<som:Geschaeftsprozess xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:som="de.unibamberg.wiai.seda.som">
<GPElemente xsi:type="som:DiskursweltObjekt" name="Vertrieb"/>
<GPElemente xsi:type="som:DiskursweltObjekt" name="Versand"/>
</som:Geschaeftsprozess>



TARGET MOF M2 (Person example)
------------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore";>
<ecore:EPackage name="PrimitiveTypes">
<eClassifiers xsi:type="ecore:EDataType" name="String"/>
</ecore:EPackage>
<ecore:EPackage name="Person">
<eClassifiers xsi:type="ecore:EClass" name="Person">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/0/String"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="surname" ordered="false" unique="false" lowerBound="1" eType="/0/String"/>
</eClassifiers>
</ecore:EPackage>
</xmi:XMI>



ATL Transformation ------------------------------ module IAS2Person; -- Module Template create OUT : Person from IN : GP;

rule BetrieblichesObjekt {
	from
		o : GP!DiskursweltObjekt
	to
		s : Person!Person (
		 	name <- o.name	
		)
}



Attachment: SOMGeschaeftsprozessMM.ecore
Description: Binary data

Attachment: SOMGeschaetsprozessMM.genmodel
Description: Binary data

Attachment: Person.ecore
Description: Binary data

Attachment: source.geschaeftsprozess
Description: Binary data