本文介绍了 Graphical Modeling Framework(GMF)项目制作简单的工作流流程设计器,本文不再介绍GMF框架架构,只通过例子怎么玩转GMF。
本文的内容:
- 准备环境
- 建立GMF工程
- 建立ecore模型
- 建立emf generator model
- 建立Graphical Definition Definition Model
- 建立Tooling Definition Model
- 完成图形和工具的映射
- 生成GMF generator
- 运行
- TODO LIST
1.准备环境:
本文用到到的环境是撰写此文日期(2009-06-20)的最新GMF版本(2.2.0 Stable Builds),
下载地址:http://www.eclipse.org/modeling/gmf/downloads/
相关依赖下载如下:
注意:插件版本必须与eclipse版本匹配,不匹配有可能导致GMF无法工作。本文是在Ubutu9.04 linux JDK6.0.13运行的。
2.建立GMF工程
New->Project...->Graphical Modeling Framework->New GMF Project,项目名称:com.mjt.flow.
3.建立ecore模型
在刚才新建的项目中model目录中,建立ecore模型;
a)New->Eclipse Modeling Framework->Ecore Model, 建立flow.ecore文件;
b)右键点击flow.ecore文件,Initialize ecore_diagram diagram file, 建立ecore图形编辑文件flow_ecore_diagram.
c)ecore模型文件图形显示如下:
此ecore文件定义了简单工作流流程模型,包括流程信息(WorkflowProcess)、活动(Activity)信息(开始活动
StartActivity、结束活动EndActivity、人工活动ManualActivity和自动活动AutoActivity)和线的
(Transitiion)信息, 在实际应用中不同活动的许多属性是相同的,作为一个基类。
在Transition和Activity关联中注意EOpposite这个属性,from--targets,to--sources.
4.建立emf generator model
a)右键点击flow.ecore,New->Ohter...->Eclipse Modeling Framework->EMF generator Model.
输入文件名flow.genmodel,如下图:
b)设置生成代码Base Package, 打开flow.genmodel, 选择Flow/Flow节点,在All分组属性的Base Package键入:com.mjt, 如下图:
c)然后点击右键Generate Model code 和 Generate Edit Code, 模型创建完毕。
生成代码完毕后如下:
5.建立Graphical Definition Definition Model
a)右键点击flow.ecore文
件,New->other...->Graghical Modeling Framework->Simple
Graphical Definition Model,建立flow.gmfgraph文件, 如下:
b)选择domain model文件,Diagram Element选择WorkflowProcess,如下:
c)下一步要定义图形节点、线以及标签显示,也可以在定义完毕后,手动再调整该定义,如下:
说明:WorkflowProcess没有在图形中作为节点显示,所以不用选择这两个了。所有活动作为NODE显示,Transition作为连接线,name作为显示的标签。
d)完成后打开flow.gmfgraph文件,设置节点Label居中。
- 展
开Canvas flow->Figure Gallery Default->Figure Descriptor
ManulActivity Figure->Rectangle ManualActivityFigure, 删除Flow Layout
false节点,添加GridLayout(右键点击Rectangle ManualActivityFigure,New
Child->Grid Layouet), 右键点击新建的Grid Layout 1,新建Margin和Spacing(New
Child->Margins Dimision, New Child->Spacing
Dimision),默认值都为0。在紧接下面的节点Label ManaulActivityNameFigure添加Grid Layout
Data(New Child->Grid Layout Data),设置如下:
属性
|
值
|
Grab Excess Horizontal Space(水平自动扩展,相当于占据剩余宽度100%) |
true
|
Grab Excess Vertical Space(垂直自动扩展,相当于占据剩余高度100%) |
true |
Horizontal Alignment(水平对齐方式) |
CENTER |
Horizontal Indent水平缩进像素 |
10
|
Horizontal Span(水平夸列) |
1
|
Vertical Alignment(垂直对齐方式) |
CENTER |
Vertical Span(垂直夸行) |
1
|
e)同样对AutoActivity Figure设置,设置后如下:
f)设置Label前不显示图标:
选择Canvas->Diagram Label ManualActivityName,
Diagram Label AutoActivityName, Diagram Label TransitionName, 将Element
Icon设置成false即可。
6.建立Tooling Definition Model
创建flow.gmftool文件,右键点击flow.ecore文件,New->other...->Graphical
Modeling Framework->Simple Tooling Definition Model, 在向导后面选择ecore
domain model的Diagram Element为WorkflowProcess. 然后选择工具如下:
7.完成图形和工具的映射
a)建立flow.gmfmap文件,New->other...->Graphical Modeling Framework->Guid Mapping Model Creation如下图:
b)选择Domain Model:
c)选择Diagram Palette:
d)选择Diagram Canvas:
e)Mapping:
说明:选择所有活动作为节点,Transition作为连接线。
f)对生成的flow.gmfmap进行调整,先调整工具和节点对应:
Mapping->Top Node
Reference<activity:ManualActivity/ManualActivity>->Node
Mapping<ManualActivity/ManualActivity>属性的Vitual
representation->Tool选择Creation Tool
ManualActivity, 其他的活动和线条也同理对应设置,如下图:
g)设置连接线Mapping:
设置Source Feature为Transition.from:Activity,Target
Feature为Transition.to:Activity,Diagram Link为Connection
Transition,Tool为Creation Tool StartActivity,如下图:
h)设置标签:
去掉StartActivity和EndActivity标签, 可以不要Label显示,开始结束活动以后可以用图标表示, 删除StartActivity和EndActivity的Feature Label Mapping fasle既可;
添
加线上的Label,右键点击Link
Mapping<Transition{Transition.from:Activity->Transition.to:Activity}/Transition>,
New->Child->Feture Label Mapping,如下:
8.生成GMF generator
最后一个文件了.
a)右键点击flow.gmfmap文件,Create generator model..., 新建flow.gmfgen文件,最后可以选择RCP富客户端程序,也可以不选择,这里先不选择,作为eclipse插件启动,如下:
c)如果没有任何错误,
以org.eclipse.ui.ide.workbench启动,运行结果如下:
啊哈,终于第一步成功了,但是是否觉得很丑、很不好用、不满足我们需求,我们还需要做什么呢...?
源代码见附件。
TODO LIST
1.有没有发现所有的活动类型都是START? 这是接下来待续的怎样使用OCL给对象属性赋值;
2.怎么回事,迁移线怎么没有箭头,没有箭头算什么呢?
3.我怎么区分不出来开始活动和结束活动,哎!搞了这么多步骤,原来做出来的编辑器是这么烂,失望! :) 别慌,在后续的文章的会继续讲到如何自定义图标;
4.线条少了约束,无拘无束!啊哈,还是需要OCL帮忙解决这个无法无天的编辑器;
5.头痛的国际化;
6.........还有什么呢?赶紧解决以上问题再说啦!
下一节的内容:
- 迁移线上加入箭头;
- 使用OCL语言给活动节点类型赋值。
Email:mjtfly@gmail.com 欢迎与我联系。
- 大小: 27.4 KB
- 大小: 16.6 KB
- 大小: 48.2 KB
- 大小: 76.3 KB
- 大小: 17.3 KB
- 大小: 47.8 KB
- 大小: 38.8 KB
- 大小: 81.8 KB
- 大小: 68.2 KB
- 大小: 144.2 KB
- 大小: 58.1 KB
- 大小: 42.6 KB
- 大小: 33.1 KB
- 大小: 34.7 KB
- 大小: 48.6 KB
- 大小: 137.4 KB
- 大小: 143.4 KB
- 大小: 152.6 KB
- 大小: 30.7 KB
- 大小: 86 KB
分享到:
相关推荐
NULL 博文链接:https://mjtfly.iteye.com/blog/423580
15 分钟学会 Eclipse GMF 15 分钟学会 Eclipse GMF
org.eclipse.gmf.rar org.eclipse.gmf.rar org.eclipse.gmf.rarorg.eclipse.gmf.rar
Graphical Modeling Framework,图形化建模框架
eclipse 3.2下的gef,ve,gmf,经过自己的收集,把三个都收集齐了,一并传上,希望对大家有用
eclipse gmf tutorial中用到的mindmap.ecore文件,官方链接已经失效了。
关于eclipse gmf插件的相关插件工具
eclipse 图形化开发 插件 gmf
使用Eclipse GMF进行可视化建模的实战资料,包含概念介绍和示例代码。
Eclipse 图形建模框架示例和教程
现在GMF的资源比较稀缺, 我提供了一个基于GMF的图形化数据建模的例子,供大家参考,既可以作为自己数据库设计的轻量级工具,也可以作为学习GMF的参考
GMF 学习资料 GMF中的小知识点、GMF 教程 Mindmap等
GMF 教程 Mindmap,本文是跟着英文教程做了一遍,并简单翻译、截图,做了一些补充,总算是实现了原文的效果。
GMF Tutorial中文版——一套入门教程
NULL 博文链接:https://mwhgjava.iteye.com/blog/2257771
综述了图形建模框架GMF,对于认识GMF,以及演说报告都有参考价值。
GMF实例解析.pdf