首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建对现有模型对象的引用?

如何创建对现有模型对象的引用?
EN

Stack Overflow用户
提问于 2010-11-11 06:05:12
回答 2查看 3.4K关注 0票数 3

我是MDSD/EMF的新手,但由于Eclipse的支持,我取得了很大的进步。

我按照awynne的建议创建了一个玩具模型,就像昨天回答的那样,我已经非常接近了。我只使用EMF及其生成的树编辑器。

以下是我的EMF元模型的摘要:

代码语言:javascript
复制
- 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中创建单个小部件并将其与特定的小部件相关联。

如果有人遇到这种情况,在生成的EMF编辑器代码中有一个bug:

当我尝试将多个WidgetReference添加到ReferenceContainer时,树编辑器只显示ReferenceContainer下的第一个WidgetReference。如果我单击树中的WidgetReferences项,它确实会在属性视图中显示多个WidgetReferences。它只是不让我在树中看到它们,因此不让我选择它们来更改它们的引用,以便将其与实际的小部件相关联。

解决方法是根据需要创建任意数量的引用,保存并关闭模型,然后重新打开它。在重新打开它时,将显示所有引用。

感谢您的帮助/指导。

杰夫

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-12 03:38:06

我认为你的问题的答案与“遏制”的概念有关。任何具有对子对象的包含引用(EMF元模型中的containment=true)的父对象都管理该子对象的生命周期。因此,在创建子对象时,会自动创建父对象对该对象的引用。如果引用不是包含类型(containment=false),那么您可以将引用指向任何现有的正确类型的模型对象。我认为你需要将你的引用设置为containment=false。

我没有使用过Acceleo,因此让我们以EMF树编辑器为例(这个概念也适用于GMF编辑者):在树编辑器中,如果父对象具有对子对象的包含引用,则用户可以通过右键单击父对象并选择“new--> child -->ChildObject”来创建子对象。如果对子对象的引用不是包含类型,则用户将能够通过在父对象的属性窗口中单击适当的子属性来选择模型中已经存在的该对象的实例。

这有帮助吗?如果这种描述令人困惑,那么创建一个带有一些非容器引用的玩具模型并为其生成EMF编辑器可能会有所帮助。

票数 4
EN

Stack Overflow用户

发布于 2010-11-11 06:25:14

我不确定EMF中的模型之间引用的概念是否如您所描述的。但是,在一个模型中,您可以引用其他模型中的元素。在创建模型实例的通用EMF编辑器中,您可以单击右键,然后选择"Load Resource...“。新资源可以是与您的模型相关的任何其他模型(您的元模型引用其他模型的元模型)。

您也可以在元模型级别上做到这一点。在图形化的Ecore编辑器中,您可以拖放其他元模型中的类。它们将保持同步。

然而,我不确定这是否是你要问的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4149579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档