快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

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

时间:2010-11-03 IBM Ken McNeill

EMF 是 Eclipse 平台的主要部分,并且是一些相关技术和框架的基础,比如 Eclipse Visual Editor、SDO、XSD 和 UML — 其中的许多技术都被集成到 Rational® Application Developer 和 WebSphere® Business Modeler 等 IBM® 平台中。现在,EMF 已经吸收了许多 Java 技术特性,比如枚举类型、注释和泛型。

在大多数文档和教程中,EMF 都被用于建模数据 和接口(比如 EMF 发行文档中的 Library 和 Books),而不用于建模行为。当然,还有一些针对数据对象生成的默认方法实现,但这些实现涉及到模型元素之间的关系。而且,将 EMF 用作 “元模型” 的经过归档的示例非常少 — 除了 Eclipse Foundation 文章 “Modeling Rule-Based Systems with EMF”— 但是这个示例并没有展示如何扩展 Ecore 元模型。

最后,使用和扩展 EMF JET 模板的过程也没有被很好地进行归档。此外,JET Editor 项目最近已经迁移到另一个 Eclipse 项目(M2T)上。本文旨在澄清这些问题,并使您能够在 EMF 上下文中使用动态模板实现更多的功能。因此,本文假设您对 EMF 有基本的了解。

为什么要扩展 Ecore 元模型?

Ecore 究竟是什么?

Eclipse Modeling Framework (EMF) 是 Eclipse 的一个建模框架。根据 Eclipse Foundation 的定义,核心 EMF 框架包括一个描述模型的元模型(Ecore)和模型的运行时支持,包括更改通知、对默认 XMI 序列化的持久性支持和用于对 EMF 对象执行常规操作的反射 API(reflective API)。换句话说,Ecore 定义核心模型的结构,而核心模型定义开发人员用于维护应用程序数据的模型结构。

Ecore 元模型是一个强大的工具,可用于设计模型驱动架构(Model-Driven Architecture,MDA),后者可以作为软件开发的起点。通常情况下,我们定义应用程序范围内的对象(EClass 类型)、对象属性以及它们之间的关系。我们还使用 EOperation 模型元素定义属于这些对象的特定操作。默认情况下,EMF 将会为这些操作生成骨架 或方法签名,但是我们必须返回并实现这些操作,常常要反复地重新编写类似的逻辑。

但是,如果我们想在模型中指定某种任意的实现行为该怎么办呢?一种方法是添加基于文本的注释(EAnnotation 类型),以建模对象并在代码生成期间解释模板中的这些注释。关于这种方法的出色示例,可以查阅 Eclipse Foundation 文章 “Implementing Model Integrity in EMF with MDT OCL”。但是,正如这篇文章中所描述的,我们的目标不是验证模型元素,而是对实现本身进行建模,以使任何具体的模型能够重用这些元模型元素。为此,我们需要扩展 Ecore 元模型。

扩展了的元模型

本文附带了一个高度简化的用来扩展 Ecore 的编程式模型。它不是一个完整或连贯的元模型或框架;严格来讲,它是一个元素的原型集合,用于演示使用 EMF 对代码实现进行元建模的能力。图 1 显示了我们的扩展元模型示例 EcoreX 的快照,下面是每个元素的简短描述。

图 1. EcoreX 模型

EcoreX 元素

EPackageX 扩展 EPackage

这是 Ecore 元素 EPackage 的一个简单 “标记” 扩展,没有任何附加属性。这个元素是必需的,因为在默认情况下,元素 EPackage EMF 编辑器插件不允许将 EClass 的子类作为子元素添加(参阅下面的 EClassX)。通过提供一个可扩展 EPackage 的模型元素,代码将会自动生成,从而允许将一个 EClassX 子元素添加到 EPackageX 中。

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

时间:2010-11-03 IBM Ken McNeill

EClassX 扩展 EClass

同样地,这是 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号