创建 UML 模型并生成代码 ![]() |
![]() |
![]() |
|
级别: 初级
Adrian Powell, Advisory I/T Specialist, IBM
2004 年 4 月 01 日
Eclipse Modeling Framework(EMF)是一个开放源代码的模型驱动应用程序开发框架。它可以基于 XML Schema、UML 或经过注释的 Java 中指定的模型,创建 Java 代码,实现图形化的数据编辑、操纵、读取和序列化。EMF 是 IBM WebSphere Studio 和 Eclipse 项目中很多工具的基础。本文将帮助您逐步了解创建模型、生成代码、使用生成的应用程序和定制编辑器的整个过程。
Eclipse Modeling Framework(EMF)是一个开放源代码的框架,它的目标是实现模型驱动架构(Model-Driven Architecture)的开发。如果我们当中的少数人有幸得到了某个 UML 模型,那么这个框架就可以帮助我们将文档变成代码。至于其他人,这个工具也使您又有一次机会向老板证实,把时间花在为解决方案建模上是值得的。除了可以生成令人赞叹的 Java 代码之外,EMF 还可以生成 Eclipse 插件,以及图形化的可定制编辑器。当您改变模型时(这种情况真的会出现),EMF 可以通过单击一个按钮,就使代码和模型保持同步。
EMF 生成的代码也不是一种只配丢进垃圾箱的解决方案。这种代码支持标准的创建、获取、更新和删除操作,而且还支持元数约束、复杂关系和继承结构、屏蔽定义,以及一套属性描述。生成的代码还提供通知、参照完整性和可定制的 XMI 持久性。您所需要做的全部工作就是创建一个对象模型,就像您以前也想做的那样。
EMF 是比较新的事物,但前景广阔,对它持续支持的力度也很强。它实现的是一项公共标准,即对象管理组织(Object Management Group)的元对象工具(Meta-Object Facility,MOF)。现在 EMF 已经对 MOF 的第二版进行了增强。更进一步看,EMF 还是 EMF:XSD 以及 Hyades 等 Eclipse 项目的基础,大多数 IBM WebSphere Studio 产品也都使用它。EMF 第二版的开发已经开始,开发构建应该很快就会出炉。第二版开发计划中包括更好的 XML Schema 支持、更灵活的代码生成方式以及模型之间的映射机制。
![]() ![]() |
![]()
|
商业宣传已经说得够多了。现在让我们直接进入代码中,看看 EMF 到底能做些什么。下面的例子都是用 Eclipse 3.0M7 和 EMF 2.0.0,再加上与之匹配的 XSD 工具箱实现的。现在有四种独立的 EMF 开发流程,每一种都适用于不同版本的 Eclipse,所以一定要保证根据您的 Eclipse 版本选择了正确的 EMF 版本(请参阅 参考资料中的链接,获取这些插件)。
我们将以一个简单的 Web 论坛为例,向您展示最重要的特性。模型的根为 Forum
,下面包括一组 Member
和 Topic
。每一个 Topic
都具有一个 TopicCategory
(枚举类型), Member
和 Topic
通过 Post
类间接相关联,这两者之间也存在直接关联,因为 Member
可以创建 Topic
。
Omondo 的 UML 插件是在 Eclipse 中创建 UML 文档的方便可靠的工具。它看起来就像是 Rational Rose 受冷落的小兄弟,但除非是您需要特别强大的功能,否则用它就可以工作得很好了。不过,该工具尚不支持 Eclipse 3,所以我采用 Eclipse 2.1 来创建 UML 类图。
一开始,我们创建一个新的 Java 项目 UMLForum,以及一个新包 com.ibm.example.forum
。再创建一个新的 EMF 类图, forum.