CN113608734B - 一种领域驱动设计模型代码自动生成方法 - Google Patents
一种领域驱动设计模型代码自动生成方法 Download PDFInfo
- Publication number
- CN113608734B CN113608734B CN202110909608.6A CN202110909608A CN113608734B CN 113608734 B CN113608734 B CN 113608734B CN 202110909608 A CN202110909608 A CN 202110909608A CN 113608734 B CN113608734 B CN 113608734B
- Authority
- CN
- China
- Prior art keywords
- model
- domain
- service
- layer
- design
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000013461 design Methods 0.000 title claims abstract description 78
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000000007 visual effect Effects 0.000 claims abstract description 12
- 238000012360 testing method Methods 0.000 claims description 15
- 230000002776 aggregation Effects 0.000 claims description 14
- 238000004220 aggregation Methods 0.000 claims description 14
- 230000006870 function Effects 0.000 claims description 13
- 238000012800 visualization Methods 0.000 claims description 10
- 230000006978 adaptation Effects 0.000 claims description 3
- 230000010354 integration Effects 0.000 claims description 3
- 230000006698 induction Effects 0.000 claims description 2
- 238000002372 labelling Methods 0.000 claims description 2
- 230000008878 coupling Effects 0.000 abstract description 3
- 238000010168 coupling process Methods 0.000 abstract description 3
- 238000005859 coupling reaction Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 10
- 238000005192 partition Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- 241000234282 Allium Species 0.000 description 1
- 235000002732 Allium cepa var. cepa Nutrition 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供的一种领域驱动设计模型代码自动生成方法,所述生成方法包括:将WEB界面建立模型,获得WEB界面模型;根据所述WEB界面模型生成领域驱动设计架构代码;根据所述领域驱动设计架构代码建立知识图谱的可视化领域模型。以DDD作为微服务设计的指导思想,建立领域模型,划分领域边界,再根据这些领域边界从业务视角来划分微服务边界。而按照DDD方法设计出的微服务的业务和应用边界都非常合理,可以很好地实现微服务内部和外部的“高内聚、低耦合”。
Description
技术领域
本发明涉及领域驱动设计领域,尤其涉及一种领域驱动设计模型代码自动生成方法。
背景技术
微服务、领域驱动设计等已经非常流行,并成为目前软件开发行业的主流趋势。随着微服务架构和中台概念的兴起,领域驱动设计(Domain-Driven-Design,以下简称DDD)的设计思想也重新回归到互联网的热潮中。针对DDD如何落地问题,提出三者协同设计的方案:
通过建立DDD与中台的统一语言,从业务视角看中台,使用“分治”的思想处理高度复杂的领域问题,通过对问题域的拆分建立整个领域知识体系,使用微服务,按照单一职责的原则,将中台抽象为领域中的一个子域来完成从业务端领域模型到应用端微服务的实现落地。
用DDD完成中台与微服务的设计,一是使用战略设计来完成领域的分解和建模,将中台分解为核心域、通用域、支撑域,完成领域模型与领域上下文的设计。二是使用战术设计完成微服务的详细设计,通过聚合、实体、值对象依赖以及服务分层来完成领域的详细技术实现。
DDD向微服务架构的演进,一个限界上下文包含若干聚合。一个聚合包含若干个领域对象,共同按照聚合内的业务规则完成业务逻辑。聚合是领域模型中可独立完成业务逻辑的最小业务单元,也是可独门为微服务部署的最小代码单元。随着业务变化可以将聚合独立为微服务,或者在不同的领域模型和微服务之间完成聚合重组。该方案通过建立统一语言,分战略阶段、战术阶段、技术实现三段式演进,以此来形成对DDD落地的思想指导。通过把系统拆分为不同单一职责、松耦合、限界分明的领域来应对错综复杂的软件应用。
对于现有技术方案对DDD的落地,存在的问题:WEB界面流程化的领域建模设计,自动化DDD架构代码生成,知识图谱可视化领域模型,领域功能在线部署与测试。
发明内容
鉴于上述问题,提出了本发明以便提供克服上述问题或者至少部分地解决上述问题的一种领域驱动设计模型代码自动生成方法。
根据本发明的一个方面,提供了一种领域驱动设计模型代码自动生成方法,所述生成方法包括:
将WEB界面建立模型,获得WEB界面模型;
根据所述WEB界面模型生成领域驱动设计架构代码;
根据所述领域驱动设计架构代码建立知识图谱的可视化领域模型。
可选的,所述将WEB界面建立模型,获得WEB界面模型具体包括:
制定规范,通过架构字典和架构规范来约束领域建模,规范化流程和元数据;
战略阶段,根据事件风暴,分析业务场景和用户用例,找出领域对象,构建聚合,划分限界上下文;
战术阶段,对战略阶段的用户用例进行建模设计,完成领域模型的详细设计;
通过知识图谱、自动化代码生成、在线部署与测试、迭代集成完成技术输出,形成架构图谱和全行级的IT资产与领域模型视图。
可选的,所述根据所述WEB界面模型生成领域驱动设计架构代码具体包括:自动生成的代码模型包括用户接口层、应用层、领域层和基础设施层目录;
所述用户接口层存放用户接口层代码,前端应用通过所述用户接口层向应用服务获取展现所需要的数据;用于处理用户发送的Restful请求和解析用户输入的配置文件,并将信息发送给所述应用层;
所述应用层目录用于存放应用层代码,所述应用层代码基于微服务内的领域服务和微服务外的应用服务完成服务编排和组合,用于为用户接口层提供各种应用数据展现支持,主要的代码形态是应用服务和领域事件;
所述领域层用于存放领域层代码,用于实现核心领域逻辑,代码形态是实体类方法和领域服务;
所述基础设施层用于存放基础层代码,用于为其他目录提供技术能力、三方软件包、配置和基础资源服务;
采用分层架构,灵活适配。
可选的,所述根据所述领域驱动设计架构代码建立知识图谱的可视化领域模型具体包括:
建立可视化领域模型;
根据知识图谱将设计的领域模型可视化,获得面向整体业务架构的能力地图,领域模型可视化对服务组件进行服务中心归纳,模型的治理进行标签化编排,获得图谱资源架构。
可选的,所述生成方法还包括:在线部署和测试领域功能。
本发明提供的一种领域驱动设计模型代码自动生成方法,所述生成方法包括:将WEB界面建立模型,获得WEB界面模型;根据所述WEB界面模型生成领域驱动设计架构代码;根据所述领域驱动设计架构代码建立知识图谱的可视化领域模型。以DDD作为微服务设计的指导思想,建立领域模型,划分领域边界,再根据这些领域边界从业务视角来划分微服务边界。而按照DDD方法设计出的微服务的业务和应用边界都非常合理,可以很好地实现微服务内部和外部的“高内聚、低耦合”。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的WEB界面流程化的领域建模设计图;
图2为本发明实施例提供的划分限界上下文的示意图;
图3为本发明实施例提供的战术阶段的模型设计示意图;
图4为本发明实施例提供的架构图谱和全行级的IT资产与领域模型视图;
图5为本发明实施例提供的架构代码结构设计示意图;
图6为本发明实施例提供的分层架构示意图;
图7为本发明实施例提供的领域模型图;
图8为本发明实施例提供的交易链路图;
图9为本发明实施例提供的领域功能在线部署与测试示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明的说明书实施例和权利要求书及附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。
下面结合附图和实施例,对本发明的技术方案做进一步的详细描述。
一种领域驱动设计模型代码自动生成方法,所述生成方法包括:
将WEB界面建立模型,获得WEB界面模型;
根据所述WEB界面模型生成领域驱动设计架构代码;
根据所述领域驱动设计架构代码建立知识图谱的可视化领域模型。
如图1所示,将WEB界面建立模型,获得WEB界面模型具体包括:
制定规范,通过架构字典和架构规范来约束领域建模,规范化流程和元数据;
如图2所示的划分限界上下文的示意图,战略阶段,根据事件风暴,分析业务场景和用户用例,找出领域对象,构建聚合,划分限界上下文;
如图3所示,战术阶段,对战略阶段的用户用例进行建模设计,完成领域模型的详细设计;
如图4所示,通过知识图谱、自动化代码生成、在线部署与测试、迭代集成完成技术输出,形成架构图谱和全行级的IT资产与领域模型视图。
如图5所示,根据所述WEB界面模型生成领域驱动设计架构代码具体包括:自动生成的代码模型包括用户接口层、应用层、领域层和基础设施层目录;
所述用户接口层存放用户接口层代码,前端应用通过所述用户接口层向应用服务获取展现所需要的数据;用于处理用户发送的Restful请求和解析用户输入的配置文件,并将信息发送给所述应用层;
所述应用层目录用于存放应用层代码,所述应用层代码基于微服务内的领域服务和微服务外的应用服务完成服务编排和组合,用于为用户接口层提供各种应用数据展现支持,主要的代码形态是应用服务和领域事件;
所述领域层用于存放领域层代码,用于实现核心领域逻辑,代码形态是实体类方法和领域服务;
所述基础设施层用于存放基础层代码,用于为其他目录提供技术能力、三方软件包、配置和基础资源服务;
如图6所示,采用分层架构,灵活适配。
所述根据所述领域驱动设计架构代码建立知识图谱的可视化领域模型具体包括:
如图7所示,建立可视化领域模型;
如图8所示,根据知识图谱将设计的领域模型可视化,获得面向整体业务架构的能力地图,领域模型可视化对服务组件进行服务中心归纳,模型的治理进行标签化编排,获得图谱资源架构。
所述生成方法还包括:在线部署和测试领域功能,具体如图9所示。
WEB可视化的领域建模:实践领域驱动设计分为战略设计和战术设计两大部分。在战略设计之后,本专利通过WEB可视化的领域建模工具提供了领域驱动设计战术级别的规范化指导。在领域驱动设计战术设计阶段包括实体、聚合、应用、仓储层和接口等重要元素。本专利提供了WEB可视化的实体设计界面,用户可以在界面上设计实体的属性、行为、实体的数据表、是否根实体、实体聚合模式等信息。
本专利提供了WEB可视化应用设计界面,该界面通过向导的方式设置应用基础信息、应用聚合的实体和应用聚合的远程接口。本专利提供了WEB可视化的接口设计界面,可以对接口的输入输出参数进行配置,同时可以对接口调用的功能进行编排。通过规范化的WEB可视化的领域建模工具,将领域驱动理论形象化,用户可以根据页面向导一步步建立规范化的领域模型。
规范化的元模型设计:本专利设计了规范化的领域驱动元模型,这是本专利中比较重要的设计,因为原模型凝聚了领域驱动设计中战术设计的所有信息。一方面,我们需要先有了规范化的原模型设计,才能指导我们建设规范化的WEB可视化界面,然后通过页面产生我们需要的元模型数据。另一方面,拥有了元模型之后,通过解析这份元模型数据,我们可以生成符合领域驱动设计规范的架构代码。
自动化DDD架构代码生成:自动化DDD架构代码生成是本专利设计的主要目的。基于规范化的元模型数据,我们生成多种语言的代码,例如Java、Python、C#等等。同时,实现领域驱动设计也有个多种架构模式,有三层模型,四层模型,洋葱模型,六边形模型,CQRS模型扥等等。目前,本专利通过原模型生成的是基于Java的四层模型架构代码。通过生成合乎规范的代码,既能省去开发人员大部分的工作量,又将代码框定在团队设计的架构规范中,避免代码走向退化。
知识图谱可视化领域模型,本专利通过知识图谱的方式查看领域驱动设计模型。知识图谱的数据来源是元模型的拷贝,知识图谱可以提高用户查看模型的便捷性,同时知识图谱良好的搜索和导航能力,让用户更加能直观感受和把握整体的模型设计概况。
领域功能在线部署与测试,在线部署与测试功能是本专利的一个比较重要的功能。通过在线部署与测试验证本专利代码的健壮性,进而持续改进系统,推动本专利更好的实践。
有益效果:
WEB界面流程化的领域建模设计的优点:对于需求分析与设计的方式选择来说,本专利选择的是领域驱动设计的需求分析与设计方式,区别于传统的基于数据驱动的需求分析与设计方式,领域驱动设计在当下流行的分布式微服务架构建设中更能发挥重要作用。以DDD作为微服务设计的指导思想,可以建立领域模型,划分领域边界,再根据这些领域边界从业务视角来划分微服务边界。而按照DDD方法设计出的微服务的业务和应用边界都非常合理,可以很好地实现微服务内部和外部的“高内聚、低耦合”。
DDD架构代码生成的优点:在传统的软件开发过程中,设计文档与代码实现往往是分开的,并且是不同步的。本专利的代码生成功能不仅能够减少开发人员的工作量,而且能够保证代码与设计模型的一致。因为DDD的战术设计阶段的各个元素与生成代码的各个元素是一一对应的,所以在利用建模工具建模的同时,也在进行了代码的设计,从而使得代码设计也是“可视化”的。
领域功能在线部署与测试优点:本专利的在线部署与测试功能减少了开发人员调试代码的时间,相比于常见的生成代码后再导入到开发工具中测试的方式,本专利的在线部署与测试功能大大缩短了模型设计到代码测试的时间周期。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种领域驱动设计模型代码自动生成方法,其特征在于,所述生成方法包括:
将WEB界面建立模型,获得WEB界面模型;
根据所述WEB界面模型生成领域驱动设计架构代码;
自动生成的代码模型包括用户接口层、应用层、领域层和基础设施层目录;
所述用户接口层存放用户接口层代码,前端应用通过所述用户接口层向应用服务获取展现所需要的数据;用于处理用户发送的Restful请求和解析用户输入的配置文件,并将信息发送给所述应用层;
所述应用层目录用于存放应用层代码,所述应用层代码基于微服务内的领域服务和微服务外的应用服务完成服务编排和组合,用于为用户接口层提供各种应用数据展现支持,代码形态是应用服务和领域事件;
所述领域层用于存放领域层代码,用于实现核心领域逻辑,代码形态是实体类方法和领域服务;
所述基础设施层用于存放基础层代码,用于为其他目录提供技术能力、三方软件包、配置和基础资源服务;
采用分层架构,灵活适配;
制定规范,通过架构字典和架构规范来约束领域建模,规范化流程和元数据;
战略阶段,根据事件风暴,分析业务场景和用户用例,找出领域对象,构建聚合,划分限界上下文;
战术阶段,对战略阶段的用户用例进行建模设计,完成领域模型的详细设计;
通过知识图谱、自动化代码生成、在线部署与测试、迭代集成完成技术输出,形成架构图谱和全行级的IT资产与领域模型视图;
根据所述领域驱动设计架构代码建立知识图谱的可视化领域模型;
建立可视化领域模型;
根据知识图谱将设计的领域模型可视化,获得面向整体业务架构的能力地图,领域模型可视化对服务组件进行服务中心归纳,模型的治理进行标签化编排,获得图谱资源架构。
2.根据权利要求1所述的一种领域驱动设计模型代码自动生成方法,其特征在于,所述生成方法还包括:在线部署和测试领域功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110909608.6A CN113608734B (zh) | 2021-08-09 | 2021-08-09 | 一种领域驱动设计模型代码自动生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110909608.6A CN113608734B (zh) | 2021-08-09 | 2021-08-09 | 一种领域驱动设计模型代码自动生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113608734A CN113608734A (zh) | 2021-11-05 |
CN113608734B true CN113608734B (zh) | 2024-03-29 |
Family
ID=78340028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110909608.6A Active CN113608734B (zh) | 2021-08-09 | 2021-08-09 | 一种领域驱动设计模型代码自动生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113608734B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593197A (zh) * | 2013-11-26 | 2014-02-19 | 国家电网公司 | 一种代码生成方法和装置 |
CN104049957A (zh) * | 2013-03-13 | 2014-09-17 | 成都泰聚泰科技有限公司 | 基于星形结构的通用业务模型的快速建模框架 |
CN105956830A (zh) * | 2016-05-11 | 2016-09-21 | 中煤电气有限公司 | 一种基于j2ee框架的企业级可视化应用开发平台 |
CN108932118A (zh) * | 2018-04-20 | 2018-12-04 | 北京航空航天大学 | 一种基于卡牌的需求获取模型建立方法 |
CN111638877A (zh) * | 2020-06-01 | 2020-09-08 | 山东汇贸电子口岸有限公司 | 一种Web项目可视化快速开发方法 |
CN112668968A (zh) * | 2020-12-24 | 2021-04-16 | 大唐互联科技(武汉)有限公司 | 一种基于领域驱动设计的仓储管理建模方法及系统 |
CN112988130A (zh) * | 2021-02-24 | 2021-06-18 | 恒安嘉新(北京)科技股份公司 | 一种基于大数据的可视化建模方法、装置、设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11113035B2 (en) * | 2019-02-26 | 2021-09-07 | Jpmorgan Chase Bank, N.A. | Method and system for implementing application lineage metadata and registration |
-
2021
- 2021-08-09 CN CN202110909608.6A patent/CN113608734B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104049957A (zh) * | 2013-03-13 | 2014-09-17 | 成都泰聚泰科技有限公司 | 基于星形结构的通用业务模型的快速建模框架 |
CN103593197A (zh) * | 2013-11-26 | 2014-02-19 | 国家电网公司 | 一种代码生成方法和装置 |
CN105956830A (zh) * | 2016-05-11 | 2016-09-21 | 中煤电气有限公司 | 一种基于j2ee框架的企业级可视化应用开发平台 |
CN108932118A (zh) * | 2018-04-20 | 2018-12-04 | 北京航空航天大学 | 一种基于卡牌的需求获取模型建立方法 |
CN111638877A (zh) * | 2020-06-01 | 2020-09-08 | 山东汇贸电子口岸有限公司 | 一种Web项目可视化快速开发方法 |
CN112668968A (zh) * | 2020-12-24 | 2021-04-16 | 大唐互联科技(武汉)有限公司 | 一种基于领域驱动设计的仓储管理建模方法及系统 |
CN112988130A (zh) * | 2021-02-24 | 2021-06-18 | 恒安嘉新(北京)科技股份公司 | 一种基于大数据的可视化建模方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113608734A (zh) | 2021-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103294475B (zh) | 基于图形化业务场景和领域模板的业务自动生成系统和方法 | |
Escalona Cuaresma et al. | Requirements engineering for web applications: A comparative study | |
CN103443787B (zh) | 用于标识文本关系的系统 | |
US7721252B2 (en) | Apparatus and method for product-line architecture description and verification | |
Schwinger et al. | A survey on web modeling approaches for ubiquitous web applications | |
Frischmuth et al. | Ontowiki–an authoring, publication and visualization interface for the data web | |
Kahani et al. | The problems with eclipse modeling tools: a topic analysis of eclipse forums | |
Kapos et al. | An integrated framework for automated simulation of SysML models using DEVS | |
Dombeu et al. | Combining ontology development methodologies and semantic web platforms for e-government domain ontology development | |
Jurney | Agile data science: building data analytics applications with Hadoop | |
Zolotas et al. | From requirements to source code: a Model-Driven Engineering approach for RESTful web services | |
Pol’la et al. | Analysis of variability models: a systematic literature review | |
Kuloor et al. | Aspect-oriented requirements engineering for software product lines | |
Ponce et al. | Context-aware end-user development review | |
Campos et al. | A survey of formalization approaches to service composition | |
Quarteroni et al. | A bottom-up, knowledge-aware approach to integrating and querying web data services | |
Bouillet et al. | A tag-based approach for the design and composition of information processing applications | |
Sajji et al. | A methodology for transforming BPMN to IFML into MDA | |
CN113608734B (zh) | 一种领域驱动设计模型代码自动生成方法 | |
Koch | Hypermedia systems development based on the Unified Process | |
Sindhgatta et al. | Modeling conversational agents for service systems | |
Funk | Model-driven design of self-observing products | |
Corrales | Behavioral matchmaking for service retrieval | |
Chon et al. | CS5604: Information and Storage Retrieval Fall 2017-FE (Front-End Team) | |
Guerrouat | A Text Mining Approach for Mapping OCL Navigation Expressions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |