快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
Generate Model将在当前项目中创 建该 EMF 模型的 Java 实现代码。其中会包含下列内容:

com.ibm.example.forum -- 创建该 Java 类的接口和工厂。

com.ibm.example.forum.impl -- com.ibm.example.forum 中定义的接口的具体 实现。

com.ibm.example.forum.util -- AdapterFactory。

Generate Editor Code将创建 com.ibm.example.forum.edit 项目。其中仅仅包含一个包, com.ibm.example.forum.provider ,用于控制每一个模型对象出现在编辑器中的方式。 Generate Editor Code将在 com.ibm.example.forum.editor 项目中创建一个插件编辑器 示例,其中包含了 com.ibm.example.forum.presentation。这些类提供了一系列简单的 JFace 编辑器,可以与您的模型进行交互。

为了测试生成的插件,请依次进入 Run > Run... > Run Time Workbench > New。输入一个描述性的名称,然后在 plug-ins 选项卡中,选择 launch with all workspace and enabled external plug- ins。再在 Common 页下,单击 Display in favorites menu > Run和 Launch in background。最后保存设置并运行。

这时将出现一个新的 Eclipse 工作台,您可 以在 Help > About Eclipse Platform > Plug-in Details下面验证您的插件是否 可用,如图 4 所示。

图 4. Forum 的插件详细信息

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

时间:2011-03-26 IBM Adrian Powell

为了测试生成的插件,您可以创建一个新的 Simple 项目,名为“Forum Demo”,然后依次进入 New > Other... > Example EMF Model Creation Wizards > Forum Model。给文件取名叫做 sample.forum,然后选择 Forum 作为 Model Object。这时会打开一个窗口,您可以在这里向根中增加新的模型元素。其中包含 几种视图:Selection、Parent、List、Tree、Table 和 TreeTable。所有这些视图都显 示相同的数据,也和 Outline 视图保持同步。虽然所有视图都会在右键菜单选项中显示 New Sibling/New Child,但是我发现,有些视图在加入兄弟节点或子节点时不能正确响 应。如果您也遇到这种情况,可以使用 TableTree 视图,或是在 Outline 视图中创建新 的节点。图 5 展示了所生成的插件编辑器。

图 5. 所生成的插件编辑器

定制 生成的代码

生成的代码都很不错,但是这只是真正应用程序的起点。为了满足我 们的需要,我们必须对其进行调整和定制。我们可以改变所生成的模型类的实现,也可以 对编辑器进行扩展和定制。好在 EMF 没有让我们失望,我们可以按照自己的想法做任何 定制,当重新生成代码时也不会丢掉这些内容。我们需要做的全部工作就是删除 @generated JavaDoc 标签,EMF 的 jmerge 将保证这些方法、属性或类不被打扰。

为着重说明您能对代码进行哪些修改,让我们来看一个简单的例子。在所生成编 辑器的 Table 视图中,两个字段都显示出相同的的值。这一点并不是完全没有用处。为 了改善一下,我们可以修改第二个字段,让它在选中一个 Topic 的时候显示 Author,然 后增加第三个字段,给出该 Topic 中的帖子数。

第一步,向 Table 视图中额外 增加一个字段。这一步在 com.ibm.example.forum.editor 项目中实现,即 createPages() 方法中的 com.ibm.example.forum.presentation.ForumEditor 。把 @generated 标签删除,这样就能持久保存我们的修改,然后定位到表浏览窗口所在的位 置。按照清单 4 的内容对这段代码进行修改。

清单 4. 修改后的 createPages ()

TableColumn selfColumn = new TableColumn(table, SWT.NONE); layout.addColumnData(new ColumnWeightData(2, 100, true)); selfColumn.setText("Author")

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