模型框架代码生成系统及方法与流程

文档序号:30424495发布日期:2022-06-15 14:30阅读:85来源:国知局
模型框架代码生成系统及方法与流程

1.本发明涉及云服务技术领域,尤其涉及模型框架代码生成系统及方法。


背景技术:

2.数据模型是指现实世界数据特征的抽象,用以描述一组数据的概念和定义,是数据资产管理和数据治理的基础。高质量的数据模型有助于提高业务系统数据的质量。
3.现有数据模型是由人工线下定义并开发得到。但是,在信息系统建设开发阶段,人工编写代码存在无法从根本上解决的问题:第一,人工编写代码的工作量大,周期长,成本高;第二,对研发人员要求高,有些错误在不同人员和同一人员不同位置的代码中重复出现,提高个人能力只能降低错误出现率,但无法从根本上避免这些错误;第三,虽然有公共编码规范,但不同人员对代码规范的学习程度和理解方向有所差别,在编码过程中或多或少带有个人不良习惯,发生人员流动时,代码交接难度加大;第四,人工编写的代码重复利用率低、重复利用难度大,大量相似逻辑的代码在移植修改时容易遗漏,并易由此导致一系列严重错误。


技术实现要素:

4.有鉴于此,本发明实施例提供了一种框架代码生成系统及方法,以提高模型的数据质量。
5.为了达到上述目的,本发明采用以下方案实现:
6.根据本发明实施例的一个方面,提供了一种模型框架代码生成系统,包括:
7.模型数据库模块,用于存储预先根据设定业务系统构建的数据元素、数据对象模型、及服务描述模型中的至少一个,以及针对所述设定业务系统所在业务领域定义的服务描述语言;
8.可视化界面模块,用于显示存储的数据元素、数据对象模型、及服务描述模型的可视化标识,接收编排操作指令,并根据所述编排操作指令选择数据元素、数据对象模型、及服务描述模型的可视化标识中的至少一个;
9.模型构建层模块,用于根据选择的可视化标识,获取相应的存储的数据元素、数据对象模型、及服务描述模型中的至少一个,以构建得到新模型;其中,新模型为新的数据对象模型或新的服务描述模型;
10.模型发布层模块,用于根据存储的服务描述语言对新模型进行发布,生成用于在所述设定业务系统中运行该新模型的框架代码和相应的环境库文件。
11.在一些实施例中,所述的模型框架代码生成系统还包括:
12.模型测试层模块,用于对新模型的框架代码和相应的环境库文件进行校验分析,以进行客户端和服务端契约测试。
13.在一些实施例中,模型发布层模块,还用于记录该新模型相关信息;其中,该新模型相关信息包括发布时间信息、发布描述信息、发布版本信息、发布领域信息、及发布机构
信息中的至少一个;
14.模型数据库模块,还用于导入并存储该新模型的框架代码和相应的环境库文件,以及该新模型相关信息。
15.在一些实施例中,存储的数据元素、数据对象模型、及服务描述模型中的至少一个的存储结构为树形结构。
16.在一些实施例中,所述编排操作指令包括拖拽操作指令和/或关联操作指令。
17.在一些实施例中,所述服务描述语言包括数据对象模型的结构体及其含义、数据元素及其含义、函数接口模型及其含义、函数类型、及容器,以及其之间所需的继承关系、组合关系及聚合关联。
18.在一些实施例中,模型发布层模块,包括:
19.词法分析及校验模块,用于以字符为单位扫描新模型的描述文件,在扫描到的新模型中的单词为服务描述语言中的关键字时,返回该单词对应的属性编码,在扫描到的新模型中的单词是无效字符时,跳过该无效字符,在扫描到的新模型中的单词不是服务描述语言中的关键字时且不是无效字符时,保留相应单词的字符串信息,以在扫描完新模型的描述文件后得到新模型的词法分析及校验结果;
20.框架代码生成模块,用于根据新模型的词法分析及校验结果解析该新模型的描述文件,以执行相应功能,初始化全局变量,调用设定代码生成函数,解析语言类型,并根据语言类型生成相应的框架代码;
21.打包模块,用于将框架代码复制到编程语言工程的源代码路径,并将所述编程语言工程依赖的服务框架环境库文件拷贝至环境库路径,并对源代码路径下的框架代码和环境库路径和服务框架环境库文件进行打包压缩,得到该新模型的框架代码和相应的环境库文件的压缩包。
22.在一些实施例中,模型测试层模块,包括:
23.服务端服务实例mockserver生成模块,用于根据新模型的框架代码,利用用于测试的服务描述模型的描述文件,模拟函数接口返回参数值,生成服务端服务实例mockserver;
24.客户端能力测试mockclient生成模块,用于根据服务端服务实例的框架代码,使用java父类加载器加载接口以利用反射机制获取类对象实例,通过反射机制收集用于测试的服务描述模型的接口方法数组信息,根据获取的类对象实例和接口方法数据信息通过反射机制得到创建客户端所需的实例类,通过实例类创建客户端对象并获取成员变量和相应调用方法,形成客户端能力测试mockclient;
25.xml模板生成模块,用于利用客户端能力测试mockclient,根据获取的成员变量得到接口函数的入参类型、出参类型及方法名称,根据入参类型、出参类型及方法名称生成xml模板;
26.契约测试模块,用于利用生成的xml模板填入输入的测试参数对应类型的参数值,并通过反射机制将输入的参数值传入客户端对象的invoke方法,以利用所述调用方法对服务端服务实例mockserver进行远程调用。
27.根据本发明实施例的另一个方面,还提供了一种模型框架代码生成方法,包括:
28.获取存储的预先根据设定业务系统构建的数据元素、数据对象模型、及服务描述
模型中的至少一个,以及针对所述设定业务系统所在业务领域定义的服务描述语言;
29.显示存储的数据元素、数据对象模型、及服务描述模型的可视化标识,接收编排操作指令,并根据所述编排操作指令选择数据元素、数据对象模型、及服务描述模型的可视化标识中的至少一个;
30.根据选择的可视化标识,获取相应的存储的数据元素、数据对象模型、及服务描述模型中的至少一个,以构建得到新模型;其中,新模型为新的数据对象模型或新的服务描述模型;
31.根据存储的服务描述语言对新模型进行发布,生成用于在所述设定业务系统中运行该新模型的框架代码和相应的环境库文件。
32.根据本发明实施例的又一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所述方法的步骤。
33.本发明实施例的模型框架代码生成系统、模型框架代码生成方法及计算机可读存储介质,能够辅助用户进行模型编排,减少了人力工作量、重复性工作、人为错误等,提高了模型的数据质量。
附图说明
34.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
35.图1是本发明一实施例的模型框架代码生成系统的结构示意图;
36.图2是本发明另一实施例的模型框架代码生成系统的结构示意图;
37.图3是本发明一实施例的模型框架代码生成方法的流程示意图;
38.图4是本发明一实施例中数据对象模型应用模式示意图;
39.图5是本发明一实施例中交换模型应用模式示意图。
具体实施方式
40.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
41.需要预先说明的是,下述实施例或示例的描述或其中所提及的特征可以以相同或类似的方式,与其他实施例或示例中的特征组合,或替换其他实施例或示例中的特征,以形成可能的实施方式。另外,本文所使用的术语“包括/包含”是指特征、要素、步骤或组件的存在,但并不排除还存在一个或多个其他特征、要素、步骤或组件。
42.为了减少人工编写代码存在的各种问题,本发明实施例提供了一中模型代码辅助生成工具,以利用可视化界面自动生成源代码,提高代码的生成速度、规范及稳定性。
43.图1是本发明一实施例的模型框架代码生成系统的结构示意图,如图1所示,该实施例的模型框架代码生成系统可包括:模型数据库模块110、可视化界面模块120、模型构建层模块130及模型发布层模块140。
44.模型数据库模块110,用于存储预先根据设定业务系统构建的数据元素、数据对象模型、及服务描述模型中的至少一个,以及针对所述设定业务系统所在业务领域定义的服务描述语言。该数据元素为标准数据元素,可以通过导入或人工添加得到。数据元素和数据对象模型可以用来构建新的数据对象模型。数据元素、数据对象模型、及服务描述模型可以用来构建新的服务描述模型。其中,服务描述模型例如为利用云服务平台为用户提供的业务系统服务。
45.其中,存储的数据元素、数据对象模型、及服务描述模型中的至少一个的存储结构可以为树形结构。以此可以方便的查找数据元素、数据对象模型、服务描述模型。
46.其中,所述服务描述语言可包括数据对象模型的结构体及其含义、数据元素及其含义、函数接口模型及其含义、函数类型、及容器,以及其之间所需的继承关系、组合关系及聚合关联。服务描述语言可以根据业务系统进行归纳、规范得到。
47.可视化界面模块120,用于显示存储的数据元素、数据对象模型、及服务描述模型的可视化标识,接收编排操作指令,并根据所述编排操作指令选择数据元素、数据对象模型、及服务描述模型的可视化标识中的至少一个。其中,所述编排操作指令可包括拖拽操作指令和/或关联操作指令。
48.模型构建层模块130,用于根据选择的可视化标识,获取相应的存储的数据元素、数据对象模型、及服务描述模型中的至少一个,以构建得到新模型;其中,新模型为新的数据对象模型或新的服务描述模型。可视化界面模块120可以属于模型构建层模块130的一部分。在可视化界面上可以用不同的标识表示数据元素、数据对象模型、服务描述模型等,该些标识可以关联后台模型库,例如当拖动一个标识时可以选择模型库的一个相应部分。
49.模型发布层模块140,用于根据存储的服务描述语言对新模型进行发布,生成用于在所述设定业务系统中运行该新模型的框架代码和相应的环境库文件。
50.具体实施时,模型发布层模块140,可包括:词法分析及校验模块、框架代码生成模块及打包模块。
51.词法分析及校验模块,用于以字符为单位扫描新模型的描述文件,在扫描到的新模型中的单词为服务描述语言中的关键字时,返回该单词对应的属性编码,在扫描到的新模型中的单词是无效字符时,跳过该无效字符,在扫描到的新模型中的单词不是服务描述语言中的关键字时且不是无效字符时,保留相应单词的字符串信息,以在扫描完新模型的描述文件后得到新模型的词法分析及校验结果。其中,描述文件例如为idl(交互式数据语言)描述文件。
52.框架代码生成模块,用于根据新模型的词法分析及校验结果解析该新模型的描述文件,以执行相应功能,初始化全局变量,调用设定代码生成函数,解析语言类型,并根据语言类型生成相应的框架代码。其中,可以预先构建编译器中词法与属性编码的对应关系,所以可以利用该编译器执行解析后的文件,生成代码,该编译器可以是改进的编译器。
53.打包模块,用于将框架代码复制到编程语言工程的源代码路径,并将所述编程语言工程依赖的服务框架环境库文件拷贝至环境库路径,并对源代码路径下的框架代码和环境库路径和服务框架环境库文件进行打包压缩,得到该新模型的框架代码和相应的环境库文件的压缩包。
54.进一步的实施例中,模型发布层模块140,还可用于记录该新模型相关信息;其中,
该新模型相关信息包括发布时间信息、发布描述信息、发布版本信息、发布领域信息、及发布机构信息中的至少一个。模型数据库模块110,还可用于导入并存储该新模型的框架代码和相应的环境库文件,以及该新模型相关信息。该实施例中,生成的新模型可以存到模型库中,供下次编排模型的使用。
55.图2是本发明另一实施例的模型框架代码生成系统的结构示意图,如图2所示,图1所示的模型框架代码生成系统,还可包括模型测试层模块150。模型测试层模块150,用于对新模型的框架代码和相应的环境库文件进行校验分析,以进行客户端和服务端契约测试。通过测试可以保证生成的新模型可以使用。
56.具体时,模型测试层模块150可包括:服务端服务实例mockserver生成模块、客户端能力测试mockclient生成模块、xml模板生成模块、及契约测试模块。
57.服务端服务实例mockserver生成模块,用于根据新模型的框架代码,利用用于测试的服务描述模型的描述文件,模拟函数接口返回参数值,生成服务端服务实例mockserver。其中,若是对服务描述模型进行测试,则待测服务描述模型的描述文件(如idl文件)可以作为用于测试的服务描述模型的描述文件;若测试的数据对象模型,则用于测试的服务描述模型的描述文件可以是任一给定的一个服务描述模型的描述文件,能够对数据对象模型进行描述即可。
58.客户端能力测试mockclient生成模块,用于根据服务端服务实例的框架代码,使用java父类加载器加载接口以利用反射机制获取类对象实例,通过反射机制收集用于测试的服务描述模型的接口方法数组信息,根据获取的类对象实例和接口方法数据信息通过反射机制得到创建客户端所需的实例类,通过实例类创建客户端对象并获取成员变量和相应调用方法,形成客户端能力测试mockclient。
59.xml模板生成模块,用于利用客户端能力测试mockclient,根据获取的成员变量得到接口函数的入参类型、出参类型及方法名称,根据入参类型、出参类型及方法名称生成xml模板(可扩展标记语言模板)。
60.契约测试模块,用于利用生成的xml模板填入输入的测试参数对应类型的参数值,并通过反射机制将输入的参数值传入客户端对象的invoke方法,以利用所述调用方法对服务端服务实例mockserver进行远程调用。
61.该实施例中,通过利用java语言进行模型测试,能够在测试过程中获得各函数接口等的测试结果。而且,由于开始的描述文件与编程语言无关,所以无论是要用于java语言还是c/c++语言都可以利用java语言进行模型测试。
62.基于与图1所示的模型框架代码生成系统相同的发明构思,本技术实施例还提供了一种模型框架代码生成方法,如下面实施例所述。由于该模型框架代码生成方法解决问题的原理与模型框架代码生成系统相似,因此该模型框架代码生成方法的实施可以参见模型框架代码生成系统的实施,重复之处不再赘述。
63.图3是本发明一实施例的模型框架代码生成方法的流程示意图,如图3所示,该实施例的模型框架代码生成方法可包括:
64.步骤s210:获取存储的预先根据设定业务系统构建的数据元素、数据对象模型、及服务描述模型中的至少一个,以及针对所述设定业务系统所在业务领域定义的服务描述语言;
65.步骤s220:显示存储的数据元素、数据对象模型、及服务描述模型的可视化标识,接收编排操作指令,并根据所述编排操作指令选择数据元素、数据对象模型、及服务描述模型的可视化标识中的至少一个;
66.步骤s230:根据选择的可视化标识,获取相应的存储的数据元素、数据对象模型、及服务描述模型中的至少一个,以构建得到新模型;其中,新模型为新的数据对象模型或新的服务描述模型;
67.步骤s240:根据存储的服务描述语言对新模型进行发布,生成用于在所述设定业务系统中运行该新模型的框架代码和相应的环境库文件。
68.在一些实施例中,图3所示的方法还可包括步骤:s250,对新模型的框架代码和相应的环境库文件进行校验分析,以进行客户端和服务端契约测试。
69.在一些实施例中,图3所示的方法还可包括步骤:s260,记录该新模型相关信息;其中,该新模型相关信息包括发布时间信息、发布描述信息、发布版本信息、发布领域信息、及发布机构信息中的至少一个;s270,导入并存储该新模型的框架代码和相应的环境库文件,以及该新模型相关信息。
70.在一些实施例中,存储的数据元素、数据对象模型、及服务描述模型中的至少一个的存储结构为树形结构。
71.在一些实施例中,所述编排操作指令包括拖拽操作指令和/或关联操作指令。
72.在一些实施例中,所述服务描述语言包括数据对象模型的结构体及其含义、数据元素及其含义、函数接口模型及其含义、函数类型、及容器,以及其之间所需的继承关系、组合关系及聚合关联。
73.具体实施时,上述步骤s240,即,根据存储的服务描述语言对新模型进行发布,生成用于在所述设定业务系统中运行该新模型的框架代码和相应的环境库文件,具体可包括步骤:s241,以字符为单位扫描新模型的描述文件,在扫描到的新模型中的单词为服务描述语言中的关键字时,返回该单词对应的属性编码,在扫描到的新模型中的单词是无效字符时,跳过该无效字符,在扫描到的新模型中的单词不是服务描述语言中的关键字时且不是无效字符时,保留相应单词的字符串信息,以在扫描完新模型的描述文件后得到新模型的词法分析及校验结果;s242,根据新模型的词法分析及校验结果解析该新模型的描述文件,以执行相应功能,初始化全局变量,调用设定代码生成函数,解析语言类型,并根据语言类型生成相应的框架代码;s243,将框架代码复制到编程语言工程的源代码路径,并将所述编程语言工程依赖的服务框架环境库文件拷贝至环境库路径,并对源代码路径下的框架代码和环境库路径和服务框架环境库文件进行打包压缩,得到该新模型的框架代码和相应的环境库文件的压缩包。
74.具体实施时,上述步骤s250,即,对新模型的框架代码和相应的环境库文件进行校验分析,以进行客户端和服务端契约测试,具体可包括步骤:s251,根据新模型的框架代码,利用用于测试的服务描述模型的描述文件,模拟函数接口返回参数值,生成服务端服务实例mockserver;s252,根据服务端服务实例的框架代码,使用java父类加载器加载接口以利用反射机制获取类对象实例,通过反射机制收集用于测试的服务描述模型的接口方法数组信息,根据获取的类对象实例和接口方法数据信息通过反射机制得到创建客户端所需的实例类,通过实例类创建客户端对象并获取成员变量和相应调用方法,形成客户端能力测试
mockclient;s253,利用客户端能力测试mockclient,根据获取的成员变量得到接口函数的入参类型、出参类型及方法名称,根据入参类型、出参类型及方法名称生成xml模板;s254,利用生成的xml模板填入输入的测试参数对应类型的参数值,并通过反射机制将输入的参数值传入客户端对象的invoke方法,以利用所述调用方法对服务端服务实例mockserver进行远程调用。
75.另外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所述方法的步骤。
76.下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本技术,并不构成对本技术的不当限定。
77.图4是本发明一实施例中数据对象模型应用模式示意图,参见图4,基于模型编排的框架代码生成工具所属模型管理服务,可包括:模型数据库、模型构建层、模型测试层、模型发布层五个功能模块。
78.其中,所述模型数据库可用于存储已经定义完成的模型,包括标准数据元素存储、实体数据模型存储、服务描述模型存储。所述标准数据元素存储可为在某特定业务领域的一组数据对象的公共属性。标准数据元素、实体数据模型、服务描述模型都可呈树形结构,可以统一的字段属性和精度存储到数据库,可提供一致性的业务系统基本数据元素的规范和定义,是所有模型建立的基础。所述实体数据主题模型(数据对象模型)存储为面向特定业务系统的数据对象的宽表(宽表从字面意义上讲就是字段比较多的数据库表。通常是指业务主题相关的指标、维度、属性关联在一起的一张数据库表)实体数据模型,是指数据资源的属性和操作属性的方式封装在称为对象类的结构中的模型,本质上是对业务数据资源的抽象化描述;所述服务描述模型存储为在某特定业务领域系统定义的各业务系统间接口交互的接口描述文件,接口的输入输出参数来源为标准数据元素或者复杂的是实体数据模型。
79.所述模型构建层可负责标准数据元素(可通过导入或人工新增得到)、实体数据模型(涉及交互模式)构建、服务描述模型构建,提供可视化界面,采用拖拽与关联的模式构建出新的数据模型或服务描述模型,支持基于已有模型聚合构建数据对象和新建数据模型两种方式。对于函数接口模型、函数的基本类型、容器等可以在界面上进行选择,如勾选选择。
80.所述模型测试层可负责针对数据模型中具体字段或者服务描述模型的具体接口定制(可以是业务系统归纳或语言规范)校验规则,形成生产者服务契约测试和消费者契约测试两种测试桩;
81.所述模型发布层可包括数据模型发布、服务描述模型发布,数据模型发布基于protobuf二进制序列化协议(数据描述语言,能够将结构化数据序列化)将构建测试通过的数据模型生成java和c++语言对应的实体类(主要是作为数据管理和业务逻辑处理层面上存在的类别,实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关)和基于模型编排构建的proto文件(文件和代码),服务模型发布将服务描述模型接口描述发布生成java(打包出来)或c++语言对应的框架代码及依赖的环境库文件资源打包发布注册到数据目录中,业务开发人员可按需下载已发布注册的数据对象模型和服务描述模型,模型发布层对发布的历史时间信息、发布描述信息、发布版本信息、发布领域信息、发布机构信息进行记录,将模型发布成
一种服务到数据目录中,实现了云服务模式;模型发布层支持将proto文件导入形成数据对象模型和服务描述文件导入形成服务描述模型并持久化存储到模型数据库中。发布生成结果可以是代码(框架代码)和文件(环境库文件)二者的压缩包。
82.在模型发布层中,具体可以通过以下步骤发布数据模型:
83.(s11)定义一种针对特定业务领域的服务描述模型的描述语言,所述的服务描述语言包括模型数据库提供的数据实体对象模型结构体及中文含义、标准元素及中文含义,函数接口模型及中文含义、函数的基本类型(如int)、容器,以及他们之间的继承、组合、聚合关系;所述数据实体对象模型(数据对象模型)是复杂数据类型,描述业务特定领域的对象模型,包含成员及方法(如有嵌套,词缀格式);所述函数接口模型,描述系统调用的函数接口,包括入参出参和接口名称定义;
84.(s12)对使用步骤(s11)中所述语言描述的数据实体对象模型和函数接口模型生成的文本文件进行词法分析和校验,以字符为单位扫描所构建描述文件,跳过空白符号、换行符号和注释部分,若扫描到的单词为所述描述语言的关键字,则返回该保留字所对应的属性编码(如类型、结构体、函数、参数数目、数据对象等,如int型,会改成i32),否则直接返回该单词的字符串信息,直到描述文件尾扫描完毕,完成对描述文件的词法分析和校验;
85.(s13)根据步骤(s12)词法分析的结果,解析描述文件(即idl描述文件)(得到编译器能识别的文件),根据执行相应的功能,初始化全局变量调用生成代码函数生成代码,解析语言类型,根据语言类型生成相应的类对象,然后调用生成程序函数生成对应的程序代码;可以有一个属性编码和对应内容的对应表,得到的属性编码可以解析成编译器能识别的文件,编译器也是通过适当调整的编译器;
86.(s14)根据步骤(s13)生成的框架代码(生成的程序代码),将框架代码复制到模板c++vs2010工程和模板java工程(jar包)的源代码路径(模型对应的路径),将工程依赖的服务框架环境库文件拷贝至环境库路径下,以模型名称为名称进行压缩打包,并将其资源(代码和环境库文件的压缩包)下载发布到数据到数据目录中;
87.(s15)根据步骤(s14)发布的模型资源,数据目录管理人员对发布的模型资源进行审核,对符合规则的模型资源审核通过,使用者可通过浏览器访问数据目录对模型资源进行下载使用。
88.在模型测试层中,具体可以通过以下步骤进行测试:
89.(s21)根据模型发布层生成的框架代码,在模型管理后台根据定义的服务描述模型的idl描述文件(该描述文件尚不涉及语言类型,无论数据模型是哪种语言,都可以利用java方式进行测试,以利用java方法在客户端进行测试),模拟函数接口返回参数值,生成测试服务端服务实例mockserver(服务端程序);正常的函数返回参数时需要进行很多处理(如运算、转换、调用),而本实施例在此处进行简单的函数返回即可;
90.(s22)根据步骤(s21)生成的框架代码,使用java的父类加载器加载接口实现类利用反射机制获的class对象实例(正在运行的东西的文件,对象、接口),通过反射机制收集服务描述模型定义的所有接口方法数组信息(服务描述文件中的接口),客户端工厂实例和客户端创建实例,(根据获取的class对象实例和接口方法数组信息)通过反射机制获取到创建客户端所需的所有实例class之后,通过实例class创建客户端对象并获取成员变量和调用方法(接口对应的内容)形成能力测试mockclient(客户端程序)。
91.(s23)根据步骤(s22)利用反射机制获取到的成员变量,获取到定义的接口函数的入参和出参类型和方法名(如计算方法),根据方法名称和参数类型生成xml模板。
92.(s24)根据步骤(s23)生成的xml模板填入测试参数对应类型的value值,通过反射机制将输入(侵入)的入参的value值传入反射机制生成的实例对象的持有的invoke方法中对步骤(s21)生成的服务实例进行方法的远程的调用。
93.模型数据库,具体可以通过以下步骤进行构建:
94.第一步,创建数据对象模型库模板
95.对现有的业务系统内实体类的命名空间按照包路径名称进行合理的分类和分层,根据分类分层结构逐级构建数据对象树形列表结构,便于使用现有模型库模板快速构建新的数据对象模型,便于后期统一修改某一基础数据对象的公共属性;
96.第二步,创建数据对象和标准元素
97.从现有数据库表和业务系统归纳总结形成标准元素树形列表,按照业务领域类别对标准元素进行分类分层,便于创建数据模型重复引用;提供基本的数据对象模型,便于复杂数据对象模型的聚合和重复引用;
98.第三步,创建数据对象关联关系
99.在进行复杂数据模型创建时,从数据模型树形列表选择存在关联关系的数据对象,并设置与每个与数据对象的关联关系;设置完成后形成一个包含所有数据对象关联关系网,提供全局和局部查看关联关系的界面;为后期维护数据模型业务完整性提供有力支撑。
100.本实施例,可针对目前特定领域业务信息系统数据描述不统一、人工编码不规范、二次开发流程繁琐复杂问题,从设计、开发运维一体化的角度,提出一种可视化编排模型生成工具及框架代码生成方法,包括模型数据库、模型构建层、模型测试层、模型发布层,数据能力模型,服务能力模型。所述模型数据库负责存储已经在线上构建完成的数据对象模型和服务描述模型,支持基于标准格式的业务主体服务数据对象、算子和服务描述文件的导入和导出;所述模型构建层提供可视化界面,采用拖拽与关联的模式构建新的数据对象模型和服务描述模型,支持基于已有模型构建和新建模型两种方法。同时,模型构建层内置业务系统领域通用的描述实体的标准数据元素和通用数据对象模型,可基于标准数据元素和通用数据对象模型进行聚合构建,支持选择几个数据模型根据关联关系生成数据对象,实现数据的进一步整合,经过聚合关联的数据对象模型可以直接使用和存储;所述模型测试层,用户可以针对数据模型具体字段定制校验规则,提供在线测试接口对数据模型是否符合规范进行测试,支持在线生成测试报告,形成生产者服务契约测试和消费者契约测试两种测试桩;所述模型发布层,包括数据模型发布、服务描述模型发布业务开发人员可按需下载已发布注册的数据对象模型和服务描述模型,模型发布层对发布的历史时间信息、发布描述信息、发布版本信息、发布领域信息、发布机构信息进行记录,将模型发布成一种服务到数据目录中,实现了云服务模式;模型发布层支持将proto文件导入形成数据对象模型和服务描述文件导入形成服务描述模型并持久化存储到模型数据库中。所述数据能力模型,基于protobuf二进制序列化协议将构建测试通过的数据模型生成java和c++语言对应的实体类和基于模型编排构建的proto文件。所述服务能力模型,将服务描述模型接口描述发布生成java和c++语言对应的框架代码及依赖的环境库文件资源打包发布注册到数据目录
中。
101.模型生成工具服务参考业务模型,使用标准化用语、单词等数据来设计和约束业务系统中的数据与服务模型,并在业务系统的建设和运行维护过程中,严格按照模型管理制定的标准和契约条款,审核和管理新增的数据模型。数据模型的标准化管理和统一管控,有利于数据资产的整合,提高业务系统数据质量。
102.图5是本发明一实施例中交换模型应用模式示意图,如图5所示,所述一种基于模型编排的框架代码生成方法,包括以下步骤:
103.s1,在标准数据元素对数据库字段的命名、标识、类型信息按照基础数据、业务数据库、综合、聚合分类对进行标准化定义,所述步骤一构建的标准数据元素是数据模型构建和交换模型的基础;
104.s2,基于s1构建的数据标准元素和模型数据库中已有的数据模型构建业务领域的数据模型,所述标准数据元素作为复杂数据模型的字段,在模型构建页面提供拖拽编辑的手段对复杂的数据对象模型进行编辑构建。
105.s3,基于s2构建的复杂数据模型作为交换模型中系统交换数据接口的入参和出参,在模型构建页面对交换模型的交换数据方法进行方法的命名、标识定义,提高设计好的交换数据接口列表,交换模型定义可支持使用模型接口数据库表中已有的交换模型接口;
106.s4,对所述s2和s3的构建的数据模型和交换模型进行资源发布,模型发布工具调用模型内置框架代码生成器对数据模型生成proto源文件、java和cpp源文件,对所述s3的交换模型调用模型内置服务代码编译器生成java和cpp框架代码,并将交换模型依赖的运行环境库打包压缩,统一将资源下载地址发布到数据目录;
107.s5,模型使用人员登录数据目录门户,对数据模型和服务模型进行资源的下载。
108.可视化编排模型生成工具及框架代码生成方法,所属模型生成工具包括模型数据库模块、模型构建层模块,模型测试层模块、模型发布层模块,数据能力模型、服务能力模型;所述模型生成工具参考业务模型,使用标准化用户、单词等数据来设计和约束业务系统中的数据与服务模型,并在业务系统的建设和运行维护过程中,严格按照模型管理制定的标准和契约条款,审核和管理新增的数据能力模型和服务能力模型,完成数据对象模型从图形化构建到描述语言文本文件生成到标准c++语法格式的框架代码和java与语法格式的框架代码的转变和自动生化成,数据模型的标准化管理和统一管控,有利于数据资产的整合,提高业务系统数据质量。
109.本实施例中,提供模型管理工具构建标准元素、数据模型、交换模型,构建一整套标准化的流程对现实世界数据特征抽象的描述,通过模型发布工具构建数据模型,定制数据模型中具体字段的校验规则,生成数据主题服务客户端测试代码对数据对象提供的增、删、改查接口进行在现实测试,在测试成功之后将通过的数据模型注册到数据目录,通过模型发布工具构建交换模型,通过设置函数名、函数描述信息,并利用数据对象模型池中的数据对象模型设置函数接口的参数和返回值的类型,创建函数对象接口。通过组合现有函数模型,并提供服务的详细信息生成能力模型,后台根据模型接口生成服务的rtp描述文件,rtp文件格式通过编译器验证后,就可以生成交换模型,并保存到交换模型池,提供交换模型能力验证功能,基于rtp文件生成的代码,创建交换模型服务端在线程序和客户端在线程序,服务调用测试成功,服务能力验证通过,并将交换模型资源发布到数据目录中。而现有
技术中,数据模型和交换模型定义未形成特有的规范化流程,人工线下定义开发存在较高沟通成本,较长测试排查故障成本。因此,本发明与现有技术相比,设计模型编排发布工具,将之前人工设计数据对象模型和交换服务文件的过程转移到提供了在线设计工具和参考模型资源池指导和辅助数据主题和服务设计开发人员进行设计开发。提高了数据服务和交换服务的开发效率,提供模型资源池,可快速开发新的数据模型和交换模型。
110.本发明实施例的模型框架代码生成系统、模型框架代码生成方法及计算机可读存储介质,能够辅助用户进行模型编排,减少了人力工作量、重复性工作、人为错误等,提高了模型的数据质量。
111.在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本发明的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
112.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
113.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
114.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
115.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
116.以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1