在信息系统开发平台OpenExpressApp - 总体架构的由来中说到MetaEdit+是全球DSM领域内著名的产品,OpenExpressApp将借鉴它的思想来形成自己的模型引擎,本篇介绍一下如何使用MetaEdit+来建立一个家族模型语言,这个也是MetaEdit+提供的一个示例,通过家族树语言的生产来加深对MetaEdit+的了解。如果你也想开发自己的建模工具,那么推荐你也去研究一下。
MetaEdit+下载
去官方网站MetaCase下载Free 31-day evaluation version of full MetaEdit+ Workbench,它自带一些示例模型,例如UML示例的一个图的界面如下:
需求
对家族树进行建模,图形建模后如下:
GOPPRR 元模型语言
再开始之前介绍一下GOPPRR原模型语言。对于家族树图形语言表示如下,在图中标识了多个元类型,每个类型有自己的功能和语义:
Eachmetatype has its function and semantics as follows:
- Graph 图:一个独立模型,通常使用图来表示
- Objects 对象:图的主要元素,例如例子中的Person
- Property 属性:图、对象、端口、角色和关系都可以拥有一些属性描述
- Port 端口:定义角色如何连接对象的可能语义
- Relationship 关系:让对象连接在一起
- Role 角色:连接关系与对象之间
家族树例子使用这些元类型表示如下:Person为对象,Family为关系,Parent、Child为角色,First name、Family Name为属性,没有定义端口,整个显示为一张图
实现家族树模型语言
- 生成对象Person,对象属性如下:
- 生成标记
在上图Object Tool中点击【Symbol Editor】按钮,弹出标记编辑器界面,生成标记如下:
- 生成关系Family
- 生成角色Parent、Child
- 生成图Family Tree
- 经过上面5步,Family Tree模型语言就轻易地建立起来了,这一步主要是应用模型语言生成家族树
模型演进
上面只是实现了一个简单的家族树模型,一般模型会随着要求不断演进,对于上面示例我们现在做一下演进:Person区分男性和女性
- 修改Person属性
- 增加从Person继承下来两个对象:Female和Male对象
- 增加男性和女性标记
- 修改图(Graph)定义
- 增加端口,限制连接点
- 再次修改Graph定义
- 应用模型生成一个家族图