- 浏览: 3502109 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
用GMF生成简化的数据库设计器
Eclipse Graphical Modeling Framework (GMF) 能 够帮助我们快速构造基于EMF和GEF的图形化编辑器,实际上对于不是很复杂的应用来说,开发人员并不需要了解EMF和GEF就可以使用GMF。这篇帖子 通过从零开始生成一个数据库设计器的全过程,演示了在使用GMF创建应用程序时,构造ecore模型、构造.gmfgraph文件、构造.gmftool 文件、构造.gmfmap文件和生成编辑器的这几个步骤。
一、开发环境
由于目前gmf还没有发布正式版,所以这篇帖子使用的是相对稳定的GMF 1.0M4版本 ,1.0正式版将在2006年7月初发布。gmf对eclipse平台和一些插件的要求比较高,所以你可能要对你的开发环境进行一些升级更新才能感受gmf带来的方便,具体要求是这样的:Eclipse 3.2M4 、EMF 2.2.0M4 、GEF 3.2M4 和UML2 2.0M2 ;此外还要下载一个名为ANTLR 的包,解压后要把antlr.jar文件放在gmf插件目录的antlr/lib下,这个依赖只是暂时的,gmf正式版发布之前会去掉它。
二、构造ecore模型
因为只是为了演示gmf,这里构造的是一个非常简化的数据库设计器。用户通过设计器可以创建表格,为每个表格增加一些列,定义这些列的属性,以及在 表格之间建立外键关系。所以在ecore模型里应该有Database、Table和Column这几个类,此外还有一个FKRelation类代表表格 之间的连接,在Database类下有一个名为fkrelations的引用用来记录一个数据库设计中所有的这些连接。
创建名为com.my.dbdesigner的Empty EMF Project项目,有多种方式可以创建ecore文件,在gmf的example里有一个例子是ecore文件的图形编辑器,如果你安装了这个例子,可 以在项目的根目录下New->Other->Examples->Ecore Diagram创建名为dbdesigner的文件,这将生成dbdesigner.ecore和dbdesigner.ecore_diagram文 件。我在使用它编辑ecore文件时遇到了一些同步的问题,所以后来还是用eclipseUML来编辑的,不过这只是一个方法问题了。总之,我们这个数据 库设计器的ecore模型如图1所示(如果嫌麻烦,可以点这里下载 现成的ecore文件)。
图1 数据库设计器的简化ecore模型图
三、构造.gmfgraph文件
主菜单New->Other->Example EMF Model Creation Wizards->GMFGraph Model创建名为dbdesigner.gmfgraph的文件,向导最后一步中Model Object选择为Canvas,然后按Finish按钮。在编辑器里,把Canvas命名为DBDesignerDiagram,这将成为数据库设计器 的画布。在Canvas下New Child创建一个名为Default的Figure Gallery,Figure Gallery的作用是容纳一些可供重用的Figure。在Figure Galley下创建一个名为BasicRectangle的Rectangle节点,在这个例子里大多数图形只用矩形就够了(除了连接线)。现在,在 Canvas下创建一个名为TableNode的Node节点,它代表数据库设计器里的表格,这个节点的Figure属性选择为刚才定义的 BasicRectangle,见图2,也就是指定在将来生成的数据库设计器里,表格显示为矩形。
图2 TableNode节点
可以想象,现在生成的数据库设计器里已经可以在画布上创建矩形的表格了,那么怎样实现在表格里创建列呢?这稍微麻烦一些,因为表格图形并不是全部面 积都用来放置列,而要留出顶部的一行用来显示表格名称,而且这些列也不是像表格在画布上那样随意放置,而是按由上到下的顺序排放的,这就需要在表格图形里 加一个隔间(Compartment),隔间的概念可以在图3中看到,它的作用就是放置子元素,但隔间本身一般不代表模型中的某个元素。
图3 红色虚线部分所示为表格图形里的隔间
创建一个与TableNode同级的名为ColumnCompartment的Compartment,意即用来放置列的隔间,在属性视图里把它的 Figure属性设置为BasicRectangle。再创建一个名为ColumnChild的同级Child节点,它的Figure属性同样为 BasicRectangle,这个ColumnChild就是作为子元素的列,如图4所示。
图4 ColumnChild节点
如前所述,数据库设计器里允许在不同表格之间创建连接线来表示外键关系,为简单起见,我们用连接线的标签定义作为外键的列名。因为现在我们的 Figure Gallery里只有矩形,所以先要给Figure Gallery增加一个Polyline Connection,命名为BasicPolyline。然后在Canvas下创建一个名为FKConnection的Connection,它的 Figure属性选为BasicPolyline,如图5所示。
图5 FKConnection节点
四、构造.gmftool文件
主菜单New->Other->Example EMF Model Creation Wizards->GMFTool Model创建名为dbdesigner.gmftool的文件,向导最后一步中Model Object选择为Tool Registry,然后按Finish按钮。在Tool Registry下创建Palette,在Palette下创建标题为DBDesigner的Tool Group,在这个Tool Group下为Table和Column分别创建一个Creation Tool,它们将成为数据库设计器中用来创建表格和列的那的两个按钮。同样在这个Tool Group下,为连线也创建一个Creation Tool,如图6所示。
图6 ForeignKey节点
五、构造.gmfmap文件
主菜单New->Other->Example EMF Model Creation Wizards->GMFMap Model创建名为dbdesigner.gmfmap的文件,向导最后一步中Model Object选择为Mapping,然后按Finish按钮。从主菜单GMF Editor里选择“Load Resource...”命令,在对话框里按Browse Workspace按钮,选中我们的dbdesigner.ecore、dbdesigner.gmfgraph和dbdesigner.gmftool 这三个文件,见图7,再按OK关闭对话框。
图7 为定义映射载入需要的资源
在编辑器的Mapping节点下创建一个Canvas Mapping,可以看到在属性视图里它的属性被分为三类,分别对应ecore模型、工具和图形这三个方面,对于Canvas Mapping,必须设置Domain Model、Element和Diagram Canvas这三个属性,值分别为EPackage dbdesigner、EClass Database和Canvas DBDesignerDiagram,它们都是下拉选项,所以很容易确定。
刚才的设置相当于告诉了GMF我们要把Database类映射为画布,现在要告诉GMF我们还要把Table类映射为画布上的矩形,所以要创建另一 个Mapping的子节点Node Mapping,它的属性见图8,注意可能要先选择了Element属性值后Edit Feature属性才可选。
图8 为数据库表格定义Node Mapping
还要告诉GMF表格里要能创建列,因此在Node Mapping下创建Compartment Mapping和Child Node Mapping各一个,前者只要将Compartment属性选择为在.gmfgraph里定义的ColumnCompartment即可;后者的属性如 图9所示,注意Compartment Mapping的Child Nodes属性与Child Node Mapping的Compartment属性是双向的,我们只用定义其中一个方向即可,另一个方向会自动填充。
图9 为列定义Child Node Mapping
最后要处理一下连接线,方法是在Mapping下创建一个Link Mapping,它的属性比较多,见图10。
图10 为外键关系定义Link Mapping
六、生成编辑器
该做的准备工作都已就绪,现在到了激动人心的最后一个步骤了。首先是要生成基本的EMF代码,包括核心模型代码和.Edit代码,因为gmf的图形 化编辑器依赖这两个部分,而EMF传统的Editor部分则并不需要。这个步骤在EMF的帖子里已经介绍过了,这里不再重复。接下来打开 dbdesigner.gmfmap文件,在编辑器里点右键,选择“Create generator model...”命令,在对话框里接受缺省的dbdesigner.gmfgen文件名,按OK确定后就会生成一个.gmfgen文件。打开这个文件, 还是在编辑器里点右键,选择“Create diagram code”命令,这样就会生成图形化编辑器的代码,这些代码放在名为com.my.dbdesigner.gmf.editor的项目中。
如果在执行上面步骤中出现了错误,就要检查那些模型文件是否正确,特别是.ecore文件的package中Ns Prefix和Ns URI这两个属性不应为空,如果错误信息为“java.lang.IllegalStateException: Can't find genFeature for feature 'XXX' in class XXX”则很可能是由于更改了.ecore文件后没有更新.genmodel文件。
运行这个生成的插件后,你就可以通过主菜单File->New->Example->DBDesigner Diagram创建数据库设计了,图11是它的工作界面。功能不错,但在我的机器上响应不是很快。点此下载生成后的项目打包
图11 数据库设计器的运行画面
参考:GMF Tutorial
发表评论
-
js压缩工具(转载)
2012-06-07 11:58 9535怎么压缩Js?为什么要压缩Javascript? Javasc ... -
maven常见问题问答
2012-05-05 11:34 89391.前言 Maven,发音是[`meivin ... -
Eclipse Indigo - Cannot install Android ADT Plugin
2012-02-29 01:17 3882When I try to install the And ... -
Eclipse Indigo - Cannot install Android ADT Plugin
2012-02-29 01:13 1988When I try to install the And ... -
使用iconv进行内码转换(Big5->GB2312)
2012-02-26 00:56 3501i conv 是一个通过unicode 作为中间码 ... -
Enterprise Architect's Code Template Syntax
2011-12-13 22:58 2018Code Templates are written as ... -
Enterprise Architect's Engineering Code Template Framework Code Templates
2011-12-13 22:57 1783The Code Template Framework c ... -
ActiveX控件在签名以后,仍然被IE浏览器默认安全级阻止而无法安装。
2011-11-18 08:56 5439使用代码签名证书签名后的控件在运行时报“Internet ... -
关于IObjectSafety和ActiveX组件的脚本安全
2011-11-17 19:19 3120都说ActiveX 危险,那么 ... -
在此页上的 ActiveX 控件和本页上的其它部份的交互可能不安全。你想允许这种交互
2011-11-17 19:09 14823如果采用VC++开发的ActiveX,那么第一次运行的时候,I ... -
如何编写 INF 文件
2011-11-16 14:31 2183INF文件全称Information File文件,是Wino ... -
如何在web上实现对另一个应用程序的键盘输入,就像vb中的sendkey
2011-11-16 10:49 3539用 set WshShell = CreateOb ... -
MINGW GCC 4.3.0 安装与配置(解决CREATEPROCESS问题)
2011-07-28 23:53 4708首先,下载Mingw TDM 4.3.0版本http:// ... -
使用 cURL 和 libcurl 通过 Internet 进行对话
2010-02-28 14:41 3650cURL 是一个命令行工具,可以对文件传输使用许多协议, ... -
Eclipse Babel Project Downloads
2010-02-06 21:23 2849Babel Language Packs - 0.7.1 ... -
SIP 软电话开发环境的建立
2010-01-29 00:44 3252要在windows或者linux平台下开发基于SIP的软电 ... -
基于 Eclipse 平台的代码生成技术
2009-10-12 10:09 2839http://www.ibm.com/developerwor ... -
SVK:基于 svn 的分布式版本管理系统
2009-07-11 23:48 1791SVK 是一个基于 Subversion(svn)的分布式 ... -
Firefox+IE11个WEB开发工具
2009-07-11 00:12 4365以前一直不太用FireFox,毕竟是在MS的平台下工作。记得 ... -
让结对编程跨越地理位置的限制
2009-02-14 23:45 2161本文介绍如何利用 ECF(Eclipse Communica ...
相关推荐
GMF简化了创建自定义图形编辑器的过程,通过生成代码和编辑器组件,使得开发者可以专注于业务逻辑而不是底层实现。 2. **EMF和GEF**:EMF是Eclipse用于构建模型的基础,它提供了一种在Java中表示和操作结构化数据的...
标题 "Eclipse GMF 制作简单工作流流程设计器(3)" 暗示了这是一个关于使用Eclipse Graphical Modeling Framework (GMF) 创建工作流流程设计工具的系列教程的第三部分。GMF是Eclipse平台上的一个开源项目,它提供了一...
3. **生成代码**:GMF将根据设计生成编辑器的Java代码和资源文件。 4. **编译与运行**:编译生成的代码,然后在Eclipse IDE内运行图形编辑器,进行测试和调试。 总的来说,Eclipse GMF 1.7是开发图形化应用程序的...
- **系统设计**:GMF常用于设计系统架构图,例如网络拓扑、数据库设计等。 - **软件开发**:在软件工程中,GMF可用于生成UML模型,帮助理解和管理代码结构。 - **数据建模**:数据建模工具通常利用GMF来创建和...
- 生成代码:GMF Generator根据上述模型和设计生成编辑器的Java代码和图像资源。 - 集成到RCP应用:最后,将生成的编辑器集成到Eclipse RCP项目中,实现图形界面。 4. **GMF教程**: - 通过提供的"GMF 学习"文件...
通过本教程,读者将逐步了解如何使用GMF来设计和实现图形化建模工具,包括如何创建模型,设计图形界面,以及集成编辑功能。同时,教程还探讨了GMF如何简化开发过程,减少开发者对底层框架的直接交互,提高开发效率。...
3. **生成编辑器代码**:使用GMF的模型到代码(M2T)工具生成编辑器的Java代码。 4. **自定义编辑器**:根据需要对生成的代码进行调整,添加额外的功能或修改默认行为。 5. **打包和部署**:将编辑器集成到Eclipse...
在实践中,GMF的应用非常广泛,它可以用于构建UML模型编辑器、数据库设计工具、网络配置界面等各种图形化的应用程序。由于GMF是开源的,并且与Java紧密集成,因此它为开发者提供了丰富的API和社区支持。 总结来说,...
本教程是基于英文教程的实践与翻译,旨在帮助读者理解并掌握如何使用GMF创建一个Mindmap编辑器。 1. **创建GMF项目** - 在Eclipse中,通过`File` > `New` > `Project`,选择`New GMF Project`,创建名为`org....
2. **自动代码生成**:GMF提供了一套基于EMF(Eclipse Modeling Framework)的工具,能够自动生成模型到代码的转换,包括编辑器、表单、生成器等,减少手动编码的工作量。 3. **图形渲染**:GMF支持多种图形格式,...
通过深入研究和重构Taipan,读者可以逐步熟悉GMF的API,理解其设计理念,并掌握如何使用GMF创建自己的图形化编辑器。这样的实践不仅有助于学习GMF本身,也为理解和应用EMF和GEF提供了宝贵的经验。
传统上,开发人员依赖如Rational Rose或Sybase PowerDesigner这样的商业工具来创建UML模型或者数据库设计模型。然而,这些工具往往不能完全满足特定领域的个性化需求,而且自行开发新的建模工具不仅成本高昂,还需要...
RAR负责管理模型和图元的运行时行为,它为GMF生成的图形用户界面提供了基础架构支持。 GMF RAR的核心功能包括: 1. **模型与视图的映射**:RAR定义了模型元素如何在图形界面中呈现,包括形状、连接线、属性等。...
GMF的出现极大地推动了图形化编辑器的开发进程,它不仅简化了复杂的编程任务,还为开发者提供了强大的工具集,使得图形界面的设计与实现变得更加高效和直观。通过Taipan实例的深度分析,我们不仅能够深入了解GMF的...
### GMF开发文档知识点概述 #### 一、GMF简介 **GMF (Graphical Modeling Framework)** 是一...通过本文介绍的知识点,读者可以了解到GMF开发的关键步骤和技术要点,从而更好地掌握如何使用GMF进行图形编辑器的开发。
它允许开发者通过拖放的方式设计GUI界面,而不是手动编写XML代码或使用复杂的布局管理器。VE支持多种组件的可视化表示,并提供了代码生成和同步功能,使得GUI设计和代码开发更加高效。 3. GMF(Graphical Modeling ...
GMF允许开发人员通过模型驱动的方法来设计和实现复杂的图形编辑工具,它提供了丰富的功能,包括自动代码生成、图形布局和交互逻辑等。 【描述】: 虽然描述部分为空,我们可以推测这篇博文可能详细介绍了作者创建...