Pregunta

Soy nuevo en DSDM / EMF, pero estoy haciendo grandes progresos gracias al apoyo de Eclipse.

He creado un modelo de juguete como respondida ayer como awynne sugirió, y estoy muy cerca. Sólo estoy usando EMF y su editor árbol generado.

He aquí un resumen de mi EMF metamodelo:

- 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

Lo que está pasando ahora es que en el editor de árbol generado por el modelo, se crea todo a partir de la TopLevelClass. Puedo crear con éxito varios controles de la WidgetContainer, y puedo crear una sola WidgetReference en el ReferenceContainer y asociarlo con una específica Widget.

En caso corre a nadie a esto, hay un error en el código editor de FEM generada:

Cuando intento agregar más de un WidgetReference a la ReferenceContainer, el editor de árbol sólo muestra la primera WidgetReference bajo la ReferenceContainer. Si hago clic en el elemento WidgetReferences en el árbol, sí muestra múltiples WidgetReferences en la vista de propiedades. Simplemente no va a dejar que me las veo en el árbol, y por lo tanto no me permite seleccionar que cambien su referencia a asociarlo a un widget de real.

La solución a esto es crear tantas referencias como sea necesario, guardar y cerrar el modelo, y luego volver a abrirlo. Tras la re-abrirlo, se mostrarán todos los de las referencias.

Gracias por cualquier ayuda / orientación.

Jeff

¿Fue útil?

Solución

Creo que la respuesta a su pregunta está relacionada con la idea de "contención". Cualquier objeto padre que tiene una referencia de contención (contención = true en el metamodelo EMF) a un objeto secundario gestiona el ciclo de vida de ese niño. Por eso, cuando se crea el niño, se hace referencia de forma automática de los padres a ese objeto. Si la referencia no es del tipo de contención (contención = false), a continuación, se puede apuntar la referencia a cualquier objeto modelo existente del tipo correcto. Creo que se necesita para establecer su referencia como la contención = false.

No he utilizado Acceleo así que vamos a utilizar el editor de árbol EMF como un ejemplo (el concepto también se aplica a la editior GMF): En el editor de árbol, si el objeto padre tiene una referencia de contención a un niño, el usuario es capaz para crear el niño haciendo clic derecho en el padre y la elección de "nueva -> niño -> ChildObject." Si la referencia a que el niño no es del tipo de contención, el usuario será capaz de elegir las instancias de ese objeto que ya existe en el modelo haciendo clic en el propiedad secundaria apropiada en la ventana de propiedades del objeto padre.

¿Le ayuda? Si esta descripción es confuso, puede ayudar a crear un modelo de juguete con algunas referencias no contención y generar el editor EMF para ello.

Otros consejos

No estoy seguro de que el concepto de referencia entre los modelos de EMF es lo que usted describe. Sin embargo, en un modelo que no puede hacer referencia a elementos de otros modelos. En el editor EMF genérico con crear instancias de modelo, puede hacer clic con el botón derecho y seleccione "carga de recursos ...". Ese nuevo recurso puede ser cualquier otro modelo que está relacionada con el modelo de su (sus referencias metamodelo del otro modelo metamodelo).

posible para que así en el nivel meta-modelo. En el editor de Ecore gráfica, puede arrastrar y soltar las clases de otros metamodelos. Se mantendrán en sincronía.

No estoy seguro, sin embargo, si esto es lo que preguntas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top