# Einstieg in das Eclipse Modeling Framework



## huNt (21. Jul 2009)

Hi, ich weiss einen ähnlichen Thread gibt es bereits, allerdings hilft mir dieser nicht bei meiner Frage.

Also, ich versuche mich zurzeit in das Thema EMF einzuarbeiten. 
Mein Ziel: 
Ich möchte gerne ein eigenes UI bauen um grafisch etwas modellieren zu können. Dies soll dann in XML Dateien, in einer bestimmten Form, abgespeichert werden können.

Meine Frage ist erstmal, ist dies möglich? Ich habe in Eclipse gesehen, dass es ein Projekt mit dem Namen "Ecore to XML Mapping" gibt. Das hört sich schon einmal vielversprechend an.
Auch ein eigenes UI kann man meines Wissen nach entwickeln.

Ich lese das Buch "EMF Eclipse Modeling Framework second Edition". Allerdings ist es für mich schwer verständlich. Diese ganzen Zusammenhänge mit AdapterFactory - Klassen, Providerklassen etc. ist mir nicht wirklich klar.
Ich weiss auch leider nicht was ich zum lösen meiner Beschreibung oben alles genau wissen muss. 
Kann mir vllt jemand ein gutes Tutorial oder Buch oder sonstiges empfehlen, welches mir den Einstieg erleichtern kann?

Gruß
Michael


----------



## Wildcard (22. Jul 2009)

EMF in einem bestimmten XML Format zu persistieren geht sehr einfach:
Erzeuge einfach den EMF Modell aus der passenden XSD. Dein Modell wird dann automatisch passend zur XSD serialisiert.



> Ich möchte gerne ein eigenes UI bauen um grafisch etwas modellieren zu können. Dies soll dann in XML Dateien, in einer bestimmten Form, abgespeichert werden können.


Grafisch im Sinne eines Graph Editors? Das geht sehr einfach mit GMF.
Oder grafisch im Sinne eines Baum Editors? Dann kannst du einfach den generierten EMF Editor erweitern.

Hast du denn konkrete Fragen? Wenn ja, stell sie und ich versuche sie zu beantworten.


----------



## huNt (22. Jul 2009)

Hi Wildcard,

schonmal vielen Dank für deine Antwort.

Ich weiss noch nicht ob ich ein Tree Modell nutzen werde oder mit GMF arbeiten werde.

Die Tage wird mir jemand erstmal eine, ich hoffe ordentliche, Einleitung zu EMF geben. Dann werde ich sehen was ich alles machen werde.

Ich hatte eher an ein richtiges GUI gedachte, das lässt sich doch mit GMF bauen, richtig?

Kannst du mir vllt bestimmte Tutorials oder so empfehlen?!

Ach und bezüglich XSD werde ich mal schauen was ich machen kann, habe erst heute angefangen mich in XSD einzuarbeiten.

Gruss und nochmal vielen Dank für deine Antwort.


----------



## Wildcard (22. Jul 2009)

