Domanda

Sono nuovo di MDSD / EMF, ma sto facendo grandi progressi grazie al supporto di Eclipse.

Ho creato un modello del giocattolo come risposta ieri come awynne suggerito, e io sono molto vicino. Sono solo utilizzando campi elettromagnetici e il suo editor di albero generato.

Ecco un riassunto della mia meta-modello EMF:

- 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

Quello che sta succedendo ora è che nell'editor albero generato per il modello, creo tutto a partire dal TopLevelClass. Posso creare con successo più widget nella WidgetContainer, e posso creare un unico WidgetReference nel ReferenceContainer e associarlo con una specifica Widget.

Nel caso qualcuno corre in questo, c'è un bug nel codice editor di campi elettromagnetici generati:

Quando provo ad aggiungere più di un WidgetReference al ReferenceContainer, l'editor albero mostra solo il primo WidgetReference sotto la ReferenceContainer. Se clicco sulla voce WidgetReferences nell'albero, Mostrano più WidgetReferences nella vista delle proprietà. E 'solo che non mi permette di Li vedo nella struttura, e quindi non mi permette di selezionare loro di cambiare il loro riferimento ad associarlo ad un widget reale.

La soluzione a questo è quello di creare il maggior numero di riferimenti di cui hai bisogno, salvare e chiudere il modello, quindi riaprirlo. Al ri-aprirlo, verrà mostrato tutti i riferimenti.

Grazie per qualsiasi aiuto / guida.

Jeff

È stato utile?

Soluzione

Credo che la risposta alla tua domanda è legata al concetto di "contenimento". Qualsiasi oggetto padre che ha un riferimento di contenimento (contenimento = true nel metamodello EMF) per un oggetto figlio gestisce il ciclo di vita di quel bambino. Così, quando si crea il bambino, di riferimento del genitore a quell'oggetto è fatto automaticamente. Se il riferimento non è di tipo contenimento (contenimento = false), allora si può puntare il riferimento a qualsiasi oggetto modello esistente del tipo corretto. Penso che è necessario impostare il vostro riferimento come contenimento = false.

Non ho usato Acceleo quindi cerchiamo di utilizzare l'editor albero EMF come un esempio (il concetto vale anche per l'editior GMF): In l'editor albero, se l'oggetto principale ha un riferimento di contenimento per un bambino, l'utente è in grado per creare il bambino facendo clic destro il genitore e scegliendo "nuovo -> bambino -.> ChildObject" Se il riferimento al bambino non è di tipo contenimento, l'utente sarà in grado di scegliere le istanze di quell'oggetto che già esistono nel modello facendo clic sulla proprietà figlio appropriata nella finestra delle proprietà dell'oggetto padre.

Fa che aiutano? Se questa descrizione è fonte di confusione, può contribuire a creare un modello giocattolo con alcuni riferimenti non-contenimento e generare l'editor EMF per esso.

Altri suggerimenti

Non sono sicuro il concetto di riferimento tra i modelli a campi elettromagnetici è ciò che si descrive. Tuttavia, in un modello che si non possibile fare riferimento a elementi di altri modelli. Nel l'editor EMF generico con la creazione di istanze di modello, è possibile fare clic con il tasto destro e selezionare "Carica delle risorse ...". Quella nuova risorsa può essere qualsiasi altro modello che è legato al vostro modello (i riferimenti metamodel metamodel dell'altro modello).

È possibile per che, oltre al livello meta-modello. Nel l'editor Ecore grafica, è possibile trascinare e rilasciare le classi da altri metamodelli. Essi non mancherà di tenere sincronizzati.

Non sono sicuro, tuttavia, se questo è quello che stai chiedendo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top