DSM:使用MetaEdit+编写Family Tree Modeling Language

信息系统开发平台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为属性,没有定义端口,整个显示为一张

实现家族树模型语言

  1. 生成对象Person,对象属性如下:
  2. 生成标记
    在上图Object Tool中点击【Symbol Editor】按钮,弹出标记编辑器界面,生成标记如下:
  3. 生成关系Family
  4. 生成角色Parent、Child
  5. 生成图Family Tree
       
       
  6. 经过上面5步,Family Tree模型语言就轻易地建立起来了,这一步主要是应用模型语言生成家族树

模型演进

上面只是实现了一个简单的家族树模型,一般模型会随着要求不断演进,对于上面示例我们现在做一下演进:Person区分男性和女性

  1. 修改Person属性
  2. 增加从Person继承下来两个对象:Female和Male对象
  3. 增加男性和女性标记
       
  4. 修改图(Graph)定义
       
  5. 增加端口,限制连接点
       
  6. 再次修改Graph定义
  7. 应用模型生成一个家族图

 

发表评论