我是 MDSD/EMF 的新手,但由于 Eclipse 的支持,我取得了很大的进步。
我按照awynne的建议创建了一个玩具模型,昨天回答了这个问题,我非常接近。我只使用 EMF 及其生成的树编辑器。
这是我的 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
现在发生的情况是,在为模型生成的树编辑器中,我从 TopLevelClass 开始创建所有内容。我可以在 WidgetContainer 中成功创建多个小部件,并且可以在 ReferenceContainer 中创建单个 WidgetReference 并将其与特定的 Widget 关联。
万一有人遇到这种情况,生成的 EMF 编辑器代码中有一个错误:
当我尝试向 ReferenceContainer 添加多个 WidgetReference 时,树编辑器仅显示 ReferenceContainer 下的第一个 WidgetReference。如果我单击树中的 WidgetReferences 项,它会在属性视图中显示多个 WidgetReferences。它只是不会让我在树中看到它们,因此不会让我选择它们来更改它们的引用以将其与实际的小部件相关联。
解决方法是根据需要创建尽可能多的参考,保存并关闭模型,然后重新打开它。重新打开后,将显示所有引用。
感谢您的任何帮助/指导。
杰夫