`
yiliner
  • 浏览: 214825 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用gmf实现业务模型编辑器

    博客分类:
  • GMF
阅读更多
用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如图:
分享到:
评论

相关推荐

    15 分钟学会 Eclipse GMF

    Eclipse GMF是一个强大的框架,它允许开发者创建具有用户友好的图形界面的模型编辑器。GMF通过自动生成代码和图形组件,简化了开发过程,使得开发人员可以专注于业务逻辑,而非底层图形渲染和事件处理。 二、GMF的...

    gmf 1.7 最新版的gmf

    2. **图形编辑器生成**:基于定义的模型,GMF能自动生成图形编辑器的代码,包括图形的绘制、布局以及与模型数据的交互。 3. **图元工厂**:GMF提供图元工厂,用于创建和管理图形元素,包括形状、连接线等,这些元素...

    Eclipse插件 GMF

    这个框架提供了一种强大的方式,让开发者能够创建出具有图形界面的模型编辑器,用于设计、开发和实现复杂的软件系统。 GMF的主要目标是简化图形用户界面(GUI)的开发过程,特别是对于那些需要建模和图表表示的项目...

    GMF EMF

    GMF(Generic Modeling ...通过深入研究GMF ѧϰ和GMF 学习这两个文件,你将能够掌握GMF的基本概念,理解其工作原理,并具备使用GMF创建自己的图形编辑器的能力。在实践中不断探索和学习,你将逐渐成为GMF的专家。

    GMF数据表建模例子

    GMF简化了创建自定义图形编辑器的过程,通过生成代码和编辑器组件,使得开发者可以专注于业务逻辑而不是底层实现。 2. **EMF和GEF**:EMF是Eclipse用于构建模型的基础,它提供了一种在Java中表示和操作结构化数据的...

    eclipse gef ve gmf

    GEF允许开发者定义自己的模型,并通过模型驱动的方式来实现图形编辑器,使得开发者可以专注于业务逻辑,而不用关心底层的图形渲染细节。 2. VE(Visual Editor) VE是Eclipse中的一个可视化编辑器项目,旨在提供一...

    一个简单的GMF实例

    3. **生成代码**:基于你的模型,GMF会自动生成编辑器的大部分代码,包括图形表示(RCP视图)、编辑操作以及数据模型到图形的映射。 4. **实现细节**:尽管GMF自动生成了大部分基础结构,但你可能还需要编写一些...

    GMF介绍以及使用手册.rar

    在实践中,GMF的应用非常广泛,它可以用于构建UML模型编辑器、数据库设计工具、网络配置界面等各种图形化的应用程序。由于GMF是开源的,并且与Java紧密集成,因此它为开发者提供了丰富的API和社区支持。 总结来说,...

    eclipse GMF 制作简单工作流流程设计器(3)

    通过这个教程,开发者将能够掌握使用GMF创建自定义图形编辑器的基本技能,这对于那些需要为特定业务流程创建可视化设计工具的人来说是非常有价值的。同时,了解GMF的工作原理也能加深对Eclipse RCP(Rich Client ...

    org.eclipse.gmf.rar

    《深入解析Eclipse GMF RAR技术》 在软件开发领域,Eclipse是一个广泛使用的集成开发环境(IDE...在实际项目中,通过熟练运用GMF RAR,开发者能够快速构建出符合业务需求的图形化编辑器,提高开发效率,降低维护成本。

    gmf-runtime-2.1.2.zip

    开发者可以通过导入模型文件,然后利用GMF生成对应的图形编辑器,实现模型的可视化编辑。 总结一下,"gmf-runtime-2.1.2.zip"是Eclipse图形化开发插件GMF的运行时组件,主要用于创建和编辑基于模型的图形用户界面。...

    图形建模框架GMF综述

    这些代码包含了模型对象的实现、编辑器界面的定义以及必要的事件处理逻辑。 - **扩展点支持**:为了满足不同用户的特定需求,GMF提供了多种扩展点,允许开发者增加自定义的行为或功能。 #### 结论 总体而言,GMF...

    《GMF Mindmap 教程:Step 2_1》最终代码.

    这涉及到EMF模型的创建、GMF生成器的使用、以及图形编辑器的定制。通过这个过程,你不仅可以掌握 GMF 的工作原理,还能了解到如何利用 GMF 快速构建图形化的应用程序。 总结一下,本教程《GMF Mindmap 教程:Step 2...

    gmf mvc editpolicy

    GMF允许开发者通过定义模型、生成视图和控制器代码来自动生成编辑器。 **MVC模式** MVC模式是一种软件设计模式,将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。模型负责管理...

    行业分类-设备装置-基于GMF的可视化建模平台.zip

    GMF是Eclipse项目的一部分,专门用于构建强大的模型编辑器,适用于各种领域的设备装置建模。 GMF,全称为图形建模框架,是Eclipse IDE的一个开源组件,旨在简化和加速图形用户界面的创建,特别是针对建模和工程领域...

    【资料整理】中国Eclipse社区开发资料整理

    Eclipse Graphical Modeling Framework(GMF)是Eclipse IDE中的一个强大工具,它提供了一种方式来创建和实现基于模型的图形编辑器。GMF允许开发者定义图形表示和模型之间的映射,从而轻松地创建用户友好的图形界面...

Global site tag (gtag.js) - Google Analytics