快速业务通道

使用EMF实现模型驱动开发,第1部分:创建UML模型并生成代码 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
quot;Announcement"/>    <xsd:enumeration  value="GuestBook"/>    <xsd:enumeration  value="Discussion"/>   </xsd:restriction> </xsd:simpleType> <xsd:complexType name="Post">    <xsd:sequence>    <xsd:element name="comment"  type="xsd:string"/>    <xsd:element name="author"  type="xsd:anyURI" ecore:reference="forum:Member"/>     <xsd:element name="topic" type="xsd:anyURI"  ecore:reference="forum:Topic"/>   </xsd:sequence> </xsd:complexType>

在清单 1 中,您可以看到枚举是如何表示 的,也能从中了解到如何定义一个具有指向其他类型的元素和引用的类型。在 Forum 这 个例子中,我们仅仅使用了字符串属性 "xsd:string" ,但是其他简单 Java 类型也是支 持的。

一旦完成了 XSD,下一步就是创建 EMF 模型。方法与 UML 模型中类似, 先创建一个新的 EMF 项目( File > New > Project... > Eclipse Modeling Framework > EMF Project),项目名称为 com.ibm.example.forum(这是插件名称的 基础,因此我们遵从 Eclipse 插件的命名规范)。在下一个页面上选择 Load from an XML Schema,然后单击 Next。在文件系统中找出 XSD 文件并加载,然后 Generator 中 的模型名就会自动填充。在最后一个页面上,单击包旁边的复选框,然后单击 Finish。 这样就创建了一个 EMF 模型,名字叫做 forum.genmodel。您可以从 使用生成的 EMF 模 型一节中了解到这个模型是什么,以及如何使用它。

用带注释的 Java 代码创建 EMF 模型

如果通过 Java 代码定义 EMF 模型,我们可以用 Interface 列出每一 个类的属性,以及类之间的关系。这样得到的内容并不充足,无法定义我们想要的全部信 息,所以 EMF 使用了特殊的 JavaDoc 标签。每一个属性或类,如果是 EMF 模型的一部 分,就必须在其 JavaDoc 中包含一个 @model 标签,也可以包含一个附加属性列表。比 如说,如果要构造如上面图 2 所示的一个对象模型,我们对 Forum 的定义看起来应该像 清单 2 的样子。

清单 2. 带注释的 Forum.java

package  com.ibm.example.forum; import java.util.List; /**  *      @model  */ public interface Forum {  /**  *     @model type="Topic" containment="true"  */   List getTopics();  /**  *     @model  type="Member" containment="true"  */  List getMembers();  /**  *     @model  */  String  getDescription(); }

使用EMF实现模型驱动开发,第1部分:创建UML模型并生成代码(4)

时间:2011-03-26 IBM Adrian Powell

清单 2 声明了一个叫做 Forum 的对象,它具 有一条 String 类型的描述信息和两个孩子,一个是 Topic 列表,还有一个是 Member 列表。这两个孩子都包含在 Forum 之内。

对于简单的属性,如 描述信息 , @model 标签就足够了,但对于 list 而言,您也需要为其指明类型。containment 属性 是可选的,但是如果某个对象是被包含的,那么它就和其容器一起被序列化。为了简化序 列化的过程,我们要保证所有的对象都是直接或者间接包含在 Forum 中的。其他一些有 用的可选属性如下:

opposite (用于双向属性)。

default (属性的默 认值)。

transient (该属性不能被序列化)。

惟一需要当心的是枚举类 型。它被定义成一个 Class,而不是其他模型

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号