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

本文已挪至  http://www.zhoujingen.cn/blog/2687.html

 

 

 

  在信息系统开发平台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. 应用模型生成一个家族图

 

 

欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]

 

 

posted on   周 金根  阅读(4618)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

导航

点击右上角即可分享
微信分享提示