用GMF产生业务模型编辑器
来源:互联网 发布:淘宝 便宜 内存卡 编辑:程序博客网 时间:2024/05/16 06:09
用gmf实现业务模型编辑器
过去用Graphical Editor Framework(GEF)实现业务模型编辑器既慢又痛苦,光是理解复杂的GEF框架,就要花费很长时间,GEF是个典型的MVC框架,用户可以自定义模型,只要当模型的属性发生变化时,通知模型的监听器就可以了,GEF中模型的监听器被称为控制器,它在MVC框架中处于核心地位,是连接模型和视图的桥梁,它负责将模型的变化反映到视图上,同时把用户在视图上所作的操作反映到模型上,在这过程中还涉及到命令和策略等一些概念,这里我们就不细说,毕竟不是介绍GEF的。
当然我们可以借助于Eclipse Modeling Framework(EMF)来实现模型,因为用EMF生成的模型,就已经实现了消息通知机制,省去了自定义模型中很多工作量,如果EMF和GEF真能很好的结合,估计也不会有GMF的产生了,由于EMF和GEF采用不同的命令堆栈,给EMF和GEF要实现无缝结合带来了很大的技术问题,这个时候GMF就应运而生了(“时势造英雄”),它解决了GEF和EMF相结合中遇到的技术问题,当然了我并不是说有了Graphical Modeling Framework (GMF),GEF和EMF就没有用武之地了,深刻理解GEF和EMF对学习GMF有很大的帮助。
我们还是进入正题吧!这段时间由于工作的原因,对GMF作了一些研究,虽然只是了解了一些皮毛,但也想写出来和大家一起分享,同时也恳请这方面的大虾们给点意见。
下面,我就用GMF实现了一个简单的业务模型编辑器,以后可以在这基础上扩展。
我们知道GMF是以EMF建模为基础了,所以需要一个ecore模型,这里我们的ecore模型是从mdl转化过来的,我们用Rose设计一个mdl文件,如图:
在此模型中,有IPackage和IClass类(以后可以增加IAttribute,IAssociation类),它们之间是聚合关系。
构造ecore模型
1.打开Eclipse,在导航器视图右键,New-->Project,,新建一个GMF项目etm;
2.mdlàecore,在导航器视图右键,New-->Other,,新建一个EMF Model:etm.genmodel
在Select Model Importer向导页中选择“Rose class model”,在Rose model Import向导页,选择我们前面新建的etm.mdl文件,点击完成,这样就产生了ecore模型和genmodel。
产生Model和Edit Code
1. 打开刚才产生genmodel,在根节点右键,点击Generate Model Code和Generate Model Code(产生的两个项目会被以后产生的业务模型编辑器项目引用)。
创建其他模型
GMF有个非常实用的工具,如图:
它可以帮助你如何一步步地生成编辑器。
1.从Domain Model开始,选择select,在弹出的对话框中,选择我们前面产生的etm.ecore;
2.在Domain Gen Model,选择select,在弹出的对话框中,选择我们前面产生的etm.genmodel;
3.选择Domain Model上面的Derive,将弹出向导对话框,这个向导对话框用来产生Graphical Def Model,熟悉GEF的人就知道,这些Model对应图形化编辑器中的图形模型。在这个向导对话框第一个向导页可以指定产生Graphical Def Model的文件名和存放路径,这里我们接受默认值etm.gmfgraph,点“下一步”,在第二个向导页中,可以指定对应的ecore模型,这里我们接受默认值etm.ecore,点“下一步”,在第三个向导页中,只要指定Diagram Element为IPackage,即指定画布对应的模型,其它接受默认值,点完成即可。
4.选择Domain Model下面的Derive,将弹出向导对话框,这个向导对话框用来产生Graphical Tool Model,熟悉GEF的人就知道,这些Model对应编辑器调色板中的图形模型。在这个向导对话框第一个向导页可以指定产生Graphical Tool Model的文件名和存放路径,这里我们接受默认值etm.gmftool,点“下一步”,在第二个向导页中,可以指定对应的ecore模型,这里我们接受默认值etm.ecore,点“下一步”,在第三个向导页中,只要指定Diagram Element为IPackage,其它接受默认值,点完成即可。
5.选择Domain Model右边的Combine,将弹出向导对话框,这个向导对话框用来产生emt.ecore,etm.gmfgraph,etm.gmftool三者的Mapping Model。在这个向导对话框第一个向导页可以指定产生GMFMap Model的文件名和存放路径,这里我们接受默认值etm.gmfmap,点“下一步”,在第二个向导页中,可以指定对应的ecore模型,gmfgraph模型,gmftool模型,这里我们接受默认值,点“下一步”,在第三个向导页中,只要指定Diagram Root Element为IPackage,点“下一步”,在第四个向导页中,可以指定节点(Node)和连接弧(Link)对应的类,这里我们接受默认值,点完成即可。这儿我们还必须修改生成的etm.gmfmap文件,否则下面的操作就会出错。给Mapping/Top
Node Reference/Node Mapping/Label Mapping的Diagram Label属性指定一个值,这里我们指定Diagram Label IElementName,即在节点图形上显示节点的name属性。
6选择Mapping Model右面的Transform,将弹出对话框,这里我们接受默认值etm.gmfgen,点完成,接下来,又弹出弹出对话框,点“Yes”即可。
7选择Diagram Gen Model里面的Generator Diagram Editor,就可以生成图形化编辑器了。
我们重新启动一个Eclipse 工作台,File/New/Examples/Etm Diagram如图:
- 用GMF产生业务模型编辑器
- GMF学习笔记(二、图形编辑器中标记的元模型 Notation meta-model)
- 使用GMF开发可视化界面编辑器(五)——模型的约束校验
- gmf项目:获取图形编辑器选择的图形和底层模型
- 业务用例模型
- Eclipse GMF Tutorial中文例程(1-创建GMF图形编辑器)
- GMF
- gmf
- 使用GMF开发可视化界面编辑器(一)
- 使用GMF开发可视化界面编辑器(四)——Compartment
- GMF中如何获取模型所在文件和工程
- GMF学习之二tianPan例子之工具模型定义
- GMF学习之三tianpan例子之图形模型定义
- SOA产生的业务背景
- 工作流之业务模型
- BLM业务领先模型
- 模型编辑器
- [全程建模]业务模型用UML元素如何表达?
- 解决收藏夹收藏列表按字母排序问题
- commons-fileupload-1.2同时上传文件和文字的servlet实例(原创)
- 想成为嵌入式程序员应知道的0x10个基本问题
- JavaBean
- 基本功能计算器算法(优先级)
- 用GMF产生业务模型编辑器
- 集成测试的模式和方法
- 使用csc命令将.cs文件编译成.dll的过程
- 理解I/O Completion Port(完成端口)
- sad
- 在WinSock上使用IOCP
- 欢迎参加2007年5月19-20日在杭州举办的首届中国网络工程师侠客行大会暨中国互联网技术精英论坛
- Jdk5.0新特性——Generic Types (泛型)
- 使用继承的若干规则