`
Jet_Geng
  • 浏览: 55584 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Galileo: EMF-Databinding – Part 1--creation of the domain-model

阅读更多

在我们创建领域模型前,我们有必要了解一下我们的模型用来表达什么内容。 所以我就先解释一下在这个系列文章中要实现应用。 假设Eclipse组织邀请你编写一个让他们管理贡献者和项目的应用程序。

我们需要创建一个模型来表达客户提供的信息。他们有可能如下图。

让我们进一步的看看这个模型。

Fundation

fundation是这个模型的根,他拥有两个列表属性。

projects: 像EMF,Techonlogy,Platform这样的顶级项目。
persons: 参加一个或多个项目的人。
Project

Eclipse项目拥有很多属性,比如项目开始和结束时间、项目的主页的url等等。下面列出我们最感兴趣的。

subprojects: 一个项目可以拥有多个子项目。子项目本身也可以拥有多个子项目。
parent: 项目有一个父亲(除了顶级项目外)。这就意味着项目和子项目(project-subproject)的关系是一个双向的关系。
projectleads 一个项目有多个项目领导人。
committers 一个项目可以拥有多个贡献者。
CommitterShip

当一个用户成为一个项目的贡献者(Committer)时,这就建立了一个committership。他拥有一个开始时间和结束时间。另外我们还要记录下下面的属性。

project: 和committership相关的项目。项目和committership是一个双向的关系。
person: 参加项目的人。
Person

贡献者或项目领导人的信息。我们关系的信息如下:

committerships: 用于保存和人相关的所有的committerships.这说明人和committership是一个双向关系。

下面这张类图给出了关于上面模型的全貌。

正如你所看到的,我把许多关系设成了双向关系。 As you noticed I modeled many of the relations as bidirectional relations. 这个并不是严格要求所有地方都要这样,因为有的地方可以通过eComtainer来获取他的父亲。就像project-subproject一样。 但是包含关系(containment relationship)在使用databinding的情况下就不太合适了。因为从子到父亲时没有对应feature,只能通过调用eContainer()方法来获得。 EMF提供了一个编辑器来创建你的Ecore-Model并把它保存成XMI格式。我们可以用它来创建测试数据。下图就是一个例子。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics