前言
GMF(Graphical Modeling Framework)是Eclipse的一个开源项目,它在结合了EMF和GEF的 基础上,为基于模型的图形化编辑器的开发提供了一个功能强大的框架,开发人员可以采用建 模的方式很容易的生成高质量的代码框架。
GMF主要由开发工具和运行时两部分组成。开发工具负责基于GMF核心模型的设计和建模工作 ,包括:描述具体领域模型的 Graph 模型的表示,Tool 模型的表示,以及如何用 Mapping 模 型对前面三个模型进行映射组合,从而根据定义好的 Mapping 模型生成 Gen 模型,并最终完 成代码框架的生成。三个独立的模型设计大大提高了模型的可重用性,开发人员可以在各模型 所关注的领域对其进行进一步的定制,这个将在深入了解GMF建模工具中有详细介绍。GMF的运 行时环境提供了丰富的组件(如Command框架,Services, Global Action, Layout等等)和强 大的扩展机制,如 org.eclipse.gmf.runtime.emf.ui.modelingAssistantProviders, org.eclipse.gmf.runtime.common.ui.services.parserProviders, org.eclipse.gmf.runtime.diagram.core.viewProviders 等等,这些将在深入了解GMF运行时 框架中详细地介绍。
刚发布的GMF2.0 在 GMF1.0 的基础上进一步提高了其易用性,同时也加入了相当的新功能 。比如:Diagram 内容导航的支持,对 RCP 应用的支持,对 Preference Pages 的支持,支持 模型的合并等等。
本文主要基于 GMF2.0 的运行环境,介绍如何实现一个自上而下的 Process 分析工具。其 主要功能是:自上而下的分解一个大的 Process 为一批子 Process,每个 Process 可以由一 个具体的 Flow 来描述,对于同一个模型,可以由多个Editor去编辑,如Process Editor, Flow Editor。期望的结果如下图。
图 1.Process Editor
图 2.Flow Editor
本文将从定义领域模型入手,一步一步地介绍实现的细节。