• MetaModelEngine:域模型定义


      每一个DSL的核心都是一个域模型,它定义了这一语言所代表的各种概念,以及这些概念的属性和它们之间的关系,在创建DSL每一个元素时都是使用域模型来描述。域模型还为语言的其他方面的建立提供了基础:图形符号、工具箱、资源管理器、属性窗口、验证、序列化和部署、代码生成等的定义。在MetaModelEngine:元模型引擎开发思路中介绍总体思路,本篇着重考虑一下域模型定义相关内容。

    模型架构图

    GOPRR为元元模型层、领域概念为元模型层、产品规格为模型层、实例为系统应用层。对于域模型定义,我们主要关注GOPRR这一层。

    域模型概念:GOPPRR

    • Graph 图:一个独立模型,通常使用图来表示,我们还支持列表和矩阵两张表格方式的展现
    • Objects 对象:域类
    • Property 属性:图、对象、端口、角色和关系都可以拥有一些属性描述
    • Port 端口:定义角色如何连接对象的可能语义
    • Relationship 关系:域关系
    • Role 角色:连接关系与对象之间

    属性和非属性对象

    元模型对象分为属性和非属性对象,非属性对象都可以定义多个属性对象。Graph、Object、Port、Role和Relationship都是非属性对象。它们的属性定义如下:

    对象 属性 附加信息 说明
    Property Name   名称
    Ancestor   父属性
    Project   域模型基于存储库管理,这里指定所属项目 
    Datatype String 字符串
    Text 文本备注 
    Number 数字 
    Boolean  布尔 
    Createion Timestamp 生成日期 
    Collection:Item type 集合类型,指定集合项类型,可以为String、Graph...、Object...、Port...、Role...、Relationship…
    Graph… 弹出选择【图形】对象对话框,选择项目中的一个图形对象
    Object…  
    Port…  
    Role…  
    Relationship…  
    Widget Input Field 输入框
    Editable List:Values 列表编辑
    Fixed List:Values 枚举值
    Default Value   默认值 
    Value Regex   正则检查串 
    Description   描述 
    Object
    Relation
    Role
    Port
    Graph
    的基本信息
    Name   名称 
    Ancestor   父对象 
    Project   所属项目 
    Properties[] Local name 属性作为公共对象存储,在对象本身中引用后可以设定属性在本对象中显示的名称
    Unique? 是否唯一
    Description   描述 

    图形对象

    在MetaEdit+中式通过如下窗口进行定义的:

     

    它们之间是通过一个叫做绑定Bindings的虚拟对象关联起来的。在绑定中可以包含多个关系,每个关系可以包含两个或更多的角色,每个角色可以包含多个对象,关系如下图所示:


    注:图中还可以定于约束,这个在现阶段不考虑。

    域关系

    图形对象由Relationship、Roles、Objects三种对象组成,关系链接多个对象,关系与关系之间不进行连接:

    • 关系是有方向的

    在图中绑定设置中定义关系时,每个关系都是有先后顺序的,定义是第一个Role为关系的源,也就是我们画关系时连接的第一个对象代表的Role,其他顺序依次类推。

    • 重数(Cardinality)

    对于关系绑定中对于Roles,我们可以指定重数(1,0..1,0..N,1..N),如下图所示:

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

    Property Name    
    Ancestor    
    Project    
    Datatype String  
    Text  
    Number  
    Boolean   
    Createion Timestamp  
    Collection:Item type 集合类型,指定集合项类型,可以为String、Graph...、Object...、Port...、Role...、Relationship…
    Graph…  
    Object…  
    Port…  
    Role…  
    Relationship…  
    Widget Input Field 输入框
    Editable List:Values 列表编辑
    Fixed List:Values 枚举值
    Default Value    
    Value Regex    
    Description    
    Object
    Relation
    Role
    Port
    Graph
    的基本信息
    Name    
    Ancestor    
    Project    
    Properties[] Local name 属性作为公共对象存储,在对象本身中引用后可以设定属性在本对象中显示的名称
    Unique?  
    Description    
    Graph      
         
         
         
         
         
  • 相关阅读:
    53. Maximum Subarray
    Search Insert Position
    Single Number II
    260. Single Number III
    136. Single Number
    338. Counting Bits
    axios实现拦截器
    Vuex入门(5)—— 为什么要用Action管理异步操作
    ES6语法(3)—— 用promise()对象优雅的解决异步操作
    Vuex之理解Getters的用法
  • 原文地址:https://www.cnblogs.com/zhoujg/p/1825888.html
Copyright © 2020-2023  润新知