基于领域驱动设计的工程脚手架生成方法、装置和设备与流程

未命名 09-08 阅读:75 评论:0


1.本发明涉及计算机技术领域,尤其涉及一种基于领域驱动设计的工程脚手架生成方法、装置和设备。


背景技术:

2.领域驱动设计(domain driven design,简称ddd)是埃里克.埃文斯(eric evans)在2004年发表的《领域驱动设计》(domain-driven design-tackling complexity in the heart of software)著作中提出的一种解决业务复杂性的设计思想。
3.相关技术中,可以采用ddd模式设计微服务。如图1所示,采用ddd模式设计的微服务采用四层架构分层,包括:接口层、应用层、领域层和基础设施层。其中,接口层负责向外暴露微服务的接口,提供相关的功能服务;应用层负责提供应用服务和进行接口层和领域层的对象转换;领域层是核心层,所有的业务模型和业务逻辑都被隔离在领域层中;基础设施层负责向其他层提供通用的技术和基础服务,包括图1所示的中间适配器、第三方工具、公共技术组件、数据库适配器、事件总线、南向网关等。
4.然而,由于微服务设计是允许迭代更新的,当需要生成新版工程脚手架时,在旧版工程脚手架完成的业务代码就需要对应迁移到新版工程脚手架上,若新版工程脚手架与旧版工程脚手架相比,关于微服务设计变化的内容很多,那么,代码迁移的成本就会很高,代码架构的保鲜就会成为一个降低开发效率、阻碍开发进度的问题,因此,如何实现不同版本工程脚手架之间较为平滑地迁移代码是值得研究的。


技术实现要素:

