1 Star 0 Fork 57

fengud / ubml-standard

forked from UBML / ubml-standard 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
ubml_v2.0_faq.md 3.40 KB
一键复制 编辑 原始数据 按行查看 历史
bugu 提交于 2021-01-20 16:41 . initial commit

UBML Standard V2.0 FAQ

UBML 2.0标准的概念?

UBML标准架构

在UBM-Standard中,什么是对象、模型、元模型、元元模型?

对象:程序运行时的真实数据,是模型层的实例,通过运行时赋值,实现”实例化“过程
模型:对象的Schema,是元模型层中概念的实例
元模型:模型的Schema,是元元模型层中概念的实例
元元模型:元模型的Schema,是UBML中最基本的元素,是UBML标准的架构基础

以BE元模型为例,对照MOF四层模型,对上述四个概念进行说明
① BusinessEntity的Schema
② BusinessEntity
③ SalesOrder.be && SalesOrder.java/SalesOrder.cs
④ SalesOrder.getFirstRow()

描述所有种类元模型的(如BusinessEntity)的公共语法定义是元元模型(对应代码模块为UBML-Standard-Common(Base + Core)): 元元模型将元模型的结构和能力打散,进行了细粒度解构和描述,形成了基本的语义化元素。以BE 这一“元模型”中“字段”这一结构为例,“元元模型”提供了描述“字段”这一结构的能力,如限定了可以使用哪些Element、Attribute去描述一个“字段”(Element和Attribute取自XSD中的 “节点”与“属性”的概念)

BusinessEntity是元模型(对应代码模块为UBML-Standard-Metamodel): 元模型使用元元模型提供“描述字段结构的能力”去描述了“字段”,即定义了什么是字段,比如“BE字段”派生自Property(Property是Common-Core 中一个基本的语义化元素节点,是一个Element),BE元模型中则实作了一个Property,BE还可以在Property基础上,增加一些自己BE 领域的扩展信息,比如“字段是否启用默认值、字段是否被引用、字段是否启用国际化”等,这些扩展信息,也是通过元元模型中的“Attribute”、“PrimitiveType”等基本语义元素描述的。

SalesOrder.be && SalesOrder.java/SalesOrder.cs是模型: 模型是元模型的实例,SalesOrder.be中的“字段列表”就是使用元模型BE提供的结构化的“字段”模板,在一个具体的“销售订单”业务场景中,实例化出了具体的字段列表,比如SalesOrder.be中包含“Id、Code、Description”这三个实际的字段。这个过程,就是对BE元模型中“字段”(实际是“字段列表”)这个结构进行实例化和赋值的过程。

注:模型、模型生成的代码之间关系: SalesOrder.be是销售订单的DSL描述,SalesOrder.java/cs是销售订单的Java/C#等高级编程语言描述,从DSL转化为Java/C#时,只是“销售订单”的描述形式上发生了变化,并没有发生SalesOrder.be的实例化过程(实际赋值),因此模型生成代码的过程,并没有从“模型”转化为真实的“对象”。

SalesOrder.getFirstRow()是对象:基于前述内容,“模型”定义了SalesOrder.be中的实体可以有多少个具体的字段,“对象”则可以这样理解:模型定义了SalesOrder 实体的类结构,对象是根据模型提供的类结构,对SalesOrder.Java/cs这个特定编程语言的实体类,进行实际的“类的实例化”的操作,即根据类“SalesOrder”,“New”出了SalesOrder 内存实例,SalesOrder.be中的Id、Code、Description等字段通过这个过程具有了实际的值。

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/fengud/ubml-standard.git
git@gitee.com:fengud/ubml-standard.git
fengud
ubml-standard
ubml-standard
develop

搜索帮助

344bd9b3 5694891 D2dac590 5694891