本文是一个简单的案例,讲解如果脱离eclipse的插件环境使用EMF建模后的生成代码。
package
file;

import
java.io.IOException;
import
java.util.ArrayList;
import
java.util.Iterator;
import
java.util.List;

import
model.Company;
import
model.Employee;
import
model.ModelFactory;
import
model.ModelPackage;

import
org.eclipse.emf.common.notify.Adapter;
import
org.eclipse.emf.common.util.URI;
import
org.eclipse.emf.ecore.EPackage;
import
org.eclipse.emf.ecore.resource.Resource;
import
org.eclipse.emf.ecore.resource.ResourceSet;
import
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import
org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;


public
class
EmployManager
...
{

String file = "MyBak.model";

private List<Company> companies;


public EmployManager() ...{
companies = load();
}


public List<Company> getCompany() ...{
return companies;
}

EMF的建模过程使用的是eUML2, 该程序为eclipse插件, 支持在eclipse环境中构建,生成EMF模型文件。
eUML2 下载网址为
www.soyatec.com. Eclipse update 地址为
1 创建Empty EMF 项目

2 在新建对话框中选择EMF Class Diagram, 创建eUML2的建模图表文件。

3 模型例子如下,成个模型的入口为Company, Company有雇佣和解雇员工的权力。Employee继承自Person,提供有别于普通人定义的薪水属性。

要注意的地方是,每个类的属性中不要选中 Is an interface 选项,否则只会生成模型的定义接口,不会生成具体的实现类。(如下图)

4 在新建对话框中,选择EMF Model, 创建EMF 模型文件

填写文件的名字和存放地址,文件名后缀必须是genmodel

选择从Ecore model文件导入模型。

在使用eUML2构建模型图表后,会生成.ecore文件。其中保存的EMF模型的相关信息,按照下图导入该文件即可。

5 生成.genmodel文件后,打开该文件,右键单击,选择Generate Model Code,即会根据模型信息生成可供使用的java文件。

同样,在设计EMF 模型的editor中,在右键菜单中,同样会出现生成代码的选项。在本文中,只生成模型代码,因为并不使用其他跟eclipse开发环境相关的功能。(如editor等)

6 生成的代码如下图红框部分所示。Model部分是模型的定义接口部分;model.impl是模型的实现部分;model.util提供了一些工具类。

7 上图中file包中的EmplyManager类,进行相关持久化的工作。Observer提供了一个监听资源变化的观察者。





































