Frage

Ich bin neu in MDSD / EMF aber mache große Fortschritte dank Eclipse-Unterstützung.

habe ich ein Spielzeugmodell als beantwortete gestern wie awynne vorgeschlagen, und ich bin ganz in der Nähe. Ich verwende nur EMB und seinen erzeugten Baum-Editor.

Hier ist eine Zusammenfassung meines EMF Metamodell:

- EClass: Widget
  - name

- EClass: WidgetReference
  - aWidgetReference : Widget [0..1] Containment = false

- EClass: WidgetContainer
  - myWidgets : Widget [0..*] Containment = true

- EClass: ReferenceContainer
  - myReferences : WidgetReference [0..*] Containment = true

- EClass: TopLevelClass
  - myWidgetContainer    : [1] WidgetContainer    Containment = true
  - myReferenceContainer : [1] ReferenceContainer Containment = true

Was passiert ist nun, dass in der generierten Baum-Editor für das Modell, ich alles schaffen aus dem TopLevelClass starten. Ich kann erfolgreich mehrere Widgets in den WidgetContainer erstellen, und ich kann eine einzelne WidgetReference im ReferenceContainer erstellen und es mit einem bestimmten Widget.

Falls jemand läuft in diesem gibt es einen Bug im Editor Code generiert EMF:

Wenn ich versuche, mehr als eine WidgetReference zum ReferenceContainer hinzufügen, nur der Baum-Editor zeigt die erste WidgetReference unter dem ReferenceContainer. Wenn ich in dem Baum auf dem WidgetReferences Elemente klicken, zeigt es mehrere WidgetReferences in den Eigenschaften anzuzeigen. Es wird einfach nicht lassen Sie mich sie in den Baum zu sehen, und deshalb lässt mich nicht wählen sie ihre Referenz zu ändern, um es zu einem tatsächlichen Widget zuzuordnen.

Die Problemumgehung ist dies so viele Verweise zu erstellen, wie Sie benötigen, speichern und schließen Sie das Modell, und dann wieder öffnen. Auf ihre Wiedereröffnung wird alle Referenzen angezeigt.

Danke für jede Hilfe / Anleitung.

Jeff

War es hilfreich?

Lösung

Ich denke, die Antwort auf Ihre Frage auf die Idee zusammenhängt „Containment.“ Jede übergeordnete Objekt, das eine Eindämmungs Referenz (Containment = true in der EMF-Metamodell) an ein untergeordnetes Objekt hat verwaltet den Lebenszyklus des Kindes. Also, wenn das Kind erstellt wird, der Verweis der Eltern auf das Objekt erfolgt automatisch. Wenn die Referenz nicht vom Typ Containment (Eindämmung = false) ist, dann können Sie den Verweis auf jedes bestehende Modellobjekt des richtigen Typs zeigen. Ich denke, Sie müssen Ihre Referenz gesetzt als Containment = false.

Ich habe nicht Acceleo also lassen Sie sie verwenden, um den EMF-Baum-Editor als Beispiel (das Konzept gilt auch für die GMF editior) verwendet: in dem Baum Editor, wenn das übergeordnete Objekt einen Eindämmungs Bezug auf ein Kind hat, kann der Benutzer in der Lage, das Kind mit der rechten Maustaste auf das übergeordnete und die Wahl zu erstellen „-> Kind - neu.> Childobject“ Wenn der Verweis auf das Kind nicht vom Typ Containment ist, wird der Benutzer in der Lage seine Instanzen dieses Objekts zu wählen, die bereits im Modell vorhanden durch die entsprechende Kind-Eigenschaft im Eigenschaftenfenster des übergeordneten Objekts klicken.

Ist diese Hilfe? Wenn diese Beschreibung ist verwirrend, kann es helfen, ein Spielzeugmodell mit einigen nicht-Containment Referenzen zu schaffen und das EMF-Editor für sie zu generieren.

Andere Tipps

Ich bin nicht sicher, ob das Konzept der Referenzierung zwischen den Modellen in EMF ist das, was Sie beschreiben. Jedoch in einem Modell, das Sie Sie können Elemente in anderen Modellen verweisen. Im Editor Generisches EMF mit Ihnen Modellinstanzen erstellen, können Sie mit der rechten Taste klicken und wählen Sie dann „Ressourcen Laden ...“. Diese neue Ressource kann jedes andere Modell, das zu Ihrem Modell (Ihre Metamodell Referenzen des anderen Modells Metamodell).

verwandt

Sie kann zu dieser wie auch in der meta-Modellebene. In dem grafischen Ecore-Editor können Sie per Drag & Drop-Klassen aus anderen metamodels. Sie werden synchron halten.

Ich bin sicher, nicht jedoch, wenn dies ist, was Sie fragen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top