5.本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
6.为此,本发明的第一个目的在于提出一种基于领域驱动设计的工程脚手架生成方法,以通过在生成的工程脚手架中新增包括接口包、应用包和领域包的逻辑实现包,实现在工程脚手架中的接口包、应用包和领域包中提供相关定义,在逻辑实现包包括的接口包、应用包和领域包内实现业务逻辑,将业务逻辑与系统设计分离,便于不同版本工程脚手架之间较为平滑地迁移代码。
7.本发明的第二个目的在于提出一种基于领域驱动设计的工程脚手架生成装置。
8.本发明的第三个目的在于提出一种电子设备。
9.本发明的第四个目的在于提出一种计算机可读存储介质。
10.本发明的第五个目的在于提出一种计算机程序产品。
11.为达上述目的,本发明第一方面实施例提出了一种基于领域驱动设计的工程脚手架生成方法,包括:
12.获取目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息;
13.根据所述目标微服务系统的接口信息,生成所述目标微服务系统对应的目标工程
脚手架的接口包;其中,所述接口包用于提供所述目标微服务系统的接口定义;
14.根据所述目标微服务系统的应用服务信息,生成所述目标工程脚手架的应用包;其中,所述应用包用于提供所述目标微服务系统的应用服务定义;
15.根据所述目标微服务系统的领域服务信息和领域模型信息,生成所述目标工程脚手架的领域包;其中,所述领域包用于提供所述目标微服务系统的领域服务定义和领域模型定义;
16.根据所述接口包、所述应用包和所述领域包,生成所述目标工程脚手架的逻辑实现包;其中,所述逻辑实现包用于在所述逻辑实现包包括的所述接口包、所述应用包和所述领域包内实现业务逻辑;
17.根据所述目标工程脚手架的系统信息和数据模型信息,生成所述目标工程脚手架的基础设施包;其中,所述基础设施包用于提供所述目标微服务系统的系统定义、数据模型定义和实现业务逻辑。
18.为达上述目的,本发明第二方面实施例提出了一种基于领域驱动设计的工程脚手架生成装置,包括:
19.获取模块,用于获取目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息;
20.第一生成模块,用于根据所述目标微服务系统的接口信息,生成所述目标微服务系统对应的目标工程脚手架的接口包;其中,所述接口包用于提供所述目标微服务系统的接口定义;
21.第二生成模块,用于根据所述目标微服务系统的应用服务信息,生成所述目标工程脚手架的应用包;其中,所述应用包用于提供所述目标微服务系统的应用服务定义;
22.第三生成模块,用于根据所述目标微服务系统的领域服务信息和领域模型信息,生成所述目标工程脚手架的领域包;其中,所述领域包用于提供所述目标微服务系统的领域服务定义和领域模型定义;
23.第四生成模块,用于根据所述接口包、所述应用包和所述领域包,生成所述目标工程脚手架的逻辑实现包;其中,所述逻辑实现包用于在所述逻辑实现包包括的所述接口包、所述应用包和所述领域包内实现业务逻辑;
24.第五生成模块,用于根据所述目标工程脚手架的系统信息和数据模型信息,生成所述目标工程脚手架的基础设施包;其中,所述基础设施包用于提供所述目标微服务系统的系统定义、数据模型定义和实现业务逻辑。
25.为达上述目的,本发明第三方面实施例提出了一种电子设备,该电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述第一方面的基于领域驱动设计的工程脚手架生成方法。
26.为了实现上述目的,本发明第四方面实施例提出了一种存储有计算机指令的计算机可读存储介质,所述计算机指令用于使所述计算机执行前述第一方面的基于领域驱动设计的工程脚手架生成方法。
27.为了实现上述目的,本发明第五方面实施例提出了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现前述第一方面的基于领域驱动设计的工
程脚手架生成方法。
28.本发明实施例所提供的技术方案包含如下的有益效果:
29.通过获取目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息,实现根据目标微服务系统的接口信息,生成目标微服务系统对应的目标工程脚手架的接口包,其中,接口包用于提供目标微服务系统的接口定义,根据目标微服务系统的应用服务信息,生成目标工程脚手架的应用包,其中,应用包用于提供目标微服务系统的应用服务定义,根据目标微服务系统的领域服务信息和领域模型信息,生成目标工程脚手架的领域包,其中,领域包用于提供目标微服务系统的领域服务定义和领域模型定义,根据接口包、应用包和领域包,生成目标工程脚手架的逻辑实现包,其中,逻辑实现包用于在逻辑实现包包括的接口包、应用包和领域包内实现业务逻辑,根据目标工程脚手架的系统信息和数据模型信息,生成目标工程脚手架的基础设施包,其中,基础设施包用于提供目标微服务系统的系统定义、数据模型定义和实现业务逻辑。由此,通过在生成的工程脚手架中新增包括接口包、应用包和领域包的逻辑实现包,实现在工程脚手架中的接口包、应用包和领域包中提供相关定义,在逻辑实现包包括的接口包、应用包和领域包内实现业务逻辑,将业务逻辑与系统设计分离,便于不同版本工程脚手架之间较为平滑地迁移代码。
30.本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
31.本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
32.图1为本发明实施例所提供的相关技术中ddd模式的系统层级结构图;
33.图2为本发明实施例所提供的一种基于领域驱动设计的工程脚手架生成方法的流程示意图;
34.图3为本发明实施例所提供的另一种基于领域驱动设计的工程脚手架生成方法的流程示意图;
35.图4为本发明实施例所提供的一种目标平台的微服务管理页面的示意图;
36.图5为本发明实施例所提供的一种目标平台的编辑系统信息窗口的示意图;
37.图6为本发明实施例所提供的一种目标平台的微服务系统概览的示意图;
38.图7为本发明实施例所提供的一种目标平台的微服务系统的接口设计页面的示意图;
39.图8为本发明实施例所提供的一种目标平台的接口类方法设计页面的示意图;
40.图9为本发明实施例所提供的一种目标平台的编辑接口类方法信息窗口的示意图;
41.图10为本发明实施例所提供的一种目标平台的数据标准页面的示意图;
42.图11为本发明实施例所提供的一种目标平台的微服务系统的应用服务设计页面的示意图;
43.图12为本发明实施例所提供的一种目标平台的应用服务类方法设计页面的示意
图;
44.图13为本发明实施例所提供的一种目标平台的编辑应用服务类方法信息窗口的示意图;
45.图14为本发明实施例所提供的一种目标平台的微服务系统的领域服务设计页面的示意图;
46.图15为本发明实施例所提供的一种目标平台的领域服务类方法设计页面的示意图;
47.图16为本发明实施例所提供的一种目标平台的编辑领域服务类方法信息窗口的示意图;
48.图17为本发明实施例所提供的一种目标平台的微服务系统的领域建模设计页面的示意图;
49.图18为本发明实施例所提供的一种目标平台的编辑实体信息中的领域对象窗口的示意图;
50.图19为本发明实施例所提供的一种目标平台的编辑实体信息中的行为列表窗口的示意图;
51.图20为本发明实施例所提供的另一种目标平台的微服务系统的领域建模设计页面的示意图;
52.图21为本发明实施例所提供的一种目标平台的编辑值对象信息中的值对象属性窗口的示意图;
53.图22为本发明实施例所提供的另一种基于领域驱动设计的工程脚手架生成方法的流程示意图;
54.图23为本发明实施例所提供的一种目标平台的微服务系统的领域模型推导页面的示意图;
55.图24为本发明实施例所提供的一种目标平台的字段设计页面的示意图;
56.图25为本发明实施例所提供的一种目标平台的表索引设计页面的示意图;
57.图26为本发明实施例所提供的一种目标平台的预览ddl页面的示意图;
58.图27为本发明实施例所提供的一种目标平台的插件选择页面的示意图;
59.图28为本发明实施例所提供的一种目标平台的参数配置项页面的示意图;
60.图29为本发明实施例所提供的一种目标平台的初始化系统页面的示意图;
61.图30为本发明实施例提供的一种工程脚手架的框架示意图;
62.图31为本发明实施例提供的一种工程脚手架的基础结构示意图;
63.图32为本发明实施例提供的一种ddd模式的系统层级结构图;
64.图33为本发明实施例所提供的一种基于领域驱动设计的工程脚手架生成装置的结构示意图;
65.图34为本发明实施例提供的一个电子设备的结构示意图。
具体实施方式
66.下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描
述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
67.针对相关技术中不同版本工程脚手架之间代码迁移成本高的问题,本发明实施例提供了一种基于领域驱动设计的工程脚手架生成方法,以通过在生成的工程脚手架中新增包括接口包、应用包和领域包的逻辑实现包,实现在工程脚手架中的接口包、应用包和领域包中提供相关定义,在逻辑实现包包括的接口包、应用包和领域包内实现业务逻辑,将业务逻辑与系统设计分离,这样,当系统设计发生改变时,只需将原工程脚手架中的逻辑实现包迁移至新生成的工程脚手架中,并基于新生成的工程脚手架中的接口包、应用包和领域包提供的相关定义对应修改迁移的逻辑实现包即可,便于不同版本工程脚手架之间较为平滑地迁移代码。
68.下面参考附图描述本发明实施例的基于领域驱动设计的工程脚手架生成方法、装置和设备。
69.图2为本发明实施例所提供的一种基于领域驱动设计的工程脚手架生成方法的流程示意图。
70.需要说明的是,本发明实施例的基于领域驱动设计的工程脚手架生成方法的执行主体为本发明实施例的基于领域驱动设计的工程脚手架生成装置,该基于领域驱动设计的工程脚手架生成装置可被配置于电子设备中,以使该电子设备可以执行基于领域驱动设计的工程脚手架生成功能。
71.如图2所示,该基于领域驱动设计的工程脚手架生成方法包括以下步骤:
72.步骤201,获取目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息。
73.其中,目标微服务系统可以为任一存在系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息的微服务系统。
74.可选地,系统信息可以包括系统参数,比如系统名称、系统编码、系统描述、系统端口、服务框架、groupid前缀、artifactid前缀、包路径、是否设置数据源等,还可以包括技术组件,比如数据库驱动、日志组件等,还可以包括微服务参数,比如接口实现启动检查标志、交易成功响应码、交易成功响应信息、业务日志级别、架构日志级别、日志生成路径等。
75.可选地,接口信息可以包括接口类信息和接口类方法信息,其中,接口类信息可以包括接口类名称、接口类标识、接口类描述等,接口类方法信息可以包括接口类方法名称、接口类方法标识、错误码、接口类方法描述、接口类方法入参类名、接口类方法出参类名、接口类方法输入字段、接口类方法输出字段等。
76.可选地,应用服务信息可以包括应用服务类信息和应用服务类方法信息,其中,应用服务类信息可以包括应用服务类名称、应用服务类标识、应用服务类描述等,应用服务类方法信息可以包括应用服务类方法名称、应用服务类方法标识是否记录流水、应用服务类方法描述、是否使用接口类方法输入输出、应用服务类方法输入字段、应用服务类方法输出字段等。
77.可选地,领域服务信息可以包括领域服务类信息和领域服务类方法信息,其中,领域服务类信息可以包括领域服务类名称、领域服务类标识、领域服务类描述等,领域服务类方法信息可以包括领域服务类方法名称、领域服务类方法标识、领域服务类方法描述、领域服务类方法入参类名、领域服务类方法出参类名、领域服务类方法输入字段、领域服务类方
法输出字段等。
78.可选地,领域模型信息可以包括聚合信息、实体信息和值对象信息,其中,聚合信息可以包括聚合名称、聚合标识、聚合描述等,实体信息可以包括实体名称、实体标识、实体编号、实体描述、领域对象、行为列表等,值对象信息可以包括值对象名称、值对象标识、值对象编号、值对象描述、值对象属性等。
79.可选地,领域对象可以包括实体模型、属性类型、实体唯一标识等,其中,实体模型可以包括贫血模型、充血模型等,属性类型可以包括基本类型、实体、值对象等。需要说明的是,实体唯一标识是实体的一个属性类型,用于唯一标识实体,前述实体标识是指在工程脚手架代码中标识实体的字符串,用于区别不同实体。
80.可选地,行为列表可以包括行为名称、行为编码行为输入字段、行为输出字段、是否新增行为等。
81.可选地,数据模型信息可以包括表名称、表字段、表索引和ddl(data definition language,数据库模式定义语言)语句。
82.在本实施例的一种可能的实现方式中,本发明实施例的基于领域驱动设计的工程脚手架生成装置可以在用户设计目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息时实时获取目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息,或者,也可以从存储有目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息的其他装置获取目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息,或者,也可以通过其它公开、合法、合规的方式获取目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息,本实施例中对此不做限制。
83.步骤202,根据目标微服务系统的接口信息,生成目标微服务系统对应的目标工程脚手架的接口包。
84.其中,接口包用于提供目标微服务系统的接口定义。需要说明的是,本发明生成的目标微服务系统对应的目标工程脚手架中的接口包仅用于提供目标微服务系统的接口定义,不涉及具体的功能逻辑实现。并且,在本实施例中,接口包不允许修改,但可以全量导出然后替换或者覆盖的。
85.可选地,可以根据目标微服务系统的接口信息中的接口类信息和接口类方法信息,生成目标微服务系统对应的目标工程脚手架的接口包。
86.步骤203,根据目标微服务系统的应用服务信息,生成目标工程脚手架的应用包。
87.其中,应用包用于提供目标微服务系统的应用服务定义。需要说明的是,本发明生成的目标微服务系统对应的目标工程脚手架中的应用包仅用于提供目标微服务系统的应用服务定义,不涉及具体的功能逻辑实现。并且,在本实施例中,应用包不允许修改,但可以全量导出然后替换或者覆盖的。
88.可选地,可以根据目标微服务系统的应用服务信息中的应用服务类信息和应用服务类方法信息,生成目标微服务系统对应的目标工程脚手架的应用包。
89.步骤204,根据目标微服务系统的领域服务信息和领域模型信息,生成目标工程脚手架的领域包。
90.其中,领域包用于提供目标微服务系统的领域服务定义和领域模型定义。需要说明的是,本发明生成的目标微服务系统对应的目标工程脚手架中的领域包仅用于提供目标微服务系统的领域服务定义和领域模型定义,不涉及具体的功能逻辑实现。并且,在本实施例中,领域包不允许修改,但可以全量导出然后替换或者覆盖的。
91.可选地,可以根据目标微服务系统的领域服务信息中的领域服务类信息和领域服务类方法信息,以及领域模型信息中的聚合信息、实体信息和值对象信息,生成目标微服务系统对应的目标工程脚手架的领域包。
92.步骤205,根据接口包、应用包和领域包,生成目标工程脚手架的逻辑实现包。
93.其中,逻辑实现包用于在逻辑实现包包括的接口包、应用包和领域包内实现业务逻辑。也就是说,本发明生成的目标微服务系统对应的目标工程脚手架中的逻辑实现包中会包括接口包、应用包和领域包,并且,该逻辑实现包涉及接口包、应用包和领域包的具体的功能逻辑实现。
94.需要说明的是,本发明生成的目标微服务系统对应的目标工程脚手架中的逻辑实现包可单独调整与迁移。从而当系统设计发生改变时,相较于相关技术中,需要将原工程脚手架中接口包、应用包和领域包中的逻辑实现对应迁移到新生成的工程脚手架中的对应包内,本发明只需将原工程脚手架中的逻辑实现包迁移至新生成的工程脚手架中,并基于新生成的工程脚手架中的接口包、应用包和领域包提供的相关定义对应修改迁移的逻辑实现包即可,便于不同版本工程脚手架之间较为平滑地迁移代码。
95.在本实施例的一种可能的实现方式中,可以在生成目标微服务系统对应的目标工程脚手架的接口包的同时,将生成的接口包添加到目标工程脚手架的逻辑实现包中,在生成目标微服务系统对应的目标工程脚手架的应用包的同时,将生成的应用包添加到目标工程脚手架的逻辑实现包中,以及在生成目标微服务系统对应的目标工程脚手架的领域包的同时,将生成的应用包添加到目标工程脚手架的逻辑实现包中,由此,得到包括接口包、应用包和领域包的逻辑实现包。
96.在本实施例的另一种可能的实现方式中,可以在生成目标微服务系统对应的目标工程脚手架的接口包、应用包和领域包之后,基于生成的接口包、应用包和领域包,生成包括接口包、应用包和领域包的逻辑实现包。
97.步骤206,根据目标工程脚手架的系统信息和数据模型信息,生成目标工程脚手架的基础设施包。
98.其中,基础设施包用于提供目标微服务系统的系统定义、数据模型定义和实现业务逻辑。也就是说,本发明生成的目标微服务系统对应的目标工程脚手架中,接口包、应用包和领域包的业务实现都在逻辑实现包和基础设施包中。并且,逻辑实现包和基础设施包可单独调整与迁移。
99.可选地,可以根据目标微服务系统的系统信息中的系统参数、技术组件和微服务参数,以及数据模型信息中的表名称、表字段、表索引和ddl语句,生成目标微服务系统对应的目标工程脚手架的基础设施包。
100.本发明实施例的基于领域驱动设计的工程脚手架生成方法,通过获取目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息,实现根据目标微服务系统的接口信息,生成目标微服务系统对应的目标工程脚手架的接口
包,根据目标微服务系统的应用服务信息,生成目标工程脚手架的应用包,根据目标微服务系统的领域服务信息和领域模型信息,生成目标工程脚手架的领域包,根据接口包、应用包和领域包,生成目标工程脚手架的逻辑实现包,根据目标工程脚手架的系统信息和数据模型信息,生成目标工程脚手架的基础设施包。由此,通过在生成的工程脚手架中新增包括接口包、应用包和领域包的逻辑实现包,实现在工程脚手架中的接口包、应用包和领域包中提供相关定义,在逻辑实现包包括的接口包、应用包和领域包内实现业务逻辑,将业务逻辑与系统设计分离,解决相关技术中代码迁移成本高的问题,便于较为平滑地迁移代码。
101.为了清楚说明本发明中是如何获取系统信息、接口信息和应用服务信息、领域服务信息和领域模型信息的,本实施例提供了另一种基于领域驱动设计的工程脚手架生成方法,图3为本发明实施例所提供的另一种基于领域驱动设计的工程脚手架生成方法的流程示意图。
102.需要说明的是,本发明实施例的基于领域驱动设计的工程脚手架生成方法应用于目标平台,该目标平台用于设计微服务系统的工程架构。
103.如图3所示,该基于领域驱动设计的工程脚手架生成方法可以包括以下步骤:
104.步骤301,响应于用户的新增微服务系统操作,获取用户输入的目标微服务系统的系统名称、系统端口、groupid前缀、artifactid前缀和包路径,和用户选择的目标微服务系统的服务框架,以及基于用户输入的目标微服务系统的系统名称生成的系统编码。
105.在本实施例中,目标平台提供了微服务系统的查询和新增功能,如图4所示,用户可以在目标平台的微服务管理页面中,通过点击新增微服务系统按钮,来新增微服务系统,从而目标平台可以响应于用户的新增微服务系统操作,向用户提供如图5所示的编辑系统信息的窗口,以获取用户输入的目标微服务系统的系统名称、系统端口、groupid前缀、artifactid前缀和包路径,用户选择的目标微服务系统的服务框架,以及基于用户输入的目标微服务系统的系统名称生成的系统编码。
106.如图5所示,系统信息还包括系统描述和是否设置数据源,相对应地,在用户选择设置数据源的情况下,系统信息还包括引用来源,从而还可以响应于用户的新增微服务系统操作,获取用户输入的目标微服务系统的系统描述,以及在用户选择设置数据源的情况下,获取用户输入的目标微服务系统的引用来源。
107.步骤302,响应于用户的创建接口类操作,获取用户输入的任一接口类的接口类名称和接口类标识。
108.在本实施例中,目标平台提供了微服务系统的设计功能,如图6所示,用户点击进入商品服务微服务系统时,可以看到商品服务这一微服务系统的相关设计资产有:2个接口、2个应用服务、0个领域服务、2个实体和2个值对象。从而用户可以点击设计按钮,进入如图7所示的接口设计页面,对商品服务的接口进行设计。
109.如图7所示,用户可以在接口设计页面中,通过点击创建类按钮,来创建接口类,从而目标平台可以响应于用户的创建接口类操作,向用户提供的编辑接口类信息的窗口,以获取用户输入的任一接口类的接口类信息。
110.作为一种可能的实现方式,接口类信息可以包括接口类名称和接口类标识,从而可以响应于用户的创建接口类操作,获取用户输入的任一接口类的接口类名称和接口类标识。
111.作为另一种可能的实现方式,接口类信息可以包括接口类名称、接口类标识和接口类描述,从而可以响应于用户的创建接口类操作,获取用户输入的任一接口类的接口类名称、接口类标识和接口类描述。
112.步骤303,响应于用户针对任一目标接口类的创建接口类方法操作,获取用户输入的任一接口类方法的接口类方法名称和接口类方法标识。
113.在本实施例中,目标平台提供了接口类方法的设计功能,如图8所示,用户点击进入修改订单库存接口类时,可以看到修改订单库存这一接口类的相关设计资产。从而用户可以通过点击创建方法按钮,来创建接口类方法,从而目标平台可以响应于用户的创建接口类方法操作,向用户提供如图9所示的编辑接口类方法信息的窗口,以获取用户输入的接口类方法信息。
114.作为一种可能的实现方式,接口类方法信息包括接口类方法名称和接口类方法标识,从而可以响应于用户针对任一目标接口类的创建接口类方法操作,获取用户输入的任一接口类方法的接口类方法名称和接口类方法标识。
115.作为另一种可能的实现方式,如图9所示,接口类方法信息包括接口类方法名称、接口类方法标识、错误码、接口类方法描述、接口类方法入参类名、接口类方法出参类名、接口类方法输入字段和接口类方法输出字段,从而可以响应于用户针对任一目标接口类的创建接口类方法操作,获取用户输入的任一接口类方法的接口类方法名称、接口类方法标识、错误码、接口类方法描述、接口类方法入参类名和接口类方法出参类名,以及用户选择的任一接口类方法的接口类方法输入字段和接口类方法输出字段。其中,图9所示的可供选择的接口类方法输入字段和接口类方法输出字段是目标平台响应于用户操作,在数据标准页面新增或者导入的字段。目标平台的数据标准页面如图10所示。
116.步骤304,响应于用户的创建应用服务类操作,获取用户输入的任一应用服务类的应用服务类名称和应用服务类标识。
117.在本实施例中,目标平台提供了应用服务设计功能,如图11所示,用户切换到应用服务设计页面后,可以通过点击创建类按钮,来创建应用服务类,从而目标平台可以响应于用户的创建应用服务类操作,向用户提供的编辑应用服务类信息的窗口,以获取用户输入的任一应用服务类的应用服务类信息。
118.作为一种可能的实现方式,应用服务类信息可以包括应用服务类名称和应用服务类标识,从而可以响应于用户的创建应用服务类操作,获取用户输入的任一应用服务类的应用服务类名称和应用服务类标识。
119.作为另一种可能的实现方式,应用服务类信息可以包括应用服务类名称、应用服务类标识和应用服务类描述,从而可以响应于用户的创建应用服务类操作,获取用户输入的任一应用服务类的应用服务类名称、应用服务类标识和应用服务类描述。
120.步骤305,响应于用户针对任一目标应用服务类的创建应用服务类方法操作,获取用户输入的任一应用服务类方法的应用服务类方法名称和应用服务类方法标识。
121.在本实施例中,目标平台提供了应用服务类方法的设计功能,如图12所示,用户点击进入测试application应用服务类时,可以看到测试application这一应用服务类的相关设计资产。从而用户可以通过点击创建方法按钮,来创建应用服务类方法,从而目标平台可以响应于用户的创建应用服务类方法操作,向用户提供如图13所示的编辑应用服务类方法
信息的窗口,以获取用户输入的应用服务类方法信息。
122.作为一种可能的实现方式,应用服务类方法信息包括应用服务类方法名称和应用服务类方法标识,从而可以响应于用户针对任一目标应用服务类的创建应用服务类方法操作,获取用户输入的任一应用服务类方法的应用服务类方法名称和应用服务类方法标识。
123.作为另一种可能的实现方式,如图13所示,应用服务类方法信息包括应用服务类方法名称、应用服务类方法标识、是否记录流水、应用服务类方法描述、是否使用接口类方法输入输出、应用服务类方法输入字段和应用服务类方法输出字段,从而可以响应于用户针对任一目标应用服务类的创建应用服务类方法操作,获取用户输入的任一应用服务类方法的应用服务类方法名称、应用服务类方法标识、应用服务类方法描述,以及用户选择的任一应用服务类方法的是否记录流水、是否使用接口类方法输入输出,并在用户选择不使用接口类方法输入输出的情况下,获取用户选择的任一应用服务类方法的应用服务类方法输入字段和应用服务类方法输出字段。其中,图13所示的可供选择的应用服务类方法输入字段和应用服务类方法输出字段是目标平台响应于用户操作,在数据标准页面新增或者导入的字段。目标平台的数据标准页面如图10所示。
124.步骤306,响应于用户的创建领域服务类操作,获取用户输入的任一领域服务类的领域服务类名称和领域服务类标识。
125.在本实施例中,目标平台提供了应用服务设计功能,如图14所示,用户切换到领域服务设计页面后,可以通过点击创建类按钮,来创建领域服务类,从而目标平台可以响应于用户的创建领域服务类操作,向用户提供的编辑领域服务类信息的窗口,以获取用户输入的任一领域服务类的领域服务类信息。
126.作为一种可能的实现方式,领域服务类信息可以包括领域服务类名称和领域服务类标识,从而可以响应于用户的创建领域服务类操作,获取用户输入的任一领域服务类的领域服务类名称和领域服务类标识。
127.作为另一种可能的实现方式,领域服务类信息可以包括领域服务类名称、领域服务类标识和领域服务类描述,从而可以响应于用户的创建领域服务类操作,获取用户输入的任一领域服务类的领域服务类名称、领域服务类标识和领域服务类描述。
128.步骤307,响应于用户针对任一目标领域服务类的创建领域服务类方法操作,获取用户输入的任一领域服务类方法的领域服务类方法名称和领域服务类方法标识。
129.在本实施例中,目标平台提供了领域服务类方法的设计功能,如图15所示,用户点击进入开户检查领域服务类时,可以看到开户检查这一领域服务类的相关设计资产。从而用户可以通过点击创建方法按钮,来创建领域服务类方法,从而目标平台可以响应于用户的创建领域服务类方法操作,向用户提供如图16所示的编辑领域服务类方法信息的窗口,以获取用户输入的领域服务类方法信息。
130.作为一种可能的实现方式,领域服务类方法信息包括领域服务类方法名称和领域服务类方法标识,从而可以响应于用户针对任一目标领域服务类的创建领域服务类方法操作,获取用户输入的任一领域服务类方法的领域服务类方法名称和领域服务类方法标识。
131.作为另一种可能的实现方式,如图16所示,领域服务类方法信息包括领域服务类方法名称、领域服务类方法标识、领域服务类方法描述、领域服务类方法入参类名、领域服务类方法出参类名、领域服务类方法输入字段和领域服务类方法输出字段,从而可以响应
于用户针对任一目标领域服务类的创建领域服务类方法操作,获取用户输入的任一领域服务类方法的领域服务类方法名称、领域服务类方法标识、领域服务类方法描述、领域服务类方法入参类名和领域服务类方法出参类名,以及用户选择的任一领域服务类方法的领域服务类方法输入字段和领域服务类方法输出字段。
132.步骤308,响应于用户的新建聚合操作,获取用户输入的任一聚合的聚合名称和聚合标识。
133.在本实施例中,目标平台提供了领域建模设计功能,用户可以通过领域建模设计功能,设计领域模型信息。其中,领域模型信息包括聚合信息、实体信息和值对象信息。
134.如图17所示,用户切换到领域建模设计页面后,可以通过点击新建聚合按钮,来创建聚合,从而目标平台可以响应于用户的新建聚合操作,向用户提供的编辑聚合信息的窗口,以获取用户输入的任一聚合的聚合信息。
135.作为一种可能的实现方式,聚合信息可以包括聚合名称和聚合标识,从而可以响应于用户的创建聚合操作,获取用户输入的任一聚合的聚合名称和聚合标识。
136.作为另一种可能的实现方式,聚合信息可以包括聚合名称、聚合标识和聚合描述,从而可以响应于用户的创建聚合操作,获取用户输入的任一聚合的聚合名称、聚合标识和聚合描述。
137.步骤309,响应于用户针对任一第一聚合的新增实体操作,获取用户输入的任一实体的实体名称和实体标识,和用户选择的任一实体的实体模型、属性类型和实体唯一标识,以及用户输入的任一实体的任一行为的行为名称和行为编码。
138.如图17所示,用户还可以在领域建模设计页面中,在任一聚合下,在实体页面通过点击新增实体按钮,来创建实体,从而目标平台可以响应于用户针对任一第一聚合的新增实体操作,向用户提供的编辑实体信息的窗口,以获取用户输入的任一实体的实体信息。
139.作为一种可能的实现方式,实体信息包括实体名称、实体标识、领域对象和行为列表,其中,领域对象如图18所示,包括实体模型、属性类型和实体唯一标识,实体模型包括贫血模型和充血模型,属性类型包括基本类型、实体和值对象,行为列表包括行为名称和行为编码,从而可以响应于用户针对任一第一聚合的新增实体操作,获取用户输入的任一实体的实体名称和实体标识,和用户选择的任一实体的实体模型、属性类型和实体唯一标识,以及用户输入的任一实体的任一行为的行为名称和行为编码。
140.作为另一种可能的实现方式,实体信息包括实体名称、实体标识、实体编号、实体描述、领域对象和行为列表,其中,如图18所示,领域对象包括实体模型、属性类型和实体唯一标识,实体模型包括贫血模型和充血模型,属性类型包括基本类型、实体和值对象,如图19所示,行为列表包括行为名称、行为编码、行为输入字段、行为输出字段和是否新增行为,从而可以响应于响应于用户针对任一第一聚合的新增实体操作,获取用户输入的任一实体的实体名称、实体标识、实体编号和实体描述,和用户选择的任一实体的实体模型、属性类型和实体唯一标识,以及用户输入的任一实体的任一行为的行为名称和行为编码,和用户输入的任一行为的行为输入字段和行为输出字段,并在用户选择新增行为的情况下,获取用户输入的新增行为的行为名称和行为编码,以及用户选择的新增行为的行为输入字段和行为输出字段。
141.步骤310,响应于用户针对任一第二聚合的新增值对象操作,获取用户输入的任一
值对象的值对象名称、值对象标识、值对象编号和值对象描述,以及用户选择的任一值对象的值对象属性。
142.如图20所示,用户还可以在领域建模设计页面中,在任一聚合下,从实体页面切换到值对象页面后,通过点击新增值对象按钮,来创建值对象,从而目标平台可以响应于用户针对任一第二聚合的新增值对象操作,向用户提供的编辑值对象信息的窗口,以获取用户输入的任一值对象的值对象信息。
143.作为一种可能的实现方式,如图21所示,值对象信息包括值对象名称、值对象标识、值对象编号、值对象描述和值对象属性,从而可以响应于用户针对任一第二聚合的新增值对象操作,获取用户输入的任一值对象的值对象名称、值对象标识、值对象编号和值对象描述,以及用户选择的任一值对象的值对象属性。
144.步骤311,获取目标微服务系统的系统信息和数据模型信息。
145.需要说明的是,本实施例中,系统信息除了包括步骤301所提及的系统信息之外,还包括技术组件和微服务参数。
146.作为一种可能的实现方式,可以在用户设计目标微服务系统的技术组件和微服务参数,以及数据模型信息时实时获取目标微服务系统的技术组件和微服务参数,以及数据模型信息,或者,也可以从存储有目标微服务系统的技术组件和微服务参数,以及数据模型信息的其他装置获取目标微服务系统的技术组件和微服务参数,以及数据模型信息,或者,也可以通过其它公开、合法、合规的方式获取目标微服务系统的技术组件和微服务参数,以及数据模型信息,本实施例中对此不做限制。
147.步骤312,根据目标微服务系统的接口信息,生成目标微服务系统对应的目标工程脚手架的接口包。
148.步骤313,根据目标微服务系统的应用服务信息,生成目标工程脚手架的应用包。
149.步骤314,根据目标微服务系统的领域服务信息和领域模型信息,生成目标工程脚手架的领域包。
150.步骤315,根据接口包、应用包和领域包,生成目标工程脚手架的逻辑实现包。
151.步骤316,根据目标工程脚手架的系统信息和数据模型信息,生成目标工程脚手架的基础设施包。
152.需要说明的是,步骤312-316的执行过程可以参见上一实施例中步骤202-206的执行过程,原理相同,在此不再赘述。
153.综上,可实现通过目标平台获取用户输入或选择的系统信息、接口信息、应用服务信息、领域服务信息和领域模型信息。
154.通过上述分析可知,系统信息还包括技术组件和微服务参数,为了清楚说明上一实施例中是如何获取技术组件和微服务参数,以及数据模型信息的,本实施例提供了另一种基于领域驱动设计的工程脚手架生成方法,图22为本发明实施例所提供的另一种基于领域驱动设计的工程脚手架生成方法的流程示意图。
155.类似地,本发明实施例的基于领域驱动设计的工程脚手架生成方法应用于目标平台,该目标平台用于设计微服务系统的工程架构。
156.如图22所示,该基于领域驱动设计的工程脚手架生成方法可以包括以下步骤:
157.步骤2201,获取目标微服务系统的系统信息、接口信息、应用服务信息、领域服务
信息和领域模型信息。
158.需要说明的是,本步骤中的系统信息可以包括目标微服务系统的系统名称、系统编码、系统端口、groupid前缀、artifactid前缀和包路径,以及用户选择的目标微服务系统的服务框架,还可以包括系统描述和是否设置数据源,相对应地,在用户选择设置数据源的情况下,系统信息还包括引用来源。
159.需要说明的是,本步骤中获取的目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息和领域模型信息的执行过程可以参见上一实施例中步骤301-310的执行过程,原理相同,在此不再赘述。
160.步骤2202,响应于用户对目标微服务系统的数据建模操作,获取用户基于目标微服务系统的领域模型选择的表字段。
161.在本实施例中,目标平台提供了微服务系统的数据建模功能,可选地,用户可以通过点击目标平台上的任一微服务系统的概览页面中的数据建模按钮(如图6所示,商品服务这一微服务系统的数据建模按钮在右上角),来进行数据建模,从而目标平台可以响应于用户对目标微服务系统的数据建模操作,向用户提供如图23所示的领域模型推导页面,获取用户基于目标微服务系统的领域模型选择的表字段。
162.步骤2203,响应于用户对表字段的新增推导操作,获取表字段的第一字段信息、用户输入的表名称和表描述。
163.可选地,如图23所示,用户可以在领域模型推导页面上从左边的领域模型中选择表字段后,通过点击新增推导按钮,来进行数据建模,从而目标平台可以响应于用户对表字段的新增推导操作,向用户提供如图24所示的字段设计页面,获取表字段的第一字段信息、用户输入的表名称和表描述。其中,第一字段信息包括字段来源、字段名称、字段类型、字段长度和字段小数点位置。第一字段信息是用户不可编辑的。
164.步骤2204,响应于用户对表字段的编辑操作,获取用户编辑的表字段的第二字段信息。
165.在本实施例中,用户可以在目标平台编辑表字段的第二字段信息,从而目标平台可以响应于用户对表字段的编辑操作,获取用户编辑的表字段的第二字段信息,其中,第二字段信息包括字段是否为空、字段是否为主键和字段注释。
166.步骤2205,响应于用户的添加索引操作,获取索引方法和用户编辑的表索引。
167.如图25所示,用户还可以在索引设计页面添加表索引,从而目标平台可以响应于用户的添加索引操作,获取索引方法和用户编辑的表索引。其中,表索引包括索引名称、索引字段、索引类型和索引注释。索引方法是预设的,用户不可编辑的。
168.步骤2206,获取基于表名称、表字段和表索引生成的ddl语句。
169.在本实施例中,目标平台可以基于表名称、表字段和表索引生成对应的ddl(data definition language,数据库模式定义语言)语句。例如,针对图24和图25所示的表名称、表字段和表索引,目标平台可以生成如图26所示的ddl语句。
170.步骤2207,响应于用户对目标微服务系统的工程脚手架下载操作,获取用户选择的目标微服务系统的数据库驱动、日志组件、接口实现启动检查标志、业务日志级别、架构日志级别,以及用户输入的目标微服务系统的交易成功响应码、交易成功响应信息和日志生成路径。
171.在本实施例中,目标平台提供了微服务系统的工程脚手架下载功能,可选地,用户可以通过点击目标平台上的任一微服务系统的概览页面中的工程脚手架下载按钮(如图6所示,商品服务这一微服务系统的工程脚手架下载按钮在右上角),来进行工程脚手架下载,从而目标平台可以响应于用户对目标微服务系统的工程脚手架下载操作,向用户提供如图27所示的插件选择页面、图28所示的参数配置项页面和图29所示的初始化系统页面,获取用户选择的目标微服务系统的数据库驱动、日志组件、接口实现启动检查标志、业务日志级别、架构日志级别,以及用户输入的目标微服务系统的交易成功响应码、交易成功响应信息和日志生成路径。
172.可选地,如图29所示,用户还可以在初始化系统页面选择是用已有的数据源还是新建数据源。例如,如图29所示,目标平台可以在用户点击选择已有数据源按钮的情况下,获取用户输入的选择已有的数据源的路径,以基于该路径获取用户选择的已有的数据源。
173.步骤2208,根据目标微服务系统的接口信息,生成目标微服务系统对应的目标工程脚手架的接口包。
174.步骤2209,根据目标微服务系统的应用服务信息,生成目标工程脚手架的应用包。
175.步骤2210,根据目标微服务系统的领域服务信息和领域模型信息,生成目标工程脚手架的领域包。
176.步骤2211,根据接口包、应用包和领域包,生成目标工程脚手架的逻辑实现包。
177.步骤2212,根据目标工程脚手架的系统信息和数据模型信息,生成目标工程脚手架的基础设施包。
178.需要说明的是,步骤2208-2212的执行过程可以参见上述实施例中步骤202-206的执行过程,原理相同,在此不再赘述。
179.综上,可实现通过目标平台获取用户输入或选择的技术组件和微服务参数,以及数据模型信息。
180.为了清楚说明本发明中生成的工程脚手架,现举例进行说明。
181.图30为本发明实施例提供的一种工程脚手架的框架示意图。
182.如图30所示,生成的工程脚手架是depositservice工程脚手架,即目标微服务系统为图5所示的系统名称为存款产品微服务,系统编码为depositservice的存款产品微服务。并且,depositservice工程脚手架中包括接口包(depositservice-api)、应用包(depositservice-application)、领域包(depositservice-domain)、逻辑实现包(depositservice-implementation)和基础实施包(depositservice-infrastructure)。其中,逻辑实现包(depositservice-implementation)中会包含接口包(depositservice-api)、应用包(depositservice-application)和领域包(depositservice-domain)。从而在depositservice工程脚手架中的接口包(depositservice-api)、应用包(depositservice-application)和领域包(depositservice-domain)中提供相关定义,在depositservice工程脚手架中的逻辑实现包(depositservice-implementation)内实现业务逻辑,将业务逻辑与系统设计分离,便于不同版本工程脚手架之间较为平滑地迁移代码。
183.具体地,在逻辑实现包(depositservice-implementation)中的接口包(depositservice-api)、应用包(depositservice-application)和领域包(depositservice-domain)内实现业务逻辑。
184.可选地,生成的工程脚手架的基础结构可以如图31所示。需要说明的是,此基础结构可以基于不同项目的实际情况,酌情定制。
185.可选地,生成的工程脚手架中,生成的代码类的命名规则可以如下表所示:
186.表1代码类命名规则
187.代码类命名api接口类***facadeserviceapplicationservice接口类***applicationservicedomainservice接口类***domainservice方法入参类***inputdto方法出参类***outputdto持久层数据模型类***poorm类***mapper错误码枚举类errorcodeenum
188.需要说明的是,本发明中的ddd模式的系统层级结构图与相关技术中的ddd模式的系统层级结构图不同,如图32所示,本发明中的ddd模式的系统层级结构图较之相关技术中的ddd模式的系统层级结构图多了一个实现层。实现层的内容是针对接口层、应用层以及领域层进行具体的逻辑实现。
189.为了实现上述实施例,本发明还提出一种基于领域驱动设计的工程脚手架生成装置。
190.图33为本发明实施例提供的一种基于领域驱动设计的工程脚手架生成装置的结构示意图。
191.如图33所示,该基于领域驱动设计的工程脚手架生成装置包括:获取模块3301、第一生成模块3302、第二生成模块3303、第三生成模块3304、第四生成模块3305和第五生成模块3306。
192.获取模块3301,用于获取目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息;
193.第一生成模块3302,用于根据目标微服务系统的接口信息,生成目标微服务系统对应的目标工程脚手架的接口包;其中,接口包用于提供目标微服务系统的接口定义;
194.第二生成模块3303,用于根据目标微服务系统的应用服务信息,生成目标工程脚手架的应用包;其中,应用包用于提供目标微服务系统的应用服务定义;
195.第三生成模块3304,用于根据目标微服务系统的领域服务信息和领域模型信息,生成目标工程脚手架的领域包;其中,领域包用于提供目标微服务系统的领域服务定义和领域模型定义;
196.第四生成模块3305,用于根据接口包、应用包和领域包,生成目标工程脚手架的逻辑实现包;其中,逻辑实现包用于在逻辑实现包包括的接口包、应用包和领域包内实现业务逻辑;
197.第五生成模块3306,用于根据目标工程脚手架的系统信息和数据模型信息,生成目标工程脚手架的基础设施包;其中,基础设施包用于提供目标微服务系统的系统定义、数据模型定义和实现业务逻辑。
198.进一步地,在本发明实施例的一种可能的实现方式中,系统信息包括系统名称、系统编码、系统端口、服务框架、groupid前缀、artifactid前缀和包路径;
199.获取模块3301,用于:
200.响应于用户的新增微服务系统操作,获取用户输入的目标微服务系统的系统名称、系统端口、groupid前缀、artifactid前缀和包路径,和用户选择的目标微服务系统的服务框架,以及基于用户输入的目标微服务系统的系统名称生成的系统编码。
201.进一步地,在本发明实施例的一种可能的实现方式中,系统信息还包括系统描述和是否设置数据源,相对应地,在用户选择设置数据源的情况下,系统信息还包括引用来源;
202.获取模块3301,用于:
203.响应于用户的新增微服务系统操作,获取用户输入的目标微服务系统的系统描述,以及在用户选择设置数据源的情况下,获取用户输入的目标微服务系统的引用来源。
204.进一步地,在本发明实施例的一种可能的实现方式中,系统信息还包括技术组件和微服务参数,技术组件包括数据库驱动和日志组件,微服务参数包括接口实现启动检查标志、交易成功响应码、交易成功响应信息、业务日志级别、架构日志级别和日志生成路径;
205.获取模块3301,用于:
206.响应于用户对目标微服务系统的工程脚手架下载操作,获取用户选择的目标微服务系统的数据库驱动、日志组件、接口实现启动检查标志、业务日志级别、架构日志级别,以及用户输入的目标微服务系统的交易成功响应码、交易成功响应信息和日志生成路径。
207.进一步地,在本发明实施例的一种可能的实现方式中,接口信息包括接口类信息和接口类方法信息,接口类信息包括接口类名称和接口类标识,接口类方法信息包括接口类方法名称和接口类方法标识;
208.获取模块3301,用于:
209.响应于用户的创建接口类操作,获取用户输入的任一接口类的接口类名称和接口类标识;
210.响应于用户针对任一目标接口类的创建接口类方法操作,获取用户输入的任一接口类方法的接口类方法名称和接口类方法标识。
211.进一步地,在本发明实施例的一种可能的实现方式中,接口类信息还包括接口类描述;接口类方法信息还包括错误码、接口类方法描述、接口类方法入参类名、接口类方法出参类名、接口类方法输入字段和接口类方法输出字段;
212.获取模块3301,用于:
213.响应于用户的创建接口类操作,获取用户输入的任一接口类的接口类名称、接口类标识和接口类描述;
214.响应于用户针对任一目标接口类的创建接口类方法操作,获取用户输入的任一接口类方法的接口类方法名称、接口类方法标识、错误码、接口类方法描述、接口类方法入参类名和接口类方法出参类名,以及用户选择的任一接口类方法的接口类方法输入字段和接口类方法输出字段。
215.进一步地,在本发明实施例的一种可能的实现方式中,应用服务信息包括应用服务类信息和应用服务类方法信息,应用服务类信息包括应用服务类名称和应用服务类标
识,应用服务类方法信息包括应用服务类方法名称和应用服务类方法标识;
216.获取模块3301,用于:
217.响应于用户的创建应用服务类操作,获取用户输入的任一应用服务类的应用服务类名称和应用服务类标识;
218.响应于用户针对任一目标应用服务类的创建应用服务类方法操作,获取用户输入的任一应用服务类方法的应用服务类方法名称和应用服务类方法标识。
219.进一步地,在本发明实施例的一种可能的实现方式中,应用服务类信息还包括应用服务类描述;应用服务类方法信息还包括是否记录流水、应用服务类方法描述、是否使用接口类方法输入输出、应用服务类方法输入字段和应用服务类方法输出字段;
220.获取模块3301,用于:
221.响应于用户的创建应用服务类操作,获取用户输入的任一应用服务类的应用服务类名称、应用服务类标识和应用服务类描述;
222.响应于用户针对任一目标应用服务类的创建应用服务类方法操作,获取用户输入的任一应用服务类方法的应用服务类方法名称、应用服务类方法标识、应用服务类方法描述,以及用户选择的任一应用服务类方法的是否记录流水、是否使用接口类方法输入输出,并在用户选择不使用接口类方法输入输出的情况下,获取用户选择的任一应用服务类方法的应用服务类方法输入字段和应用服务类方法输出字段。
223.进一步地,在本发明实施例的一种可能的实现方式中,领域服务信息包括领域服务类信息和领域服务类方法信息,领域服务类信息包括领域服务类名称和领域服务类标识,领域服务类方法信息包括领域服务类方法名称和领域服务类方法标识;
224.获取模块3301,用于:
225.响应于用户的创建领域服务类操作,获取用户输入的任一领域服务类的领域服务类名称和领域服务类标识;
226.响应于用户针对任一目标领域服务类的创建领域服务类方法操作,获取用户输入的任一领域服务类方法的领域服务类方法名称和领域服务类方法标识。
227.进一步地,在本发明实施例的一种可能的实现方式中,领域服务类信息还包括领域服务类描述,领域服务类方法信息还包括领域服务类方法描述、领域服务类方法入参类名、领域服务类方法出参类名、领域服务类方法输入字段和领域服务类方法输出字段;
228.获取模块3301,用于:
229.响应于用户的创建领域服务类操作,获取用户输入的任一领域服务类的领域服务类名称、领域服务类标识和领域服务类描述;
230.响应于用户针对任一目标领域服务类的创建领域服务类方法操作,获取用户输入的任一领域服务类方法的领域服务类方法名称、领域服务类方法标识、领域服务类方法描述、领域服务类方法入参类名和领域服务类方法出参类名,以及用户选择的任一领域服务类方法的领域服务类方法输入字段和领域服务类方法输出字段。
231.进一步地,在本发明实施例的一种可能的实现方式中,领域模型信息包括聚合信息、实体信息和值对象信息,聚合信息包括聚合名称和聚合标识,实体信息包括实体名称、实体标识、领域对象和行为列表,领域对象包括实体模型、属性类型和实体唯一标识,实体模型包括贫血模型和充血模型,属性类型包括基本类型、实体和值对象,行为列表包括行为
名称和行为编码,值对象信息包括值对象名称、值对象标识、值对象编号、值对象描述和值对象属性;
232.获取模块3301,用于:
233.响应于用户的新建聚合操作,获取用户输入的任一聚合的聚合名称和聚合标识;
234.响应于用户针对任一第一聚合的新增实体操作,获取用户输入的任一实体的实体名称和实体标识,和用户选择的任一实体的实体模型、属性类型和实体唯一标识,以及用户输入的任一实体的任一行为的行为名称和行为编码;
235.响应于用户针对任一第二聚合的新增值对象操作,获取用户输入的任一值对象的值对象名称、值对象标识、值对象编号和值对象描述,以及用户选择的任一值对象的值对象属性。
236.进一步地,在本发明实施例的一种可能的实现方式中,聚合信息还包括聚合描述,实体信息还包括实体编号和实体描述,行为列表还包括行为输入字段、行为输出字段和是否新增行为;
237.获取模块3301,用于:
238.响应于用户的新建聚合操作,获取用户输入的任一聚合的聚合名称、聚合标识和聚合描述;
239.响应于用户针对任一第一聚合的新增实体操作,获取用户输入的任一实体的实体名称、实体标识、实体编号和实体描述,和用户选择的任一实体的实体模型、属性类型和实体唯一标识,以及用户输入的任一实体的任一行为的行为名称和行为编码,和用户输入的任一行为的行为输入字段和行为输出字段,并在用户选择新增行为的情况下,获取用户输入的新增行为的行为名称和行为编码,以及用户选择的新增行为的行为输入字段和行为输出字段。
240.进一步地,在本发明实施例的一种可能的实现方式中,数据模型信息包括表名称、表字段、表索引和数据库模式定义语言ddl语句;
241.获取模块3301,用于:
242.响应于用户对目标微服务系统的数据建模操作,获取用户基于目标微服务系统的领域模型选择的表字段;
243.响应于用户对表字段的新增推导操作,获取表字段的第一字段信息、用户输入的表名称和表描述;其中,第一字段信息包括字段来源、字段名称、字段类型、字段长度和字段小数点位置;
244.响应于用户对表字段的编辑操作,获取用户编辑的表字段的第二字段信息;其中,第二字段信息包括字段是否为空、字段是否为主键和字段注释;
245.响应于用户的添加索引操作,获取索引方法和用户编辑的表索引;其中,表索引包括索引名称、索引字段、索引类型和索引注释;
246.获取基于表名称、表字段和表索引生成的ddl语句。
247.需要说明的是,前述对基于领域驱动设计的工程脚手架生成方法实施例的解释说明也适用于该实施例的基于领域驱动设计的工程脚手架生成装置,此处不再赘述。
248.为了实现上述实施例,本发明还提出一种电子设备,该电子设备包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器
执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本发明上述任一实施例提出的基于领域驱动设计的工程脚手架生成方法。
249.为了实现上述实施例,本发明还提出一种存储有计算机指令的计算机可读存储介质,其中,计算机指令用于使计算机执行本发明上述任一实施例提出的基于领域驱动设计的工程脚手架生成方法。
250.为了实现上述实施例,本发明还提出一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现本发明上述任一实施例提出的基于领域驱动设计的工程脚手架生成方法。
251.图34为本发明实施例提供的一个电子设备的结构示意图。
252.需要说明的是,图34所示的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
253.如图34所示,该电子设备包括:
254.存储器3401、处理器3402及存储在存储器3401上并可在处理器3402上运行的计算机程序。
255.处理器3402执行所述程序时实现上述任一实施例中提供的基于领域驱动设计的工程脚手架生成方法。
256.进一步地,电子设备还包括:
257.通信接口3403,用于存储器3401和处理器3402之间的通信。
258.存储器3401,用于存放可在处理器3402上运行的计算机程序。
259.存储器3401可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
260.处理器3402,用于执行所述程序时实现上述任一实施例所述的基于领域驱动设计的工程脚手架生成方法。
261.如果存储器3401、处理器3402和通信接口3403独立实现,则通信接口3403、存储器3401和处理器3402可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(industry standard architecture,简称为isa)总线、外部设备互连(peripheral component,简称为pci)总线或扩展工业标准体系结构(extended industry standard architecture,简称为eisa)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图34中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
262.可选地,在具体实现上,如果存储器3401、处理器3402及通信接口3403,集成在一块芯片上实现,则存储器3401、处理器3402及通信接口3403可以通过内部接口完成相互间的通信。
263.处理器3402可能是一个中央处理器(central processing unit,简称为cpu),或者是特定集成电路(application specific integrated circuit,简称为asic),或者是被配置成实施本发明实施例的一个或多个集成电路。
264.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不
必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
265.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
266.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
267.在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
268.应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
269.本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
270.此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
271.上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

