李忠民 何鑫


摘? 要:模型驅動架構是一個抽象的理論框架,要使其真正落地實踐,必須結合項目實際構建一個可行的模型序列,并給出一套模型轉換規則。在某大型央企的業務中臺項目對該模型序列進行了研究,并總結出一套模型轉換規則,即業務過程模型(業務流程模型、業務用例模型)、業務對象模型、領域模型、組件模型、數據模型(概念模型、邏輯模型、物理模型)的組成的模型序列。
關鍵詞:模型驅動架構;業務過程建模;用例模型;領域模型;組件模型;模型轉換
中圖分類號: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)設計。