GMF ist für Graphen. Falls du eher an Form basierte GUIs denkst dann entweder händisch anlegen (und zB per Databinding an das Modell binden), oder (wenn's schnell gehen soll) mal den Generic EMF Editor anschauen:
Generic Editor


----------



## huNt (23. Jul 2009)

Ich hoffe mein Frage ist nicht zu unklar. Ich möchte mit EMF eine XSD Datei einlesen.

Daraus soll dann ein Modell generiert werden. Was muss ich dazu genau tun, also was für ein Projekt muss ich in Eclipse erstellen?

Gruss


----------



## Wildcard (23. Jul 2009)

Normalerweise ein Java Model. Danach ein new EMF Model und dort wählst du dann als Quelle ein XML Schema aus. (Installiert vorher XML Schema Infoset SDK über den Update Manager).


----------



## huNt (23. Jul 2009)

Heisst das Projekt "Java Model"?

Denn ich habe nur ein "Java Model Example" unter "File -> New... -> others" gefunden.

Unter Umständen habe ich das benötigte Plugin vllt nicht installiert. Ich komme mit Eclipse sowieso nocht nicht ganz klar glaube ich.

Also vllt kannst du mir ja sagen wie das Projekt unter "File -> New... -> others" heissen muss.

Gruss!


----------



## Wildcard (23. Jul 2009)

My bad, ich meinte natürlich Java Projekt, nicht Java Model


----------



## huNt (23. Jul 2009)

Hm,

ein "EMF Model" kann ich nicht erstellen. Mit einem "EMF Generator Model" bekomme ich es auch nicht hin. Die Datei die ich dann angeben muss, muss mit .genmodel enden. Da bin ich sicher falsch.

Ich habe oft in Tutorials von einem "EMF Class  Diagram" (ich glaube zumindest das es so hieß) gelesen, leider kann ich dieses nicht auswählen bei der Projektauswahl. Kann es sein das mit etwas fehlt? Ich habe versucht soviel EMF - Zeug wie möglich zu installieren. War vllt nicht sonderlich klug.

Sorry ich bin blutiger Anfänger


----------



## Wildcard (24. Jul 2009)

huNt hat gesagt.:


> Hm,
> 
> ein "EMF Model" kann ich nicht erstellen. Mit einem "EMF Generator Model" bekomme ich es auch nicht hin. Die Datei die ich dann angeben muss, muss mit .genmodel enden. Da bin ich sicher falsch.


Das passt schon. Du musst das Ding einfach xyz.genmodel nennen.


----------



## huNt (26. Jul 2009)

Jo, hat geklappt. Danke dir.

Werde man ein wenig rumspielen


----------



## huNt (29. Jul 2009)

Hallo ich habe eine Frage bzgl. XSD.

Ich habe versucht mit Eclipse eine Schema Datei zu erstellen, jedoch werden mir ständig Fehler angezeigt.

Mir wurde gezeigt wie die "Schema - Syntax" lautet, allerdings scheint diese überhaupt nicht in Eclipse zu funktionieren.

Also erstmal: File -> New -> other -> XML -> XML Schema Datei (in einem Projekt erzeugt)

Ich weiss nicht ob es Sinn macht die kompletten Tags zu pasten, daher mal eine Ausschnitt und dann die Tags, so wie es mir gezeigt wurde.

[XML]
Dies sind die derzeitigen Tags, welche allerdings noch einige Fehler in Eclipse verursacht.
Ein paar Fehler habe ich, denke ich schon ausgebügelt, siehe nächsten Code.
<element name = "Person">
	<complexType>
	<sequence>
		<element name = "Name" type = "string" maxoccurs = "unbounded"/>
		<element ref = "Characters" maxoccurs = "unbounded"/> (soll auch wieder complexType sein, aber ka wie man das hier deklariert.)
		<element name = "ArcadeStick"  type = "string" maxoccurs = "unbounded"/>
	</sequence>
	</complexType>
</element>
[/XML]

[XML]
Dies sind die Tags, mit der Syntax die ich "gelernt" habe. 

<xsd:element name = "Person">
	<xsd:complexType>
	<xsd:sequence maxOccurs = "unbounded"/>
		<xsd:element name = "Name"/>
		<xsd:element ref = "Characters"/>
		<xsd:element name = "ArcadeStick"/>
	</xsd:sequence>
	</xsd:complexType>
</xsd:element>

<!-- Simple Type definitions -->
<xsd:element name = "Name" type = "string"/>
<xsd:element name = "Arcade Stick" type = "string"/>

... Characters soll wieder complexType sein.[/XML]

Es macht bei einem Ausschnitt auch wahrscheinlich keinen Sinn nach Fehler zu fragen die bei der Validierung aufgetreten sind, daher würde ich gerne wissen, wie es zu den Abweichungen kommt. 

Ich habe meine Informationen auch aus einer PDF. Diese sollte identisch mit diesem Link sein: Page 2 - An Introduction to XML Schemas

Also daher meine (falsche?!) Syntaxkenntnis.

Gruß!


----------



## Wildcard (29. Jul 2009)

Wie soll das denn aussehen und was sind die Fehler? Dann kann man vielleicht eher helfen.
Mir scheint dir ist der Unterschied zwischen einem Element und einem Typ nicht so ganz klar?


----------



## huNt (29. Jul 2009)

Ok dann machen wir es so.

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns ="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/SF_Schema" xmlns:tns="http://www.example.org/SF_Schema" elementFormDefault="qualified">
<xsd:complexType name = "SFPlayers">
	<xsd:sequence  maxoccurs = "unbounded">
		<xsd:element ref = "Person"/>
	</xsd:sequence>
</xsd:complexType>



<xsd:complexType name = "Person">
	<xsd:sequence maxoccurs = "unbounded">
		<xsd:element name = "Name"/>
		<xsd:element ref = "Characters"/>
		<xsd:element name = "ArcadeStick"/>
	</xsd:sequence>
</xsd:complexType>



<!-- Simple Type definitions -->
  	<xsd:element name = "Name" type = "xsd:string"/>
	<xsd:element name = "Arcade Stick" type = "xsd:string"/>


<xsd:complexType name = "Characters" maxoccurs = "unbounded">
	<xsd:sequence>	
		<xsd:element name = "Tier"/>
		<xsd:element name = "W/L Ratio"/>
		<xsd:element name = "Name"/>
	</xsd:sequence>
</xsd:complexType>


<!-- Simple Type definitions -->
 	<xsd:element name = "Tier" type = "xsd:string"/>
	<xsd:element name = "W/L Ratio" type = "xsd:string"/>
	<xsd:element name = "Name" type = "xsd:string"/>



</xsd:schema>
[/XML]

Diese Tags müssten, nach meinem Verständnis, so aussehen.

Folgenden Fehler gibts.

Description	Resource	Path	Location	Type
The prefix "xsd" for element "xsd:schema" is not bound.	SF_Schema_2.xsd	/xml_schema_test/src	line 2	XML Schema Problem

Also es scheint so das die Prefixe xsd nicht richtig sind. Allerdings müsste das nach meinem Verständnis so sein.


----------



## Wildcard (29. Jul 2009)

Wenn du einen Präfix verwenden willst musst du ihn auch (im header) definieren:
[XML]xmlns:xsd="http://www.w3.org/2001/XMLSchema"[/XML]


----------



## huNt (29. Jul 2009)

Alles klar, dieser Fehler scheint weg zu sein.

Des Weiteren konnte ich noch einige Fehler ausbügeln, aussder den hier.

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/SF_Schema" xmlns:tns="http://www.example.org/SF_Schema" elementFormDefault="qualified">
<xsd:complexType name = "SFPlayers">
	<xsd:sequence  maxOccurs = "unbounded">
		<xsd:element ref = "Person"/>
	</xsd:sequence>
</xsd:complexType>
[/XML]

Description Resource Path Location Type
src-resolve.4.1: Error resolving component 'Person'. It was detected that 'Person' has no namespace, but components with no target namespace are not referenceable from schema document 'file:///E:/Eclipse_Workspace/xml_schema_test/src/SF_Schema_2.xsd'. If 'Person' is intended to have a namespace, perhaps a prefix needs to be provided. If it is intended that 'Person' has no namespace, then an 'import' without a "namespace" attribute should be added to 'file:///E:/Eclipse_Workspace/xml_schema_test/src/SF_Schema_2.xsd'. SF_Schema_2.xsd /xml_schema_test/src line 5 XML Schema Problem

Ich habe das mit dem Namespace Kram nicht verstanden.
Bestimmt muss ich im Header wieder etwas deklarieren?

Auf jeden Fall schonmal vielen Dank Wildcard. Hast mir schon sehr geholfen.


----------



## Wildcard (29. Jul 2009)

Ich kann nirgends ein Element 'Person' sehen auf das sich das ref beziehen könnte. Es gibt einen complexType person, aber kein Element. Also entweder du gibst hier nur einen Typ an, oder du definierst ein Element Person, sonst kannst du es nicht referenzieren.
Du solltest unbedingt noch etwas XML Schema Dokumentation lesen... der unterschied zwischen Typ und Element ist wichtig.


----------



## huNt (29. Jul 2009)

Alles klar, danke für die Info.

Werde ich tun.

Schönen Abend noch.


----------



## vogella (3. Aug 2009)

Hallo,

hier findest sich ein Eclipse EMF Tutorial welches auch beschreibt wie man ein Modell speichert und liest:

Eclipse Modeling Framework (EMF) - Tutorial

Viele Grüße, Lars


----------



## huNt (3. Aug 2009)

Vielen Dank!


----------



## huNt (5. Aug 2009)

Hi,

ich habe eine Frage zu den Ecore genmodels. Also ich habe jetzt ein genmodel erstellt und meine Frage ist eigentlich ganz simpel. Was kann ich damit nun alles machen?
Ich kann Java Code erzeugen, aber ich möchte ja richtung eines Editors. Also kann ich mit dem Genmodel mir jetzt XML Instanzen bezüglich der XSD Dateien grafisch zusammenbauen?

Ich finde zur Zeit keine Informationen was ich mit dem genmodel anfangen kann.

Gruss!


----------



## Wildcard (5. Aug 2009)

Aus dem genmodel kannst du folgendes Erzeugen:
-Java Code für das Objektmodell
-Edit Code der zum Anzeigen und Bearbeiten des Modells dient
-Test Code für Unit Tests
-Editor Code um einen grafischen Editor für dein Modell als Eclipse PlugIn zu erhalten.


----------



## huNt (6. Aug 2009)

Also, 

ich habe jetzt den generierten Editor an laufen gebracht. Was kann ich denn nun mit dem Ding anstellen.

Daraus kann ich doch bestimmt XML, Java und was weiss ich nicht noch für Code generieren lassen.


----------



## Wildcard (6. Aug 2009)

Der Editor kann Instanzen deines Modells laden, erstellen und speichern. Wie er speichert hängt von der verwendeten EMF Resource ab. Handelt es sich um eine XMLResource, wird der Editor XML Speichern.


----------



## huNt (20. Aug 2009)

Hi,

ich hab mal wieder ein Problem.
Vorgestern habe ich mir Windows 7 installiert und natürlich auch eclipse(V. 3.5 Galileo). Funktionierte alles gut, ausser dass ich bisher keine Plugins nachinstallieren kann. Wenn ich nach Plugins suchen möchte (help-> install new Software) kann Eclipse scheinbar nicht auf die Webseiten zugreifen. 
Fehlermeldung:

Some sites could not be found.  See the error log for more detail.
  Unable to connect to repository http://download.eclipse.org/modeling/emft/updates/content.xml
  Connection timed out: connect
  No repository found at http://download.eclipse.org/modeling/emft/updates/.
  Unable to connect to repository http://download.eclipse.org/modeling/mdt/updates/content.xml
  Connection timed out: connect
  No repository found at http://download.eclipse.org/modeling/mdt/updates/.
  Unable to connect to repository http://download.eclipse.org/modeling/emf/updates/content.xml
  Connection timed out: connect
  No repository found at http://download.eclipse.org/modeling/emf/updates/.
  Unable to connect to repository http://download.eclipse.org/releases/galileo/content.xml
  Connection timed out: connect
  Unable to connect to repository http://download.eclipse.org/modeling/emf/updates/releases/content.xml
  Connection timed out: connect


Ich habe auch schon im Internet gesucht, aber keine Lösung gefunden. 

Des Weiteren kann ich eine .ecore Datei nicht in dein Ecore Diagramm umwandeln (Rechtsklick auf .ecore Datei -> initialize to ecore_diagram diagram file). Mit fehlt auch unter 
new -> Others -> Others -> Ecore Diagram. Vllt liegt es daran. 

Daraufhin habe ich eine zip Datei zu Ecore gefunden, aber wenn ich die manuell installiren möchte, kommt diese Fehlermeldung:

 Cannot complete the install because one or more required items could not be found.
  Software being installed: Ecore Tools (Incubation) 0.9.0.v200906221231 (org.eclipse.emf.ecoretools.feature.group 0.9.0.v200906221231)
  Missing requirement: Ecore Tools (Incubation) 0.9.0.v200906221231 (org.eclipse.emf.ecoretools.feature.group 0.9.0.v200906221231) requires 'org.eclipse.emf.query.feature.group [1.2.0,2.0.0)' but it could not be found

Ausserdem würde mich interessieren ob ich von einem Ecore Modell eine XSD Datei erstellen kann.
Also XSD -> Genmodel oder Ecore geht ja, aber auch umgekehrt?

Gruß


----------



## huNt (25. Aug 2009)

Hi,

also das Update Problem habe ich gelöst.
Ich würde nun noch gerne wissen, ob ich aus einem Ecore Diagram eine XSD Datei erstellen kann.

Des Weiteren würde ich gerne das Plugin XMLSchema Exporter for EMF installieren. Bild: http://help.eclipse.org/galileo/topic/org.eclipse.emf.doc/tutorials/xlibmod/images/img001.gif (3te Eintrag von Unten).

Ich habe dazu folgende Seite entdeckt: Browse Repository: org.eclipse.xsd.ecore - mavenreposearch.com

Allerdings habe ich keine Ahnung wie ich das installieren kann. eine pom.xml habe ich nicht.

Vllt kann mir ja jemand mehr dazu sagen. 

Gruß!


----------



## yosf (28. Jul 2011)

Hallo,
ich arbeite in Eclipse Helios und versuche aus einem Ecore-model ein xml-Datei zu generieren.Ich habe in Eclipse gesehen, dass es ein Projekt mit dem Namen "Ecore to XML Mapping" . Ich hab damit gearbeitet und ein Ecore aus der xsd erstellt. Jetzt fehlt mir der letzte Schritt (Serialisierung) also der Weg zur XML-Datei  am besten Step by Step?????
Ich wäre sehr dankbar, wenn jemand mir weiterhlefen kann .


----------



## Wildcard (28. Jul 2011)

Mach nächstes mal bitte ein neues Topic auf. Lass dir den Test Code generieren, der enthält eine Example Klasse die zeigt wie man dein XML lädt und speichert.


----------

