李忠民 何鑫
摘 要:模型驱动架构是一个抽象的理论框架,要使其真正落地实践,必须结合项目实际构建一个可行的模型序列,并给出一套模型转换规则。在某大型央企的业务中台项目对该模型序列进行了研究,并总结出一套模型转换规则,即业务过程模型(业务流程模型、业务用例模型)、业务对象模型、领域模型、组件模型、数据模型(概念模型、逻辑模型、物理模型)的组成的模型序列。
关键词:模型驱动架构;业务过程建模;用例模型;领域模型;组件模型;模型转换
中图分类号:TP311.52 文献标识码:A 文章编号:2096-4706(2020)18-0104-04
Abstract:Model driven architecture is an abstract theoretical framework. To make it truly practical,it is necessary to construct a feasible model sequence based on the actual project and give a set of model conversion rules. This paper studies the model sequence in the financial middle office project of a large central enterprise,and summarizes a set of model transformation rules,that is,the business process model(business process model,business use case model),business object model,domain model,component model and data model(conceptual model,logical model,physical model).
Keywords:model driven architecture;business process modeling;use case model;domain model;component model;model transformation
0 引 言
模型驱动架构(MDA)方法论对系统分析和设计领域进行了概括和抽象,该方法论实现了业务需求的结构化描述;它可以确保设计反映业务,确保设计意图贯彻到实现中去,做到分析设计过程中业务信息和设计信息全继承、可追溯、不失真,从而让客户更有可能获得他们真正需要的系统。作为该大型央企业务中台的承建单位,公司认识到模型驱动架构的优势,决心结合业务中台的建设任务展开MDA方法论的深入研究,并利用MDA指导业务中台的建设实施。在此背景下,作者结合业务中台设计开发工作实践,提出一个可行的模型序列,并给出了模型转换规则,本文承接《模型驱动架构方法论在业务中台中的落地实践研究(一)》继续就模型序列进行讨论。
1 上篇回顾
从业务空间到系统实现要经过四个视角的转换,我们称之为域,即业务域、应用域、数据域、技术域。每个域通过对一个或多个模型的建模,从不同视角描述同一个事物——公司业务条线和业务有关专业条线的业务。通过依次构建序列上的每个模型,描述模型中容纳的概念,在模型序列的引导下,由业务逐渐逼近系统实现。
上篇文章中讨论了业务域和应用域的几个模型的建模实践经验,下面接上文继续讨论数据域和技术域的几个模型的建模方法。
在数据域,我们从数据角度描述业务,用数据的语言描述“做什么、怎么做”,数据域我们定义三个模型:概念模型、逻辑模型、物理模型。
2 概念模型
个人理解概念模型、逻辑模型、物理模型是从纯粹数据建模的角度建立的一个方法论,是和领域驱动并行发展的两个方法论。领域模型包含数据和行为,而概念模型只包含数据,二者都是业务分析的结果,定位和作用重叠。当我们采用MDA方法,且模型序列中存在领域模型时,概念模型已经没有存在的必要。为了确保数据模型建模思想的完整性,避免对数据模型建模工作做出颠覆性变动,项目中约定:从领域模型中抽取的聚合根及聚合根之间的关系,删除聚合根的行为(方法),就构成了概念模型。
故概念模型可以利用工具从领域模型自动转换过来,伪代码如图1所示。
3 逻辑模型
逻辑模型是一种平台无关模型,只与业务相关,反映业务事实显示,符合关系数据模型三范式。项目中约定逻辑模型采用关系数据模型,并规定业务中台的逻辑模型只有一个。
3.1 领域模型到逻辑模型的转换
3.1.1 实体的转换
逻辑模型继承于领域模型,本项目约定领域模型中的领域对象去掉方法即为逻辑模型的实体原型,部分转换过程可以利用工具自动完成。
由于领域模型存在抽象实体,逻辑模型则都是具体化的实体,故由领域模型到逻辑模型的实体的转换并不是一对一的自动映射,需要根据具体情况进行分析,这是MDA的模型转化过程中人工干预点之一,转换规则为:
(1)领域模型中与其他类没有泛化关系的实体转换为一个表,实体的属性就是表的字段,实体的标识码就是表的关键字。
(2)存在泛化关系的实体有三种转换方式:一是父类实体合并到子類中,如果存在一个继承链则递归合并,合并后的类作为逻辑模型实体,此时父类的关键字转化为子类的唯一索引;父类的属性集合与子类的属性集合合并,如果合并后存在重复定义的情况则去重处理,如果存在重载情况(父子类属性同名但语义不同),则父类属性改名为父类名+原属性名。二是父类、子类分别转化为逻辑模型实体,此时父类的主关键字加入子类作为唯一索引,同时作为连接父类和子类两个实体的外键。三是父类转化为实体,子类退化为一个枚举值属性(如种类)作为父类的一个属性。制定了领域模型向逻辑模型的实体转换规则以后,可以利用工具完成实体的自动迁移。
3.1.2 属性的转换
领域对象的属性映射为逻辑模型对应实体的属性,属性语义和值域(Domain)完全对拷迁移,不进行变化,此过程可以利用工具完成。
3.1.3 关系的转换
领域模型中的一对一、一对多、多对一关联关系转化为逻辑模型中的实体间关系,这个过程可以利用工具自动完成;多对多关联关系则转化为实体,需要建立新的实体,与该关系两端的实体分别建立一对多或一对一关联关系。
领域模型中的泛化经过父子类的合并处理,在逻辑模型中已经不存在,不必迁移。
3.2 逻辑模型的重构
由领域模型转换而来的逻辑模型还需要进行重构才能成为规范的逻辑模型,需要按照关系数据模型三范式的原则,审视检查迁移步骤获得的逻辑模型,进行逻辑模型重构,主要包括识别和建立主键、识别和建立外键、识别和建立唯一索引、拆分复合属性、领域模型中存在的多对多关系转化为实体等工作。
4 物理模型
物理模型是逻辑模型在特定平台上的实现,是平台相关模型。业务中台的物理模型有多个:基于阿里云的OLTP数据库物理模型、基于阿里云的分析域数據集市物理模型,基于华为云的OLTP数据库物理模型、基于华为云的分析域数据集市物理模型,他们都继承于同一个逻辑模型。物理模型全面继承了逻辑模型的实体、关系、主外键等元素,同时根据具体平台的实现,调整了属性的数据类型、长度、精度,并出于性能、存储等考虑进行了一些冗余设计,增加普通索引、分库分表设计等平台相关设计。
(1)逻辑模型到物理模型的迁移,迁移过程包括表的转换:逻辑模型实体转化为物理模型的表;字段的转换:逻辑模型的属性转换为物理模型的字段;表间关系的转换:逻辑模型的实体间关系对转为物理模型相应表之间的关系;主键的转换:逻辑模型的主键转换为物理模型相应表的唯一索引等四方面的工作,这些过程可以在工具辅助下自动完成。
(2)物理模型的重构:从逻辑模型对转过来的物理模型并不是最终可用的物理模型,其只包含了业务知识,还没有反映技术实现,故还需要根据具体的技术实现平台相关的一些转换,包括但不限于以下内容:1)数据类型的转换:逻辑模型的数据类型还是抽象数据类型,需要转换为具体技术实现支持的数据类型,如在Oracle中的字符型转换为varchar2或char,在MySQL中则转换为varchar或者char;2)冗余设计:出于性能考虑,需要做一些违反范式标准但必要的冗余设计;3)存储空间规划:为表分配初始存储空间大小、存储空间位置等等;4)分库、分区、分表:出于性能、稳定性等考虑,规划分库、分区、分表方案;5)普通索引的建立;6)视图的建立;7)历史表、中间表、临时表的建立。
5 模型驱动架构的概念模型
分析MDA的过程,可以看到模型的建模过程就是如下过程的不断重复:
(1)迁移:继承前一个模型的数据。
(2)建模:定义新的概念,并识别这些概念的关系。
(3)重构:合并、去重、加工、调整。
(4)输出:输出加工后的数据供下一个模型使用。
模型能够揭示事物的本质,描述一件事物最简洁的方法是给出其模型,作为一个总结,我们拾取上面介绍的各种概念,建立MDA的概念模型,如图2所示。
6 结 论
MDA方法论的核心思想是通过对模型序列中的模型逐个建模,引领我们逐步由业务逼近系统实现,每一个模型都继承前一个模型的全量设计成果,在此基础上再进行重构、提升,然后再作为下一个模型的输入,直至系统实现。MDA方法论不但给出了系统分析设计的全局性的、协调一致的全景视图,而且实践证明该方法论是完全可以落地的,MDA 能够确保每一项设计都有依据,每一个结论都可追溯,能够确保设计成果反映业务,确保设计成果贯彻落实到实现中去,是一种非常有价值的系统分析和设计方法。
参考文献:
[1] 张鹏,李忠民.企业级数据模型全域一致性的一种解决方案 [J].智库时代,2018(35):135-136+139.
[2] FRANKEL D S.应用MDA [M].鲍志云,译.北京:人民邮电出版社,2003.
[3] KLEPPE A,WARMER J,BAST W.解析MDA [M].鲍志云,译.北京:人民邮电出版社,2004.
作者简介:李忠民(1967—),男,汉族,山东聊城人,技术专家,中级职称,本科,研究方向:银行应用系统设计开发、大型互联网平台架构设计、大数据应用系统设计;何鑫(1988—),男,汉族,内蒙古乌兰察布人,助理工程师,本科,研究方向:国网公司统一数据模型(SG-CIM)设计。