快速业务通道

使用EMF进行元建模:生成具体、可重用的Java代码片段 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
EClass 的一个简单标记扩展,没有任何附加属性。与上面的元素类似,此元素也是必需的,因为在默认情况下,EClass 的编辑器插件不允许添加 EOperation 的子类 — 这正是我们要在本文中实现的目标。

EOperationImpl 扩展 EOperation

这是用于向 Ecore 模型添加具体的元功能的基本实体和入口点。此元素被赋予 Ecore 的基础 EOperation 元素中没有的属性。下面描述的所有其他元素都属于 EOperationImpl 并用于构成编程式实现。例如,EOperationImpl 包含变量和语句,可以返回一个引用或值。

LocalVariable 扩展 ETypedElement LocalVariable

是一个本地变量。变量包含一个名称和一个 Java 类型(比如 String、Integer、Object),而且由于这些属性已经存在于其超级超类(super-superclass)EParameter 中,所以 LocalVariable 不需要额外属性。

Statement 扩展 EClass

在我们的简化逻辑模型中,一个 EOperationImpl 包含许多将会按给定顺序计算的 statement。Statement 是一个抽象超类。

LiteralAssignment 扩展 Statement LiteralAssignment 引用一个变量,并且有一个 String 属性,允许用户输入一个要被解析的值并将其分配给一个变量(例如,“hello”、“4.5” 可以分别分配给 String 或 float)。

Access 扩展Statement Access 表示引用 Java 字段或操作的动作。

FieldReferenceAssignment 扩展 Access

访问一个字段,以分配一个值(例如,var1 = var2.name)。

Invoke 扩展 Access

调用一个操作(Java 方法)。Invoke 的结果可以分配给一个变量(例如,myVar = obj.toString())。

图 2 展示了 EcoreX 元模型的一种更加类似 UML 的表示。

图 2. Ecorex 模型图

使用EMF进行元建模:生成具体、可重用的Java代码片段(3)

时间:2010-11-03 IBM Ken McNeill

入门

本文包括六个高级的步骤:

扩展 Ecore 元模型,添加新语义

为被扩展的元模型创建一个 genmodel。

为此元模型生成一个 EMF 编辑器,并作为插件安装。

使用这个新编辑器,构建一个具体的模型来描述编程行为。

为这个具体的模型创建并配置一个 genmodel。

基于这个具体的模型生成具体的 Java 代码。

可以创建或导入上面描述的元模型。两种情况都需要从一个现有 EMF 项目或创建一个新项目入手(New > Other > Eclipse Modeling Framework > Empty EMF Project)。我们的项目名为 EMFX,并且它应包含一个名为 model 的文件夹。可以将这个 EcoreX.ecore 模型复制到 model 目录并跳至 构建和启动 Editor Metamodel 插件 小节,也可以执行以下步骤,从头创建一个元模型。

扩展 Ecore 元模型 — 从头开始

右键单击项目,从上下文菜单中选择 New > Other > Example EMF Model Creation Wizards > Ecore Model。(对于 Eclipse V3.5+ [Galileo, Helios],则应选择 New > Other > Eclipse Modeling Framework > Ecore Model。)选择 model 文件夹和名称 EcoreX.ecore。

默认情况下,我们将模型包称为 ecorex。在模型窗口中右键单击并选择 Load Resource > Browse Registered Packages。选择具有名称空间 http://www.eclipse.org/emf/2002/Ecore 的 Ecore Model。

导入 Ecore 元模型之后,就可以对其进行扩展了。要重新创建 ecorex.ecore 模型,首先在包元素 ecorex 上右键单击并选择 New Child EClass。将此元素称为 EPackageX(参阅上面的模型元素描述)。然后需要将基元素 EPackage 作为这个新元素的 ESuper Type 添加。

通过将 EClass 指定为 ESuperType,使用相同的过程创建新元素 EClassX。根据需要对 Ecore 对象划分子类,在 EcoreX 模型中继续定义其他 EClass。使用图 1 和 EcoreX.ecore 文

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