GMF入门实例

来源:互联网 发布:python打开谷歌浏览器 编辑:程序博客网 时间:2024/06/05 19:50

这篇文章会详细地引导你创建一个简单的GMF入门例子,出自百度空间曾经飞过的日子

在创建GMF程序之前,必须先安装GMF插件。安装GMF插件的方法很多,使用Eclipse自动升级来获取安装GMF插件,相对其他方法会方便很多,具体过程:Eclipse平台Help->soft update->Available Software,在过滤窗口中输入GMF,就可以看到很多GMF插件,选上以后点击Install按钮就可以了。

然后我们来建立一个GMF工程,File->new->other->Graphic Model Framework->new GMF Project,命名org.zhan.FirmOrganization,点击next,选上show dashboard view for the created project,(这个选项会出现一个GMF DashBoard),然后finish。乍一看,生成的项目跟普通的Java项目没有太多的区别,只是过多了一个model文件夹和一个plug-in Dependencies的插件包。

我们可以根据这个DashBoard向导进行GMF的开发,当然也可以使用new->……来进行。但是使用DashBoard会使我们的开发过程更加清晰和简便,所以在第一个例子中我们完全按照DashBoard向导来完成。首先说一下,如果你的Eclipse中没有DashBoardProperties视图,可以在window->show view->other->Genarate中将他们显示。

1)建立领域模型 Domain Model

先建立元模型,在DashBoard中点击Domain ModelCreate,命名为Firm,目录选择org.zhan.FirmOrganization.model,然后finish。这个时候model目录下就出现了一个Firm.ecore的文件,双击打开Firm.ecore,看到打开的编辑器中只有一个包,选中它,在properties中设置它的属性:Name(包名):Firm, NS Prefix(前缀):FR, Ns URI(命名空间):www.FirmOrganization.zhan.org,这是三个属性,在设置之后,我还没有在哪个地方明显用到它们,暂时来说设置的时候可以随便。但是必须设置属性值,如果不设置的话,在待会生成代码的时候会报错(看过GMF 1.0的视频,没设置似乎不会报错)。

右击Package ExplorerFirm.ecore->Initialize Firm.ecore diagram file,会生成一个Firm.ecore_diagram的文件,这个文件可以用图形的方式帮助我们进行UML建模。方便起见,我们假使一个公司有若干项目,每一个项目由一个项目经理管理。项目的属性为:name, data ,description;项目经理的属性为: name, department。这样项目经理和项目之间有一个联系:manage

打开Firm.ecore_diagram文件,可以看到右边有一个Palatte的工具栏,简要说明一下我们这里要用到的几个东西,EClass表示一个类,Association表示一个联系,Aggregation表示积聚。在右边Palatte中选择EClass,分别创建三个EClass:OrganizationManagerProject。这个Organization是做什么的呢?暂且把它想象成一个根目录的作用吧。为了简便起见,项目和项目经理所有属性的类型都是字符串,详细说明一下Manager的设置,选择AggregationOrganization拉到Manager,设置名称为managers,在Properties中找到Upper BoundManager对象的最大数量),设置其值为-1,表示无穷。然后选择AssociationManager拉到Project,设置类似Aggregation。如图1所示,当我们鼠标停留在Manager上面的时候,就会出现一个工具栏,第一个黄色的小图标表示添加一个属性,在Properties设置属性名称name,,EType选择EString类型,这个时候会发现EAttribute Type也会自动设置为EString,设置完以后按下Ctrl+S保存应该知道吗?(保存文件以后不再说了)。最后设置好的UML模型如1所示:

                                                      

                                                       图1.设置好的UML模型   

       这个时候打开Fire.ecore,,会发现该文件也生成了和Firm.ecore_diagram一样的模型。

       这个时候GMF DashBoard中Domain Model图标中间会出现Firm.ecore字样,如果没有的话,第一种方法是通过Domain Model图标中的select,选中Firm.ecore,还有一种更方便的方法,就是只需要将鼠标选择包透视图中的Firm.ecore,或者是org.zhan.FirmOrganization工程,就可以了。在之后其他如Domain.Mapping Model等类似情况,也采取这两种操作即可,使用后者方法的话鼠标还是选中Firm.ecore(没错,是Firm.ecore)或org.zhan.FirmOrganization。

       接下来创建代码生成模型(或者可以会所是代码生成模型?)Domain Gen Model,在GMF DashBoard中点击指向Domain Gen Model的Derive,全部采用默认设置,finish。生成一个Firm.genmodel文件,打开,右击Firm根目录,或者Firm包,依次选择Generate Model Code, Generate Edit Code, Generate Editor Code,生成相对应的代码。Generate Model Code会在org.zhan.FirmOrganization/src下生成Firm,Firm.impl,Firmutil包;Generate Edit Code和Generate Editor Code会生成org.zhan.FirmOrganization.edit和org.zhan.FirmOrganization.editor两个项目,它们的功能暂时不说了。