技术特征:
1.一种基于领域驱动设计的工程脚手架生成方法,其特征在于,所述方法应用于目标平台,所述目标平台用于设计微服务系统的工程架构;所述方法包括:获取目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息;根据所述目标微服务系统的接口信息,生成所述目标微服务系统对应的目标工程脚手架的接口包;其中,所述接口包用于提供所述目标微服务系统的接口定义;根据所述目标微服务系统的应用服务信息,生成所述目标工程脚手架的应用包;其中,所述应用包用于提供所述目标微服务系统的应用服务定义;根据所述目标微服务系统的领域服务信息和领域模型信息,生成所述目标工程脚手架的领域包;其中,所述领域包用于提供所述目标微服务系统的领域服务定义和领域模型定义;根据所述接口包、所述应用包和所述领域包,生成所述目标工程脚手架的逻辑实现包;其中,所述逻辑实现包用于在所述逻辑实现包包括的所述接口包、所述应用包和所述领域包内实现业务逻辑;根据所述目标工程脚手架的系统信息和数据模型信息,生成所述目标工程脚手架的基础设施包;其中,所述基础设施包用于提供所述目标微服务系统的系统定义、数据模型定义和实现业务逻辑。2.根据权利要求1所述的方法,其特征在于,所述系统信息包括系统名称、系统编码、系统端口、服务框架、groupid前缀、artifactid前缀和包路径;所述获取目标微服务系统的系统信息,包括:响应于用户的新增微服务系统操作,获取所述用户输入的所述目标微服务系统的系统名称、系统端口、groupid前缀、artifactid前缀和包路径,和所述用户选择的所述目标微服务系统的服务框架,以及基于所述用户输入的所述目标微服务系统的系统名称生成的系统编码。3.根据权利要求2所述的方法,其特征在于,所述系统信息还包括系统描述和是否设置数据源,相对应地,在所述用户选择设置数据源的情况下,所述系统信息还包括引用来源;所述获取目标微服务系统的系统信息,还包括:响应于所述用户的新增微服务系统操作,获取所述用户输入的所述目标微服务系统的系统描述,以及在所述用户选择设置数据源的情况下,获取所述用户输入的所述目标微服务系统的引用来源。4.根据权利要求3所述的方法,其特征在于,所述系统信息还包括技术组件和微服务参数,所述技术组件包括数据库驱动和日志组件,所述微服务参数包括接口实现启动检查标志、交易成功响应码、交易成功响应信息、业务日志级别、架构日志级别和日志生成路径;所述获取目标微服务系统的系统信息,还包括:响应于用户对所述目标微服务系统的工程脚手架下载操作,获取所述用户选择的所述目标微服务系统的数据库驱动、日志组件、接口实现启动检查标志、业务日志级别、架构日志级别,以及所述用户输入的所述目标微服务系统的交易成功响应码、交易成功响应信息和日志生成路径。
5.根据权利要求1所述的方法,其特征在于,所述接口信息包括接口类信息和接口类方法信息,所述接口类信息包括接口类名称和接口类标识,所述接口类方法信息包括接口类方法名称和接口类方法标识;所述获取目标微服务系统的接口信息,包括:响应于用户的创建接口类操作,获取所述用户输入的任一接口类的接口类名称和接口类标识;响应于所述用户针对任一目标接口类的创建接口类方法操作,获取所述用户输入的任一接口类方法的接口类方法名称和接口类方法标识。6.根据权利要求5所述的方法,其特征在于,所述接口类信息还包括接口类描述;所述接口类方法信息还包括错误码、接口类方法描述、接口类方法入参类名、接口类方法出参类名、接口类方法输入字段和接口类方法输出字段;所述获取目标微服务系统的接口信息,包括:响应于所述用户的创建接口类操作,获取所述用户输入的任一接口类的接口类名称、接口类标识和接口类描述;响应于所述用户针对任一目标接口类的创建接口类方法操作,获取所述用户输入的任一接口类方法的接口类方法名称、接口类方法标识、错误码、接口类方法描述、接口类方法入参类名和接口类方法出参类名,以及所述用户选择的所述任一接口类方法的接口类方法输入字段和接口类方法输出字段。7.根据权利要求1所述的方法,其特征在于,所述应用服务信息包括应用服务类信息和应用服务类方法信息,所述应用服务类信息包括应用服务类名称和应用服务类标识,所述应用服务类方法信息包括应用服务类方法名称和应用服务类方法标识;所述获取目标微服务系统的应用服务信息,包括:响应于用户的创建应用服务类操作,获取所述用户输入的任一应用服务类的应用服务类名称和应用服务类标识;响应于所述用户针对任一目标应用服务类的创建应用服务类方法操作,获取所述用户输入的任一应用服务类方法的应用服务类方法名称和应用服务类方法标识。8.根据权利要求7所述的方法,其特征在于,所述应用服务类信息还包括应用服务类描述;所述应用服务类方法信息还包括是否记录流水、应用服务类方法描述、是否使用接口类方法输入输出、应用服务类方法输入字段和应用服务类方法输出字段;所述获取目标微服务系统的应用服务信息,包括:响应于所述用户的创建应用服务类操作,获取所述用户输入的任一应用服务类的应用服务类名称、应用服务类标识和应用服务类描述;响应于所述用户针对任一目标应用服务类的创建应用服务类方法操作,获取所述用户输入的任一应用服务类方法的应用服务类方法名称、应用服务类方法标识、应用服务类方法描述,以及所述用户选择的所述任一应用服务类方法的是否记录流水、是否使用接口类方法输入输出,并在所述用户选择不使用接口类方法输入输出的情况下,获取所述用户选择的所述任一应用服务类方法的应用服务类方法输入字段和应用服务类方法输出字段。9.根据权利要求1所述的方法,其特征在于,所述领域服务信息包括领域服务类信息和领域服务类方法信息,所述领域服务类信息包括领域服务类名称和领域服务类标识,所述
领域服务类方法信息包括领域服务类方法名称和领域服务类方法标识;所述获取目标微服务系统的领域服务信息,包括:响应于用户的创建领域服务类操作,获取所述用户输入的任一领域服务类的领域服务类名称和领域服务类标识;响应于所述用户针对任一目标领域服务类的创建领域服务类方法操作,获取所述用户输入的任一领域服务类方法的领域服务类方法名称和领域服务类方法标识。10.根据权利要求9所述的方法,其特征在于,所述领域服务类信息还包括领域服务类描述,所述领域服务类方法信息还包括领域服务类方法描述、领域服务类方法入参类名、领域服务类方法出参类名、领域服务类方法输入字段和领域服务类方法输出字段;所述获取目标微服务系统的领域服务信息,包括:响应于所述用户的创建领域服务类操作,获取所述用户输入的任一领域服务类的领域服务类名称、领域服务类标识和领域服务类描述;响应于所述用户针对任一目标领域服务类的创建领域服务类方法操作,获取所述用户输入的任一领域服务类方法的领域服务类方法名称、领域服务类方法标识、领域服务类方法描述、领域服务类方法入参类名和领域服务类方法出参类名,以及所述用户选择的所述任一领域服务类方法的领域服务类方法输入字段和领域服务类方法输出字段。11.根据权利要求1所述的方法,其特征在于,所述领域模型信息包括聚合信息、实体信息和值对象信息,所述聚合信息包括聚合名称和聚合标识,所述实体信息包括实体名称、实体标识、领域对象和行为列表,所述领域对象包括实体模型、属性类型和实体唯一标识,所述实体模型包括贫血模型和充血模型,所述属性类型包括基本类型、实体和值对象,所述行为列表包括行为名称和行为编码,所述值对象信息包括值对象名称、值对象标识、值对象编号、值对象描述和值对象属性;所述获取目标微服务系统的领域模型信息,包括:响应于用户的新建聚合操作,获取所述用户输入的任一聚合的聚合名称和聚合标识;响应于所述用户针对任一第一聚合的新增实体操作,获取所述用户输入的任一实体的实体名称和实体标识,和所述用户选择的所述任一实体的实体模型、属性类型和实体唯一标识,以及所述用户输入的所述任一实体的任一行为的行为名称和行为编码;响应于所述用户针对任一第二聚合的新增值对象操作,获取所述用户输入的任一值对象的值对象名称、值对象标识、值对象编号和值对象描述,以及所述用户选择的所述任一值对象的值对象属性。12.根据权利要求11所述的方法,其特征在于,所述聚合信息还包括聚合描述,所述实体信息还包括实体编号和实体描述,所述行为列表还包括行为输入字段、行为输出字段和是否新增行为;所述获取目标微服务系统的领域模型信息,包括:响应于所述用户的新建聚合操作,获取所述用户输入的任一聚合的聚合名称、聚合标识和聚合描述;响应于所述用户针对任一第一聚合的新增实体操作,获取所述用户输入的任一实体的实体名称、实体标识、实体编号和实体描述,和所述用户选择的所述任一实体的实体模型、属性类型和实体唯一标识,以及所述用户输入的所述任一实体的任一行为的行为名称和行
为编码,和所述用户输入的所述任一行为的行为输入字段和行为输出字段,并在所述用户选择新增行为的情况下,获取所述用户输入的新增行为的行为名称和行为编码,以及所述用户选择的所述新增行为的行为输入字段和行为输出字段。13.根据权利要求1所述的方法,其特征在于,所述数据模型信息包括表名称、表字段、表索引和数据库模式定义语言ddl语句;所述获取目标微服务系统的数据模型信息,包括:响应于用户对所述目标微服务系统的数据建模操作,获取所述用户基于所述目标微服务系统的领域模型选择的表字段;响应于所述用户对所述表字段的新增推导操作,获取所述表字段的第一字段信息、所述用户输入的表名称和表描述;其中,所述第一字段信息包括字段来源、字段名称、字段类型、字段长度和字段小数点位置;响应于所述用户对所述表字段的编辑操作,获取所述用户编辑的所述表字段的第二字段信息;其中,所述第二字段信息包括字段是否为空、字段是否为主键和字段注释;响应于所述用户的添加索引操作,获取索引方法和所述用户编辑的表索引;其中,所述表索引包括索引名称、索引字段、索引类型和索引注释;获取基于所述表名称、所述表字段和所述表索引生成的ddl语句。14.一种基于领域驱动设计的工程脚手架生成装置,其特征在于,所述装置包括:获取模块,用于获取目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息;第一生成模块,用于根据所述目标微服务系统的接口信息,生成所述目标微服务系统对应的目标工程脚手架的接口包;其中,所述接口包用于提供所述目标微服务系统的接口定义;第二生成模块,用于根据所述目标微服务系统的应用服务信息,生成所述目标工程脚手架的应用包;其中,所述应用包用于提供所述目标微服务系统的应用服务定义;第三生成模块,用于根据所述目标微服务系统的领域服务信息和领域模型信息,生成所述目标工程脚手架的领域包;其中,所述领域包用于提供所述目标微服务系统的领域服务定义和领域模型定义;第四生成模块,用于根据所述接口包、所述应用包和所述领域包,生成所述目标工程脚手架的逻辑实现包;其中,所述逻辑实现包用于在所述逻辑实现包包括的所述接口包、所述应用包和所述领域包内实现业务逻辑;第五生成模块,用于根据所述目标工程脚手架的系统信息和数据模型信息,生成所述目标工程脚手架的基础设施包;其中,所述基础设施包用于提供所述目标微服务系统的系统定义、数据模型定义和实现业务逻辑。15.一种电子设备,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-13中任一项所述的方法。16.一种存储有计算机指令的计算机可读存储介质,其特征在于,所述计算机指令用于
使所述计算机执行权利要求1-13中任一项所述的方法。17.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序在被处理器执行时实现权利要求1-13中任一项所述的方法。

技术总结
本发明提出一种基于领域驱动设计的工程脚手架生成方法、装置和设备,方法包括:通过获取目标微服务系统的系统信息、接口信息、应用服务信息、领域服务信息、领域模型信息和数据模型信息,实现根据目标微服务系统的接口信息,生成目标微服务系统对应的目标工程脚手架的接口包,根据目标微服务系统的应用服务信息,生成目标工程脚手架的应用包,根据目标微服务系统的领域服务信息和领域模型信息,生成目标工程脚手架的领域包,根据接口包、应用包和领域包,生成目标工程脚手架的逻辑实现包,根据目标工程脚手架的系统信息和数据模型信息,生成目标工程脚手架的基础设施包,从而通过新增逻辑实现包,实现业务逻辑与系统设计的分离,便于代码迁移。便于代码迁移。便于代码迁移。


技术研发人员:李欢 甘霖
受保护的技术使用者:中电金信软件有限公司
技术研发日:2023.05.23
技术公布日:2023/9/6
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