使用EMF进行元建模:生成具体、可重用的Java代码片段 - 编程入门网
EClass 的一个简单标记扩展,没有任何附加属性。与上面的元素类似,此元素也是必需的,因为在默认情况下,EClass 的编辑器插件不允许添加 EOperation 的子类 — 这正是我们要在本文中实现的目标。
EOperationImpl 扩展 EOperation 这是用于向 Ecore 模型添加具体的元功能的基本实体和入口点。此元素被赋予 Ecore 的基础 EOperation 元素中没有的属性。下面描述的所有其他元素都属于 EOperationImpl 并用于构成编程式实现。例如,EOperationImpl 包含变量和语句,可以返回一个引用或值。 LocalVariable 扩展 是一个本地变量。变量包含一个名称和一个 Java 类型(比如 String、Integer、Object),而且由于这些属性已经存在于其超级超类(super-superclass)EParameter 中,所以 LocalVariable 不需要额外属性。 Statement 扩展 EClass 在我们的简化逻辑模型中,一个 EOperationImpl 包含许多将会按给定顺序计算的 statement。Statement 是一个抽象超类。 LiteralAssignment 扩展 Access 扩展 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |