本文介绍了 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
分享到:
相关推荐
标题 "Eclipse GMF 制作简单工作流流程设计器(3)" 暗示了这是一个关于使用Eclipse Graphical Modeling Framework (GMF) 创建工作流流程设计工具的系列教程的第三部分。GMF是Eclipse平台上的一个开源项目,它提供了一...
2. **工作流和工作空间**:Eclipse的工作空间是项目管理的基础,了解如何有效地组织和管理工作空间中的项目,以及如何设置工作流以提高开发效率,如版本控制集成、构建过程自动化等。 3. **JDT(Java Development ...
9. **图形设计**:如GMF或BPMN,用于绘制UML图或业务流程图。 安装Eclipse插件通常可以通过Eclipse的内置市场(Eclipse Marketplace)进行,也可以通过下载插件的`.jar`文件,然后通过Eclipse的“Install New ...
1. **Activiti工作流引擎**:Activiti是一个开源的业务流程管理(BPM)和工作流引擎,用于在Java和Spring环境中构建企业级应用。它支持BPMN 2.0标准,提供了一整套流程定义、执行和监控的解决方案。 2. **BPMN 2.0*...
10. **设计和图形化** -比如GMF(Generated Model Framework)和BPEL Designer,用于创建图形化的工作流和数据模型。 11. **数据库工具** - DBeaver或MyEclipse Database Explorer允许开发者直接在Eclipse中连接、...
4. **项目构建与自动化插件**:Maven和Gradle是两种流行的构建工具,M2E(Maven Integration for Eclipse)和Gradle IDE插件帮助开发者在Eclipse中无缝管理依赖和构建流程。 5. **测试与调试插件**:JUnit是Java...
标签"java eclipse"表明这个插件是为Eclipse IDE的Java开发环境设计的,意味着它可以很好地集成到Java开发工作流中,为Java项目提供模型驱动的开发能力。 总的来说,"emf-runtime-2.9.2.zip"是一个用于增强Eclipse ...
这些功能定义了应用程序的核心功能或特定的工作流。例如,你可以创建一个名为"MyAppFeature"的功能,该功能可能包含处理用户界面、数据库连接、业务逻辑等多个插件。通过这种方式,你可以清晰地组织和管理应用程序的...
在这种情况下,DSL的使用可能会涉及如GMF/Eugenia这样的图形编辑器,它们提供可视化工具帮助开发者设计流程图,然后自动生成相应的Java代码。 GMF(Graphics Modeling Framework)是Eclipse项目的一部分,它是一个...
其中,EMF(Eclipse Modeling Framework)、GEF(Graphical Editing Framework)和GMF(Graphical Modeling Framework)是Eclipse平台下的三个重要框架: - **EMF**:用于构建模型驱动的应用程序。 - **GEF**:用于...
5. 命令行接口:对于自动化脚本或集成到其他工作流中,可能提供命令行工具。 使用EMF To GraphViz,开发者和模型设计师可以: 1. 快速查看模型结构,无需构建完整的GMF编辑器。 2. 分析模型的复杂性,发现潜在的...
1. **定义模型**:使用 EMF 的建模工具(如 Ecore Tools 或 GMF)创建数据模型,定义数据结构和关系。 2. **生成代码**:将模型导出为 Ecore 文件,然后使用 EMF 的代码生成器(如 `ecore2java` 或 `genmodel`)生成...