先搜点中文资料,对EMF有个大概了解。
一楼献给百度百科。
EMF Eclipse Modeling Framework 基于Eclipse的模型框架。它是Eclipse MDA(Model Driven Architecture)的一个重要组成部分,是Eclipse中许多项目的基础( e.g, GEF), EMF可以将模型转换成高效的,正确的,和易于定制的Java代码。EMF项目的最初目标是要实现OMG(Object Management Group)的MOF规范(Meta Object Facility)。在项目的进行中EMF的开发人员根据大量的实践经验对MOF规范进行了再加工,提取出了一些核心的元素集(MOF 2.0 中称为EMOF(Essential MOF))。可以说EMF 是MOF核心子集的java高效实现,在EMF 中MOF核心子集的实现称为Ecore。
= =!! 汗啊,问他一个名词,他抛出来N个新名词,继续百度百科。
MDA Model Driven Architecture 模型驱动架构
UML:UML被MDA用来描述各种模型。
MOF:MOF(Meta Object Facility 元对象机制)是比UML更高层次的抽象,它的目的是为了描述UML的扩展或者其它未来可能出现的类UML的建模语言。
八进制的博客上有EMF的系列文章,传送门在此
以下内容摘自该博客:
- EMF可以看作是Eclipse上的MDA一个实现(代码生成是MDA 的重要组成部分之一),它能够生成在Eclipse上执行的代码。
- 模型是由元模型(Meta Model)定义的,例如UML里“类”和“属性”这些概念是在UML的元模型里定义的,而元模型又是由“元元模型”来定义,后者多是自描述的,也就是能够自己定义自己。
- 在MOF规范里,元元模型处于M3层,元模型处于M2层,往下的M1层是模型,而M0层是实例。
- EMF定义了一套Ecore元模型,该模型是EMOF(MOF的一个子集, MOF是Meta-Object Facility的缩写)的一个实现,这是一个自描述的模型,可以认为它处于MOF中的M2层,即与UML元模型相同的位置。
- 用Ecore元模型可以定义 ecore模型,也就是.ecore文件,这个模型处于M1层,而ecore模型的实例处于M0层。
- 用EMF构造一个应用的步骤很简单:1、构造模型,2、生成代码,前者可以通过UML类图、Java接口、 XML Schema等多种方式定义,后者可以选择只生成模型部分的代码,也可以同时生成编辑器部分的代码,对这个编辑器做一些定制就可以得到符合需求的应用程序。
该系列文章的例子使用了EclipseUML,我没下载到,只能去找点别的资料了。
找了半天也没找到好的文章,就用online help吧。
http://help.eclipse.org/help32/index.jsp EMF Developer Guide > Tutorials > Generating an EMF Model
推荐看本机的help,EMF版本不同会略有出入。
该Tutorial步骤摘要:
- 通过 File>New>Project... 菜单选择 Eclipse Modeling Framework 目录下的 Empty EMF Project.
- 使用包含"@model"标注的Interface和Class来定义EMF模型。(见Tutorial)
- 创建 EMF Model. (见4-7步)
- 在model目录的上下文菜单中选择 New>Other... 打开 New Wizard,选择Eclipse Modeling Framework 目录下的 EMF Generator Model. (online help 中选的是 EMF Model,我的EMF版本较高,选项有变化)
- 在下一向导页面中输入文件名 library.genmodel. 必须以 .genmodel 为后缀名。
- 下一向导页面用来选择模型导入方式,一共有四种,该例子使用 Annotated Java 作为导入模型的手段。
- 完成向导,此时 model 目录下生成了两个新文件 library.ecore 与 library.genmodel. 前者为 Ecore Model. 后者为 Generator Model, controls code generation for the model.
- 在打开的 library.genmodel 的根结点上打开上下文菜单,选择 Generate Model Code. 这样代码就生成好了。今后就在生成好的代码上继续开发。如果模型有变,就重新生成代码,EMF会自动合并你写的代码。也可以选择 Generator Model 的一个子结点来生成部分模型的代码。
- 同上的上下文菜单中选择 Generate Edit Code, 可生成一个新插件 library.edit. 实现了一个 Structured View 和修改模型对象的命令。
- 同上的上下文菜单中选择 Generate Editor Code, 可生成一个新插件 library.editor. 实现了 Editor 和 Wizard.
- 运行生成的Editor插件(通过Run As/Eclipse Application)。在打开的新工作台中创建一个 General Project, 通过 New>Other... 上下文菜单项打开 New Wizard, 选择 Example EMF Model Creation Wizards 目录下的 Library Model.