(2):创建图形定义模型 Graphical Def Model

点击GMF Board中的Derive,点击next,这个时候出现图2这个向导页,Diagram Element 选择Oranization,点击next,出现图三这个向导页。左边表示一个模型;右边的选项按钮,第一列代表一个类,第二列代表联系,第三列代表属性,它们表示图形的样子。如果某一行的某个选上被选上,则表示我们希望这个模型在画廊里以某种形式出现相对应的图型。按图2选择各个选项。

图2.Graphic Def Model 向导设置

      之后会创建一个Firm..gmfgraph文件,这个文件主要是定义了一些我们在最后应用中在画廊出现的图形,全部采用系统生成设置,我们暂时不修改。打开的Firm.gmfgraph文件如图3所示:

                           

                                                          图3.Firm..gmfgraph 文件结构

      (3):创建图形定义模型 Tool Def Model

类似于定义图形模型,点击Derive->next->选择Oranization->按照图3设置->Finish。

                                         图4.Tool Def Model 向导设置

之后会创建一个Firm..gmftool文件,这个文件主要是定义了一些我们在最后应用中在工具栏中出现的图形,全部采用系统生成设置,我们暂时不修改。打开的Firm..gmftool文件如图5所示:

                                                   图5. Firm..gmftool 文件结构

(4):映射模型定义 Mapping Model

这里将我们在第(1)步创建的Firm.ecore、第(2)步创建的Firm.gmfgraph、第(5)步创建的Firm.gmftool关联映射起来,也就是最终实现一个工具栏的图标对应一个画廊的大图标,同时又对应一个我们建立的ecore元模型。

步骤如下: 点击Combine,出现一个向导页,定位Domain Model向导页,选择

Organization,next 出现的是定位Diagram Palette模型的向导页,next 是Diagram Canvas的向导页,点击next出现一个比较复杂的Mapping向导页,暂时不管,Finish。这个时候出现Firm.gmfmap文件。这个文件至今为止除了建模之外最复杂的东西了,Node Mapping 表示类和图形的映射,LinkMapping 表示一个映射模型的映射。这里有一定要设置的地方是:展开打开Top Node Reference->Node Mapping->Feature Label Mapping false,在Properties中设置Diagram Label,这个表示最后在图形中出现的标签信息。理论上其他地方是不用修改的,可是GMF经常出错,检查一下Node Mapping 和 Link Mapping属性的DiagramNode 和 Tool是否对应。例如Node Mapping中,Element 表示我们所定义的元模型元素,Tool表示的图标,Diagram Node表示一个Node在画廊中的图形,Node Mapping的设置如图6所示:

     

                                                      图6.Node Mapping设置      

   Mapping设置好了以后,我们离胜利只有一步之遥了。

        (5):生成gen Model

       看到DashBoard中有个Transform,选项RCP表示富客服端(?),我没用过,不选。点击Transform,生成一个Firm.genmodel文件,点击Generate diagram editor,生成一个org.zhan.FirmOrganization.diagram项目。

        (6)最后:运行

右键点击我们创建的任何一个项目,run as->Eclipse Application,在新出现的Eclipse中新建一个普通的JavaProject(或Projectorg.zhan.FirmOranizationApp,右击->new->other->Examples->Firm Diagram,Finish之后就出现了一个*.firm*.firm_diagram两个文件,打开*.firm_diagram这个文件,出现的东西是不是觉得挺眼熟的?分别点击右边工具栏Palette中的ManagerProject,在画廊中创建一个Manger模型和Project模型,再点击Manager Control,连接ManagerProject。如图7所示,你可以再Properties中清楚设置各个属性。

                                                         图7.运行实例    

第一个例子就是这样啦,欢迎继续关注和留言,一起探讨GMF这个新奇的世界。 本文转载是希望通过简单的例子可以探讨一下GMF自动生成文档的运行机理!

原创粉丝点击