快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
析并加载 forum 模型。我们知道,Forum 是惟一的根元素,所以可以想象, res.getContents ().get(0) 将返回一个且仅有一个 Forum 对象。如果情况不是这样,我们还可以从 getContents().iterator() 中取出一个 Iterator,然后分别检查每一个元素。

我们还可以换一种方法,创建一个新的 Forum,然后用程序组装起来,如清单 8 所示。

清单 8. 初始化 Forum

// initialize model and dependencies  ForumPackageImpl.init(); // retrieve the default Forum  factory singleton ForumFactory factory = ForumFactory.eINSTANCE; Forum forum = factory.createForum(); forum.setDescription ("programmatic forum example"); Member adminMember =  factory.createMember(); adminMember.setNickname("Administrator"); forum.getMembers().add( adminMember ); Topic noticeTopic =  factory.createTopic(); noticeTopic.setTitle("Notices"); noticeTopic.setCategory(TopicCategory.ANNOUNCEMENT_LITERAL); noticeTopic.setCreator(adminMember); forum.getTopic().add( noticeTopic  );

在这个例子中,我们首先初始化包,然后创建 ForumFactory,用它 生成所有的子对象。创建完毕之后,就可以像标准的 JavaBean 那样访问这些对象。然而 ,由于我们把 Topic 和 Memeber 之间的 creator/topicsCreated 关系声明为双向,当 我们调用 noticeTopic.setCreator(adminMember) 的时候, adminMember 的 topicsCreated 清单中就包括 noticeTopic 。

一旦我们创建并操纵了 EMF 模型 ,就很容易将其保存为我们选定的格式(参见清单 9)。

清单 9. 保存 Forum

URI fileURI = URI.createFileURI("model/forum.ecore"); Resource resource = new XMIResourceFactoryImpl().createResource (fileURI); resource.getContents().add( forum ); try {   resource.save(Collections.EMPTY_MAP); } catch (IOException e) {  e.printStackTrace(); }

在本例中,我们给 URI.createFileURI () 提供了希望保存成的文件名与目标格式。这个例子因为是保存为 XMI,所以使用了 XMIResourceFactoryImpl 。一旦创建完毕,所有的模型对象就如我们所愿的持久保存起 来了。在这个例子中,除 Forum 之外的每一个对象都被另一个类包含,所以我们只需要 对包含所有孩子的 root 增加这条命令即可。如果某些对象没有 包含 关系,那么也必须 通过 resource.getContents().add() 显式地将它们加进去。否则,当您调用 resource.save() 时就会出现异常。

结束语

Eclipse Modeling Framework 提供了进行模型驱动开发的工具。它包含了将您的开发精力集中在模型上而不是实现细节 上所必需的元素。其主要关注的领域是:生成模型时支持定制、通知、参照完整性以及其 他基本特性;生成可定制的模型编辑器;默认的序列化。正像例子中展示的那样,生成的 过程既简单又直接,所有的定制代码都支持定制。序列化或图形化编辑器等独立的工具也 可以拉出来单独使用,但所有的部件一起使用才能发挥完整的效力。EMF 已经在很多成功 的项目中得到应用,它正在蓬勃成长。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号