`
mjtfly
  • 浏览: 51837 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多

本文介绍了 Graphical Modeling Framework(GMF)项目制作简单的工作流流程设计器,本文不再介绍GMF框架架构,只通过例子怎么玩转GMF。

本文的内容:

  1. 准备环境
  2. 建立GMF工程
  3. 建立ecore模型
  4. 建立emf generator model
  5. 建立Graphical Definition Definition Model
  6. 建立Tooling Definition Model
  7. 完成图形和工具的映射
  8. 生成GMF generator
  9. 运行
  10. 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.........还有什么呢?赶紧解决以上问题再说啦!

 

 

 

下一节的内容:

  1. 迁移线上加入箭头;
  2. 使用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
4
0
分享到:
评论
4 楼 windyer39 2011-08-02  
顶起 
3 楼 zhoujg 2009-07-18  
原来是我少做一步   h)设置标签:
2 楼 zhoujg 2009-07-18  
我到Create generator model...时报错,不知道什么原因?
The required feature 'diagramLabel' of 'Feature Label Mapping false' must be set
The required feature 'diagramLabel' of 'Feature Label Mapping false' must be set
The required feature 'diagramLink' of 'Link Mapping <Transition{}/>' must be set
1 楼 ixu 2009-07-10  
强力支持 ,正想了解如何在Eclipse上开发流程设计器,将持续关注。。。

相关推荐

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

    标题 "Eclipse GMF 制作简单工作流流程设计器(3)" 暗示了这是一个关于使用Eclipse Graphical Modeling Framework (GMF) 创建工作流流程设计工具的系列教程的第三部分。GMF是Eclipse平台上的一个开源项目,它提供了一...

    Eclipse 3高级编程

    2. **工作流和工作空间**:Eclipse的工作空间是项目管理的基础,了解如何有效地组织和管理工作空间中的项目,以及如何设置工作流以提高开发效率,如版本控制集成、构建过程自动化等。 3. **JDT(Java Development ...

    eclipse插件集合

    9. **图形设计**:如GMF或BPMN,用于绘制UML图或业务流程图。 安装Eclipse插件通常可以通过Eclipse的内置市场(Eclipse Marketplace)进行,也可以通过下载插件的`.jar`文件,然后通过Eclipse的“Install New ...

    Activiti Designer5.15.0源码

    1. **Activiti工作流引擎**:Activiti是一个开源的业务流程管理(BPM)和工作流引擎,用于在Java和Spring环境中构建企业级应用。它支持BPMN 2.0标准,提供了一整套流程定义、执行和监控的解决方案。 2. **BPMN 2.0*...

    eclipse插件大全

    10. **设计和图形化** -比如GMF(Generated Model Framework)和BPEL Designer,用于创建图形化的工作流和数据模型。 11. **数据库工具** - DBeaver或MyEclipse Database Explorer允许开发者直接在Eclipse中连接、...

    Eclipse常用插件

    4. **项目构建与自动化插件**:Maven和Gradle是两种流行的构建工具,M2E(Maven Integration for Eclipse)和Gradle IDE插件帮助开发者在Eclipse中无缝管理依赖和构建流程。 5. **测试与调试插件**:JUnit是Java...

    emf-runtime-2.9.2.zip

    标签"java eclipse"表明这个插件是为Eclipse IDE的Java开发环境设计的,意味着它可以很好地集成到Java开发工作流中,为Java项目提供模型驱动的开发能力。 总的来说,"emf-runtime-2.9.2.zip"是一个用于增强Eclipse ...

    rcp工程的描述

    这些功能定义了应用程序的核心功能或特定的工作流。例如,你可以创建一个名为"MyAppFeature"的功能,该功能可能包含处理用户界面、数据库连接、业务逻辑等多个插件。通过这种方式,你可以清晰地组织和管理应用程序的...

    Asynchronous-Stream-Processing-Applications-DSL:用于设计和实现异步流处理应用程序的领域特定语言(DSL)

    在这种情况下,DSL的使用可能会涉及如GMF/Eugenia这样的图形编辑器,它们提供可视化工具帮助开发者设计流程图,然后自动生成相应的Java代码。 GMF(Graphics Modeling Framework)是Eclipse项目的一部分,它是一个...

    开源软件架构 软件架构

    其中,EMF(Eclipse Modeling Framework)、GEF(Graphical Editing Framework)和GMF(Graphical Modeling Framework)是Eclipse平台下的三个重要框架: - **EMF**:用于构建模型驱动的应用程序。 - **GEF**:用于...

    EMF To GraphViz-开源

    5. 命令行接口:对于自动化脚本或集成到其他工作流中,可能提供命令行工具。 使用EMF To GraphViz,开发者和模型设计师可以: 1. 快速查看模型结构,无需构建完整的GMF编辑器。 2. 分析模型的复杂性,发现潜在的...

    EMF代码生成Merge

    1. **定义模型**:使用 EMF 的建模工具(如 Ecore Tools 或 GMF)创建数据模型,定义数据结构和关系。 2. **生成代码**:将模型导出为 Ecore 文件,然后使用 EMF 的代码生成器(如 `ecore2java` 或 `genmodel`)生成...

Global site tag (gtag.js) - Google Analytics