CN114816387A - 实体类生成方法及装置 - Google Patents
实体类生成方法及装置 Download PDFInfo
- Publication number
- CN114816387A CN114816387A CN202210452010.3A CN202210452010A CN114816387A CN 114816387 A CN114816387 A CN 114816387A CN 202210452010 A CN202210452010 A CN 202210452010A CN 114816387 A CN114816387 A CN 114816387A
- Authority
- CN
- China
- Prior art keywords
- document
- document data
- data
- field
- target
- 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.)
- Pending
Links
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Abstract
本申请公开了一种实体类生成方法及装置,用以解决现有技术中实体类生成效率较低且规范性较差的问题。所述方法包括:获取待解析的目标接口文档;目标接口文档包括多行文档数据;解析目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型;根据每行文档数据对应的目标字段类型,将每行文档数据的数据内容写入目标接口文档对应的文档信息对象;将文档信息对象转换为实体类信息对象;实体类信息对象包括用于生成实体类所需的元素信息;将实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到目标接口文档对应的目标实体类。该技术方案提高了实体类的生成效率和规范性。
Description
技术领域
本申请涉及技术开发技术领域,尤其涉及一种实体类生成方法及装置。
背景技术
在技术开发领域,通常需要对接大量的第三方系统接口,因此需要根据各第三方系统接口的接口文档,编写大量的接口文档的实体类。
目前主要有以下两种实现方式:一种是通过手工编写的方式,即对照接口文档,手工编写接口文档的实体类。由于开发人员的业务能力和业务熟练度存在差异,因此在手工编写的过程中,易出现生成实体类耗时较长的问题,从而导致实体类的生成效率较低。且由于开发人员的代码风格存在差异,因此难以规范化实体类的定义,从而导致生成实体类的规范性较差。另一种是通过编写简单代码的方式生成实体类,即对于特定且不可变的接口文档,通过代码生成最简单的实体类,这种方式同样存在因开发人员的代码风格不同而导致生成实体类的规范性较差的问题,从而使得生成的实体类的可维护性较差。
发明内容
本申请实施例的目的是提供一种实体类生成方法及装置,用以解决现有技术中实体类生成效率较低且规范性较差的问题。
为解决上述技术问题,本申请实施例是这样实现的:
一方面,本申请实施例提供一种实体类生成方法,包括:
获取待解析的目标接口文档;所述目标接口文档包括多行文档数据;
解析所述目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型;
根据每行文档数据对应的目标字段类型,将每行文档数据的数据内容写入所述目标接口文档对应的文档信息对象;
将所述文档信息对象转换为实体类信息对象;所述实体类信息对象包括用于生成实体类所需的元素信息;
将所述实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到所述目标接口文档对应的目标实体类。
采用本申请实施例的技术方案,通过获取待解析的目标接口文档,自动化地解析目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型,并根据每行文档数据对应的目标字段类型,自动化地将每行文档数据的数据内容写入目标接口文档对应的文档信息对象,从而将文档信息对象转换为实体类信息对象,实体类信息对象包括用于生成实体类所需的元素信息,进而将实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到目标接口文档对应的目标实体类。可见,在接口文档的实体类生成过程中,无需开发人员参与,因此能够避免因开发人员的业务能力及业务熟练度差异所导致的生成实体类耗时较长的问题,提高了实体类生成效率。并且,通过实体类生成模型生成接口文档对应的实体类,由于实体类生成模型的可通用性特征,因此能够适用于各类接口文档,从而能够适用于提供接口文档的各类系统接口(如第三方系统接口),不仅实现了生成实体类的通用性,且使得针对不同接口文档生成的实体类之间具有一致性,因此避免了因开发人员的代码风格不同所导致的实体类不规范的问题,提升了实体类的规范性,从而提升了实体类的可维护性。
另一方面,本申请实施例提供一种实体类生成装置,包括:
第一获取模块,用于获取待解析的目标接口文档;所述目标接口文档包括多行文档数据;
解析及确定模块,用于解析所述目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型;
写入模块,用于根据每行文档数据对应的目标字段类型,将每行文档数据的数据内容写入所述目标接口文档对应的文档信息对象;
第一转换模块,用于将所述文档信息对象转换为实体类信息对象;所述实体类信息对象包括用于生成实体类所需的元素信息;
输入及生成模块,用于将所述实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到所述目标接口文档对应的目标实体类。
再一方面,本申请实施例提供一种电子设备,包括处理器;以及被安排成存储计算机可执行指令的存储器,所述计算机可执行指令被配置由所述处理器执行,所述计算机可执行指令被所述处理器执行以实现上述的实体类生成方法。
再一方面,本申请实施例提供一种存储介质,用于存储计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述的实体类生成方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请一实施例的一种实体类生成方法的示意性流程图;
图2是根据本申请一实施例的一种执行器链的示意性框图;
图3是根据本申请一实施例的一种文档信息对象的双向链表关系的示意性框图;
图4是根据本申请一实施例的目标接口文档的示意图;
图5是根据本申请另一实施例的一种实体类生成方法的示意性流程图;
图6是根据本申请一实施例的一种实体类生成装置的结构示意图;
图7是根据本申请一实施例的一种电子设备的硬件结构示意图。
具体实施方式
本申请实施例的目的是提供一种实体类生成方法及装置,用以解决现有技术中实体类生成效率较低且规范性较差的问题。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
考虑到日常技术开发中,需要编写大量的接口文档的实体类。若是由开发人员对照各接口文档,手工编写各接口文档的实体类,由于开发人员的业务能力和业务熟练度存在差异,因此易出现生成实体类的耗时较长的问题,从而导致实体类的生成效率较低,且由于开发人员的代码风格存在差异,因此难以规范化实体类的定义,从而导致生成的实体类的规范性较差,也使得生成的实体类的可维护性较差。可见,在实体类生成过程中,如果能够自动化地根据接口文档生成对应的实体类,将会节省实体类的生成时间,且能在一定程度上确保实体类的规范性。本申请通过自动化地解析接口文档生成对应的实体类,无需开发人员参与,节省了实体类的生成时间,提高了实体类的生成效率,且通过实体类生成模型生成实体类,使得针对不同接口文档生成的实体类之间具有一致性,因此确保了生成的实体类的规范性,从而确保了生成的实体类的可维护性。
图1是根据本申请一实施例的一种实体类生成方法的示意性流程图,如图1所示,该方法可包括:
S102,获取待解析的目标接口文档。
其中,目标接口文档是由开发人员编写的、用来描述系统所提供接口信息的文档,目标接口文档可包括多行文档数据。
S104,解析目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型。
其中,目标字段类型可以是请求接口名、请求接口中文名、响应接口名、响应接口中文名、请求字段或者响应字段。解析结果中可包括每行文档数据分别对应的目标字段类型和每行文档数据的数据内容。可选地,该处每行文档数据的数据内容并非是每行文档数据的原始内容,而是经过筛选、修改格式等处理后得到的内容,具体经过何种处理将在下述实施例中详述。可选地,请求字段中包括表头字段信息和入参数据,响应字段中包括表头字段信息和出参数据。
S106,根据每行文档数据对应的目标字段类型,将每行文档数据的数据内容写入目标接口文档对应的文档信息对象。
其中,文档信息对象中可预设各字段类型对应的位置,从而便于将每行文档数据的数据内容写入文档信息对象中相同字段类型(指与每行文档数据对应的目标字段类型相同)对应的位置处。比如,文档信息对象中可预设请求接口名对应的位置、预设请求接口中文名对应的位置、预设响应接口名对应的位置、预设响应接口中文名对应的位置、预设请求字段对应的位置、以及预设响应字段对应的位置。
可选地,文档信息对象可以是DocClassDefine对象(Java语言中的一种对象),DocClassDefine对象中可预设请求接口名对应的位置、预设请求接口中文名对应的位置、预设请求字段对应的位置、预设响应接口名对应的位置、预设响应接口中文名对应的位置、以及预设响应字段对应的位置,DocClassDefine对象中还包括请求响应标识和双向链表关系,DocClassDefine对象内部有一个DocDefine类型的数组字段用于存储每行文档数据的数据内容。
S108,将文档信息对象转换为实体类信息对象。
其中,实体类信息对象包括用于生成实体类所需的元素信息。可选地,元素信息可包括类名、公共信息父类名、公共信息接口名、字段信息、注解信息、注释、导入包信息等。字段信息为实体类的属性信息,字段信息可包括字段的访问修饰符、字段类型、字段名、字段默认值、字段注解、字段注释等。实体类信息对象的具体内容将在下述实施例中详述。
S110,将实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到目标接口文档对应的目标实体类。
采用本申请实施例的技术方案,通过获取待解析的目标接口文档,自动化地解析目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型,并根据每行文档数据对应的目标字段类型,自动化地将每行文档数据的数据内容写入目标接口文档对应的文档信息对象,从而将文档信息对象转换为实体类信息对象,实体类信息对象包括用于生成实体类所需的元素信息,进而将实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到目标接口文档对应的目标实体类。可见,在接口文档的实体类生成过程中,无需开发人员参与,因此能够避免因开发人员的业务能力及业务熟练度差异所导致的生成实体类耗时较长的问题,提高了实体类生成效率。并且,通过实体类生成模型生成接口文档对应的实体类,由于实体类生成模型的可通用性特征,因此能够适用于各类接口文档,从而能够适用于提供接口文档的各类系统接口(如第三方系统接口),不仅实现了生成实体类的通用性,且使得针对不同接口文档生成的实体类之间具有一致性,因此避免了因开发人员的代码风格不同所导致的实体类不规范的问题,提升了实体类的规范性,从而提升了实体类的可维护性。
在一个实施例中,针对获取到的待解析的目标接口文档,可基于Excel(电子表格)接口文档模板对目标接口文档进行解析,Excel接口文档模板中可包括多个sheet(工作表),每个sheet均包括请求和响应两部分,每个sheet分别用于解析一个目标接口文档。
其中,Excel接口文档模板的配置信息中存放有各个sheet的读取路径、各个sheet的读取次序等信息。本实施例中,可根据待解析的目标接口文档的数量和Excel接口文档模板的配置信息,确定读取哪一(些)sheet,每读取一个sheet,从线程池分配一个线程给接口文档解析任务,每个接口文档解析任务会从上而下依次读取目标接口文档的每行文档数据,并为每行文档数据创建一个ExcelEvent的中间对象,用于存储该行文档数据。创建的ExcelEvent的中间对象无需暂存,直接传递给执行器链,执行器链中包括多个匹配器,各匹配器用于对文档数据进行匹配及解析处理,执行器链对文档数据的处理过程将在下述实施例中详述。
本实施例中,接口文档解析任务通过为每行文档数据创建ExcelEvent的中间对象,可实现对ExcelEvent的中间对象前后的编程语言的解耦效果,即可以采用与生成的实体类相同或不同的编程语言编写接口文档。例如,生成的实体类为Java实体类,但接口文档可以是基于Python编程语言编写的接口文档,也可以是基于Java编程语言编写的接口文档。
本实施例中,多个sheet的模板内容可相同或不同,每个sheet的模板内容可包括请求接口名、请求接口中文名、请求字段的表头字段信息(比如编号、字段码、中文名、类型、长度、列表值、必输、默认值等)、入参数据、响应接口名、响应接口中文名、响应字段的表头字段信息(与请求字段的表头字段信息一致)、出参数据等。在实际应用中,根据具体的实体类生成需求,可以不在sheet的模板内容中设置请求接口中文名和响应接口中文名,本申请实施例对此不作限定。
可选地,请求字段的表头字段信息和响应字段的表头字段信息在表头字段数量、表头字段类型和表头字段顺序上保持一致。比如,请求字段的表头字段数量为8个,请求字段的表头字段类型包括编号、字段码、中文名、类型、长度、列表值、必输和默认值,请求字段的表头字段顺序依次为编号、字段码、中文名、类型、长度、列表值、必输、默认值,那么,响应字段的表头字段数量需为8个,响应字段的表头字段类型需包括编号、字段码、中文名、类型、长度、列表值、必输和默认值,响应字段的表头字段顺序需依次为编号、字段码、中文名、类型、长度、列表值、必输、默认值。示例性地,请求字段的表头字段信息如表一所示,那么,响应字段的表头字段信息应如表二所示。
表一
编号 | 字段码 | 中文名 | 类型 | 长度 | 列表值 | 必输 | 默认值 |
表二
编号 | 字段码 | 中文名 | 类型 | 长度 | 列表值 | 必输 | 默认值 |
示例性地,Excel接口文档模板中的一个sheet的模板内容可包括请求接口名、请求接口中文名、请求字段的表头字段信息(包括编号、字段码、中文名、类型、长度、列表值、必输和默认值)、入参数据、响应接口名、响应接口中文名、响应字段的表头字段信息(与请求字段的表头字段信息一致)和出参数据,如表三所示。
表三
其中,入参数据(即表三中第四行)可包括多行,表三中仅示意性地展示了一行,多行入参数据之后需要紧跟响应接口名,以标识请求部分的文档数据读取完毕,之后读取到的都是响应部分的文档数据。
本实施例中,对于请求字段的表头字段信息和响应字段的表头字段信息中的编号这一表头字段类型,若入参数据或出参数据中所有数据编号(即表头字段类型“编号”所对应的数据内容)均为空,则表征所有入参数据对应的字段等级相同或所有出参数据对应的字段等级相同。若入参数据或出参数据中所有数据编号不为空,则多行入参数据或多行出参数据中,从上往下须从1开始递增+1,比如,从1递增至2,从2递增至3等,不允许从1直接递增至3。
在入参数据或出参数据中所有数据编号不为空的情况下,数据编号升级须遵循逐级往上升的原则,如表四所示,允许从1升级至1.1,从2.1升级至2.1.1等,不允许从1直接升级至2.1;数据编号降级须遵循降到上一个数据编号的父级+1、爷级+1等原则,如表四所示,允许从1.1降级至2,从2.1.1降级至3等,不允许从1.1降级至1。若入参数据或出参数据中的数据编号不满足上述的数据编号升级的原则或数据编号降级的原则,则终止当前的接口文档解析任务,并输出用于提示目标接口文档的编号异常的提示信息。
表四
编号 | 字段码 |
1 | frz_oprn_flg |
1.1 | frz_num |
2 | cust_acct_num |
2.1 | acc_nm |
2.1.1 | frz_instr_src |
3 | sub_acct_serl_num |
本实施例中,基于Excel接口文档模板对目标接口文档进行解析,实现了对目标接口文档的自动化解析效果,为后续实施例中自动化地生成接口文档的实体类提供了数据基础,且使得得到的解析结果更加规范化、统一化。
在一个实施例中,在执行接口文档解析任务之前,可根据Excel接口文档模板的模板内容和请求响应标识,创建目标接口文档对应的文档信息对象。文档信息对象中可预设各字段类型对应的位置,从而便于将每行文档数据的数据内容写入文档信息对象中相同字段类型(指与每行文档数据对应的目标字段类型相同)对应的位置处。比如,文档信息对象中可预设请求接口名对应的位置、预设请求接口中文名对应的位置、预设响应接口名对应的位置、预设响应接口中文名对应的位置、预设请求字段对应的位置、以及预设响应字段对应的位置。文档信息对象中还可设置请求响应标识和双向链表关系。
可选地,文档信息对象的表征方式可以是表格、字符串数组等。在实际应用中,根据具体的实体类生成需求,文档信息对象还可采用其他表征方式来表征,本申请实施例对此不作限定。
可选地,可采用如表三所示的表格来表征文档信息对象,用于表征文档信息对象的表格除表三所列举的内容外,还包括用于定义请求响应标识和双向链表关系的单元格。
若采用字符串数组表征文档信息对象,则文档信息对象所包含的各项信息可存储在字符串数组的不同行中。
在一个实施例中,在执行接口文档解析任务时,解析目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型,可通过如下步骤A1或者通过如下步骤C1-C3来实现。
在一个实施例中,针对每行文档数据,解析文档数据,根据解析结果确定文档数据对应的目标字段类型的具体实现方式均有:
步骤A1,将文档数据与多个第一预设关键字中的至少一个进行匹配,将与文档数据相匹配的第一预设关键字对应的字段类型确定为目标字段类型。
其中,目标字段类型可包括请求接口名、响应接口名、请求字段、响应字段中的其中一种。可选地,目标字段类型还可以是请求接口中文名或者响应接口中文名,请求字段中包括表头字段信息和入参数据,响应字段中包括表头字段信息和出参数据,表头字段信息可包括编号、字段码、中文名、类型、长度、列表值、必输、默认值等。
其中,多个第一预设关键字包括至少一种字段类型对应的预设关键字。可选地,多个第一预设关键字可包括请求接口名对应的预设关键字、请求接口中文名对应的预设关键字、响应接口名对应的预设关键字、响应接口中文名对应的预设关键字、编号对应的预设关键字、字段码对应的预设关键字、中文名对应的预设关键字、类型对应的预设关键字、长度对应的预设关键字、列表值对应的预设关键字、必输对应的预设关键字、默认值对应的预设关键字等。
本实施例中,在将文档数据与多个第一预设关键字中的至少一个进行匹配时,可按照多个第一预设关键字的排列顺序依次匹配,或者,并行执行文档数据与多个第一预设关键字的匹配。可选地,按照多个第一预设关键字的排列顺序依次匹配,可执行为:通过执行器链对文档数据进行匹配。
本实施例中,在文档数据中存在第一预设关键字时,可确定文档数据与该第一预设关键字相匹配,并可将该第一预设关键字对应的字段类型确定为目标字段类型。其中,请求接口名对应的预设关键字所对应的字段类型为请求接口名,请求接口中文名对应的预设关键字所对应的字段类型为请求接口中文名,响应接口名对应的预设关键字所对应的字段类型为响应接口名,响应接口中文名对应的预设关键字所对应的字段类型为响应接口中文名,编号对应的预设关键字、字段码对应的预设关键字、中文名对应的预设关键字、类型对应的预设关键字、长度对应的预设关键字、列表值对应的预设关键字、必输对应的预设关键字和默认值对应的预设关键字所对应的字段类型均为请求字段或者响应字段。例如,文档数据中存在请求接口名对应的预设关键字,可确定文档数据与请求接口名对应的预设关键字相匹配,并可将请求接口名对应的预设关键字所对应的字段类型(即请求接口名)确定为目标字段类型。
本实施例中,通过将目标接口文档的每行文档数据与多个第一预设关键字中的至少一个进行匹配,从而将与文档数据相匹配的第一预设关键字对应的字段类型确定为目标字段类型,简单、快捷地实现了对待解析的每行文档数据所属字段类型的确定,有利于实现对文档数据的快速解析。
在一个实施例中,在通过执行器链对文档数据进行匹配时,可将接口文档解析任务为每行文档数据创建的ExcelEvent的中间对象传递给预设的执行器链,从而根据执行器链中的各个匹配器对每行文档数据进行匹配及解析处理,得到解析结果。其中,文档数据与哪一匹配器相匹配,该行文档数据对应的目标字段类型就与哪一匹配器对应的字段类型相同。解析结果中包括每行文档数据分别对应的目标字段类型和每行文档数据的数据内容。
可选地,预设的执行器链可包括请求接口名匹配器、响应接口名匹配器、请求表头匹配器、响应表头匹配器、入参匹配器、出参匹配器、TailWork等。TailWork是位于执行器链的尾端的执行器,只有经过入参匹配器、出参匹配器解析后的文档数据的数据内容会流向TailWork,TailWork对流入的数据内容进一步处理后,写入目标接口文档对应的文档信息对象中。请求接口名匹配器对应的字段类型为请求接口名和/或请求接口中文名,响应接口名匹配器对应的字段类型为响应接口名和/或响应接口中文名,请求表头匹配器对应的字段类型为请求字段的表头字段信息,响应表头匹配器对应的字段类型为响应字段的表头字段信息,入参匹配器对应的字段类型为入参数据,出参匹配器对应的字段类型为出参数据。
本实施例中,针对多个匹配器,可预先确定各个匹配器的优先级顺序,从而根据各个匹配器的优先级顺序依次将各个匹配器注册到执行器链,输入的ExcelEvent的中间对象遍历执行器链,以尝试与各个匹配器进行匹配,若匹配上,则通过匹配器对文档数据进行解析,以得到解析结果。示例性地,各个匹配器的优先级顺序为:请求接口名匹配器、响应接口名匹配器、请求表头匹配器、响应表头匹配器、入参匹配器、出参匹配器、TailWork,那么,根据各个匹配器的优先级顺序依次将各个匹配器注册到执行器链后,得到的执行器链可如图2所示。
下面以图2所示的执行器链,详细说明各匹配器对文档数据的匹配及解析处理。
针对输入请求接口名匹配器的文档数据,若该行文档数据与请求接口名对应的预设关键字相匹配,则获取该行文档数据中预设关键字后的第一个非空字符串直到为空截止,作为请求接口名;若该行文档数据与请求接口中文名对应的预设关键字相匹配,则获取该行文档数据中预设关键字后的第一个非空字符串直到为空截止,作为请求接口中文名。若该行文档数据与请求接口名对应的预设关键字及请求接口中文名对应的预设关键字均不匹配,则将该行文档数据输入响应接口名匹配器。
本实施例中,在获取到请求接口名之后,可将请求接口名写入目标接口文档对应的文档信息对象中预设请求接口名对应的位置处。在文档信息对象中预设请求接口名对应的位置处写入了请求接口名的情况下,将文档信息对象中的请求响应标识置为True,标识从该行文档数据开始,后面的文档数据都为请求部分的文档数据。
针对输入响应接口名匹配器的文档数据,若该行文档数据与响应接口名对应的预设关键字相匹配,则获取该行文档数据中预设关键字后的第一个非空字符串直到为空截止,作为响应接口名;若该行文档数据与响应接口中文名对应的预设关键字相匹配,则获取该行文档数据中预设关键字后的第一个非空字符串直到为空截止,作为响应接口中文名。
本实施例中,在获取到响应接口名之后,可将响应接口名写入目标接口文档对应的文档信息对象中预设响应接口名对应的位置处。在文档信息对象中预设响应接口名对应的位置处写入了响应接口名的情况下,将文档信息对象中的请求响应标识置为False,标识从该行文档数据开始,后面的文档数据都为响应部分的文档数据。
针对输入请求表头匹配器的文档数据,若该行文档数据与表头字段信息对应的预设关键字(可包括编号对应的预设关键字、字段码对应的预设关键字、中文名对应的预设关键字、类型对应的预设关键字、长度对应的预设关键字、列表值对应的预设关键字、必输对应的预设关键字、默认值对应的预设关键字等)相匹配,则可确定该行文档数据匹配上了请求表头匹配器。示例性地,字段码对应的预设关键字为字段名、字段、字段英文名等,若该行文档数据中包含字段名、字段、字段英文名中的任意一项或多项,则可确定该行文档数据与字段码对应的预设关键字相匹配。
在该行文档数据与请求表头匹配器相匹配的情况下,可根据该行文档数据与各预设关键字的匹配顺序,确定各表头字段类型(比如编号、字段码、中文名、类型、长度、列表值、必输和默认值)所在的列索引位置,以便后续解析到入参数据的时候,根据各表头字段类型所在的列索引位置,确定各个列与入参数据的数据内容之间的对应关系。其中,文档数据对应的目标字段类型为入参数据时,该行文档数据的解析结果可封装到字符串数组中,从而根据各表头字段类型所在的列索引位置,就可以确定字符串数组中每一索引位置处所对应的表头字段类型,比如,字段码所在的列索引位置为2,则在字符串数组中索引2处所对应的表头字段类型为字段码,即索引2处是字段码的值。
示例性地,在某行文档数据与各预设关键字的匹配顺序如表五所示的情况下,可确定各表头字段类型所在的列索引位置如下:编号-0,字段码-1,中文名-2,类型-3,长度-4,列表值-5,必输-6,默认值-7。在某行文档数据与各预设关键字的匹配顺序如表六所示的情况下,可确定各表头字段类型所在的列索引位置如下:编号-4,字段码-2,中文名-1,类型-3,长度-0,列表值-6,必输-5,默认值-7。
表五
编号 | 字段码 | 中文名 | 类型 | 长度 | 列表值 | 必输 | 默认值 |
表六
长度 | 中文名 | 字段码 | 类型 | 编号 | 必输 | 列表值 | 默认值 |
本实施例中,能够根据文档数据与各预设关键字的匹配顺序,确定各表头字段类型所在的列索引位置,从而根据各表头字段类型所在的列索引位置,就可以确定字符串数组中每一索引位置处所对应的表头字段类型,无需限定各表头字段类型的位置,实现了对表头字段信息的宽松匹配效果,且能够实现对动态设置的表头字段信息的灵活匹配,使得请求表头匹配器的适用性更优。
针对输入响应表头匹配器的文档数据,若该行文档数据与表头字段信息对应的预设关键字(可包括编号对应的预设关键字、字段码对应的预设关键字、中文名对应的预设关键字、类型对应的预设关键字、长度对应的预设关键字、列表值对应的预设关键字、必输对应的预设关键字、默认值对应的预设关键字等)相匹配,则可确定该行文档数据匹配上了响应表头匹配器。
在该行文档数据与响应表头匹配器相匹配的情况下,可根据该行文档数据与各预设关键字的匹配顺序,确定各表头字段类型所在的列索引位置,以便后续解析到出参数据的时候,根据各表头字段类型所在的列索引位置,确定各个列与出参数据的数据内容之间的对应关系。其中,文档数据对应的目标字段类型为出参数据时,该行文档数据的解析结果可封装到字符串数组中,从而根据各表头字段类型所在的列索引位置,就可以确定字符串数组中每一索引位置处所对应的表头字段类型,比如,字段码所在的列索引位置为2,则在字符串数组中索引2处所对应的表头字段类型为字段码,即索引2处是字段码的值。
在该行文档数据与响应表头匹配器相匹配的情况下,可判断请求字段的表头字段信息和响应字段的表头字段信息在表头字段数量、表头字段类型和表头字段顺序上是否一致,若否,则可以输出用于提示目标接口文档解析失败的提示信息,实现了及时终止表头字段信息异常的接口文档解析任务的效果,节约了计算资源。
针对输入入参匹配器的文档数据,可根据各请求字段的表头字段类型(比如编号、字段码、中文名、类型、长度、列表值、必输、默认值等)所在的列索引位置,确定用于封装每行文档数据的解析结果的字符串数组中每一索引位置处所对应的表头字段类型,并对各入参数据对应的文档数据进行解析处理,得到各表头字段类型分别对应的数据内容。
其中,对各入参数据对应的文档数据进行解析处理,可包括如下步骤B1-B4:
步骤B1,将字段码对应的文档数据进行驼峰命名处理,即第一个单词以小写字母开始,从第二个单词开始以后的每个单词的首字母都采用大写字母,例如:myFirstName、myLastName。
步骤B2,根据文档数据类型与实体类对应的指定数据类型之间的映射关系,将每行文档数据的文档数据类型进行转换。指定数据类型为生成实体类所需的元素信息对应的数据类型。转换的具体过程将在下述实施例中详述。
步骤B3,针对长度对应的文档数据,过滤非数字字符,如果存在一个数字,则为最大值;如果存在两个数字,则分别为最小值和最大值;如果类型为bigdecimal,且存在两个数字,则第一个数字是总长度,第二个数字是小数位。
假设过滤非数字字符之后,得到的文档数据为(1),则最大长度为1;假设过滤非数字字符之后,得到的文档数据为(dada1),则最大长度为1;假设过滤非数字字符之后,得到的文档数据为(1dada,a2,d3n,4),则最小长度为1,最大长度为2;假设过滤非数字字符之后,得到的文档数据为(10,2,3,4)且类型为bigdecimal,则总长度为10,小数位2,整数为8。
步骤B4,针对编号、中文名、列表值、必输和默认值分别对应的文档数据,将各文档数据的原始内容确定为用于写入目标接口文档对应的文档信息对象的数据内容。
针对输入出参匹配器的文档数据,可根据各响应字段的表头字段类型(比如编号、字段码、中文名、类型、长度、列表值、必输、默认值等)所在的列索引位置,确定用于封装每行文档数据的解析结果的字符串数组中每一索引位置处所对应的表头字段类型,并对各出参数据对应的文档数据进行解析处理,得到各表头字段类型分别对应的数据内容。
其中,对各出参数据对应的文档数据进行解析处理,可参见上述步骤B1-B4,此处不再赘述。
针对输入TailWork的文档数据,TailWork对流入的数据内容进一步处理后,写入目标接口文档对应的文档信息对象中。TailWork对流入的数据内容的进一步处理可以是:根据每行文档数据对应的数据编号与上一行文档数据对应的数据编号之间“.”的个数差值,判断每行文档数据与上一行文档数据之间的嵌套关系,从而根据嵌套关系,准确地将每行文档数据写入文档信息对象中。
其中,若某行文档数据对应的数据编号与上一行文档数据对应的数据编号之间“.”的个数差值等于1,则说明存在编号升级,该行文档数据属于上一行文档数据的嵌套对象。例如,某行文档数据对应的数据编号为1.1,上一行文档数据对应的数据编号为1,两者之间“.”的个数差值等于1,数据编号为1.1的文档数据是数据编号为1的文档数据的嵌套对象。
在文档信息对象为DocClassDefine对象的情况下,假设上一行文档数据写入的文档信息对象为节点current对应的DocClassDefine对象,那么,可创建节点next对应的DocClassDefine对象用于表征子级文档信息对象,并可建立节点current对应的DocClassDefine对象和节点next对应的DocClassDefine对象之间的双向链表关系,通过这一双向链表关系,可在节点current对应的DocClassDefine对象和节点next对应的DocClassDefine对象之间相互切换。然后,将节点current对应的DocClassDefine对象指向节点next对应的DocClassDefine对象,并该行文档数据添加到节点next对应的DocClassDefine对象中进行正确存储。
若某行文档数据对应的数据编号与上一行文档数据对应的数据编号之间“.”的个数差值大于1,则输出用于提示目标接口文档的编号异常的提示信息,以及时终止编号异常的接口文档解析任务,从而节约计算资源。
若某行文档数据对应的数据编号与上一行文档数据对应的数据编号之间“.”的个数差值等于0,则说明该行文档数据与上一行文档数据的数据编号等级相同,可将该行文档数据写入到上一行文档数据所写入的文档信息对象中。
若某行文档数据对应的数据编号与上一行文档数据对应的数据编号之间“.”的个数差值小于0,则说明存在数据编号降级,差值为-1代表与上一行文档数据的父级等级相同,差值为-2代表与上一行文档数据的爷级等级相同,以此类推。本实施例中,可通过已建立的双向链表关系,准确确定出该行文档数据应写入的文档信息对象,从而将该行文档数据写入。
可选地,数据编号等级相同且指向同一父级文档信息对象的文档数据会写入同一个文档信息对象中。文档信息对象内部建立有双向链表关系,始终有一个初始节点root关联整个接口文档的所有信息。比如,存在爷-父-子的嵌套关系的3行文档数据,那么,会新建3个文档信息对象用于表示爷、父、子,并有如下的互相引用关系:root=爷<=>父<=>子,即初始节点为爷级文档信息对象,父是爷的子级文档信息对象,子是父的子级文档信息对象。
示例性地,针对存在爷-父-子的嵌套关系的文档数据,文档信息对象内部建立的双向链表关系可如图3所示,310为爷级文档信息对象,320为父级文档信息对象,330为子级文档信息对象。假设310中写入的是数据编号为1和2的文档数据的数据内容,那么,320中的两个父级文档信息对象中分别写入的可以是数据编号为1.1和2.1的文档数据的数据内容,330中的两个子级文档信息对象中分别写入的可以是数据编号为1.1.1和2.1.1的文档数据的数据内容。
在一个实施例中,如下述步骤C1-C3,针对每行文档数据,解析文档数据,根据解析结果确定文档数据对应的目标字段类型的具体实现方式均有:
步骤C1,将文档数据与多个第二预设关键字中的至少一个进行匹配。
其中,每个第二预设关键字对应的字段类型可以是请求接口名或者响应接口名,多个第二预设关键字包括至少一种字段类型对应的预设关键字。可选地,多个第二预设关键字可包括请求接口名对应的预设关键字、响应接口名对应的预设关键字中的至少一项。将文档数据与多个第二预设关键字中的至少一个进行匹配,可执行为:将文档数据与请求接口名对应的预设关键字和响应接口名对应的预设关键字分别进行匹配;或者,将文档数据与请求接口名对应的预设关键字进行匹配;或者,将文档数据与响应接口名对应的预设关键字进行匹配。
步骤C2,若文档数据与多个第二预设关键字中的至少一个相匹配,则将与文档数据相匹配的第二预设关键字对应的字段类型确定为目标字段类型。
本实施例中,若文档数据与请求接口名对应的预设关键字相匹配,则将请求接口名对应的预设关键字所对应的字段类型(即请求接口名)确定为目标字段类型。若文档数据与响应接口名对应的预设关键字相匹配,则将响应接口名对应的预设关键字所对应的字段类型(即响应接口名)确定为目标字段类型。
步骤C3,若文档数据与多个第二预设关键字均不匹配,则将第一文档数据的目标字段类型确定为请求字段,以及将第二文档数据的目标字段类型确定为响应字段。
其中,第一文档数据在目标接口文档中位置位于第三文档数据和第四文档数据之间,第二文档数据在目标接口文档中位置位于第四文档数据之后,第三文档数据为目标接口文档中字段类型为请求接口名的文档数据,第四文档数据为目标接口文档中字段类型为响应接口名的文档数据。示例性地,如图4所示,以10行“XXXXXX”表征目标接口文档,在410为第三文档数据,420为第四文档数据的情况下,430为第一文档数据,440为第二文档数据。
本实施例中,通过确定出请求接口名对应的第三文档数据和响应接口名对应的第四文档数据,从而根据每行文档数据在目标接口文档中的位置准确得到目标接口文档中请求字段对应的第一文档数据,以及响应字段对应的第二文档数据,提升了确定出的每行文档数据分别对应的目标字段类型的准确度。
在一个实施例中,在将第一文档数据的目标字段类型确定为请求字段,以及将第二文档数据的目标字段类型确定为响应字段(即步骤C3)之后,可根据目标字段类型为请求字段的文档数据,确定请求字段的表头字段信息,并根据目标字段类型为响应字段的文档数据,确定响应字段的表头字段信息,若请求字段和响应字段分别对应的表头字段信息不相匹配,则输出第二提示信息;若请求字段和响应字段分别对应的表头字段信息相匹配,则继续执行接口文档解析任务。
其中,表头字段信息可包括表头字段数量、表头字段类型、表头字段顺序中的至少一项,第二提示信息用于提示目标接口文档解析失败。可选地,根据目标字段类型为请求字段的文档数据,确定请求字段的表头字段信息的具体实现方式可参考上述实施例中,通过请求表头匹配器对文档数据进行匹配的相关内容,根据目标字段类型为响应字段的文档数据,确定响应字段的表头字段信息的具体实现方式可参考上述实施例中,通过响应表头匹配器对文档数据进行匹配的相关内容。
可选地,请求字段和响应字段分别对应的表头字段信息不相匹配可以是请求字段的表头字段信息和响应字段的表头字段信息在表头字段数量、表头字段类型、表头字段顺序中的至少一项上不一致。
例如,请求字段的表头字段数量为8个,请求字段的表头字段类型包括编号、字段码、中文名、类型、长度、列表值、必输和默认值,请求字段的表头字段顺序依次为编号、字段码、中文名、类型、长度、列表值、必输、默认值,那么,在响应字段的表头字段数量为7个,或者响应字段的表头字段类型包括编号、中文名、字段码、类型、长度、列表值、必输和默认值,或者响应字段的表头字段顺序依次为编号、字段码、中文名、长度、类型、列表值、必输、默认值时,可确定请求字段和响应字段分别对应的表头字段信息不相匹配。而在响应字段的表头字段数量为8个,响应字段的表头字段类型包括编号、字段码、中文名、类型、长度、列表值、必输和默认值,且响应字段的表头字段顺序依次为编号、字段码、中文名、类型、长度、列表值、必输、默认值时,可确定请求字段和响应字段分别对应的表头字段信息相匹配。
本实施例中,通过在确定请求字段和响应字段分别对应的表头字段信息不相匹配时,输出用于提示目标接口文档解析失败的提示信息,有利于及时终止表头字段信息异常的接口文档解析任务,节约了计算资源。
在一个实施例中,在根据每行文档数据对应的目标字段类型,将每行文档数据的数据内容写入目标接口文档对应的文档信息对象(即S106)之前,可执行如下步骤D1-D2:
步骤D1,获取目标映射关系。其中,目标映射关系为文档数据类型与实体类对应的指定数据类型之间的映射关系,指定数据类型为生成实体类所需的元素信息对应的数据类型。
示例性地,在实体类对应的指定数据类型为Java类型的情况下,文档数据类型与Java类型之间的映射关系可如表七所示。
表七
文档数据类型 | Java类型 |
obj/ref/object | 引用类 |
list | List<引用类> |
varchar/varchar2/char | String |
string/str/datestring | String |
date | LocalDate |
timestamp/time | LocalDateTime |
decimal/bigdecimal | BigDecimal |
float | Float |
double | Double |
int/integer | Integer |
步骤D2,根据目标映射关系将每行文档数据的文档数据类型进行转换。
本实施例中,若目标映射关系中包括文档数据对应的文档数据类型与指定数据类型之间的映射关系,则将文档数据的文档数据类型转换为映射关系所映射的指定数据类型。
示例性地,沿用表七所示的映射关系,在文档数据的文档数据类型为date时,可将文档数据的文档数据类型转换为LocalDate。
本实施例中,若目标映射关系中不包括文档数据对应的文档数据类型与指定数据类型之间的映射关系,则将文档数据的文档数据类型转换为实体类对应的默认数据类型。
示例性地,在实体类为Java实体类时,默认数据类型可为String。沿用表七所示的映射关系,在文档数据的文档数据类型为long时,由于long不是映射关系中包括的文档数据类型,因此可将文档数据的文档数据类型转换为String。
本实施例中,若存在嵌套关系的文档数据的文档数据类型为非引用类型,则默认强制转换为ref。如表八所示,字段b存在数据编号升级情况,但是字段b的文档数据类型是long,由于long不是映射关系(沿用表七所示的映射关系)中包括的文档数据类型,因此可将字段b的文档数据类型转换为ref。
表八
编号 | 字段 | 中文名 | 类型 |
2 | b | long | |
2.1 | c | string |
本实施例中,若普通的(即不存在嵌套关系的)文档数据的文档数据类型为引用类型,则默认强制转换为实体类对应的默认数据类型(如实体类为Java实体类时,默认数据类型为string)。如表九所示,字段a不存在数据编号升级情况,但是字段a的文档数据类型是引用类型ref,与映射关系(沿用表七所示的映射关系)中的记载不符,因此可将字段a的文档数据类型转换为string。
表九
编号 | 字段 | 中文名 | 类型 |
1 | a | ref | |
2 | b | string |
本实施例中,通过获取文档数据类型与实体类对应的指定数据类型之间的映射关系,并根据映射关系,将每行文档数据的文档数据类型转换为实体类对应的指定数据类型或者实体类对应的默认数据类型,有利于确保写入文档信息对象中的数据内容的规范性。
在一个实施例中,针对不存在嵌套关系的文档数据,根据文档数据对应的目标字段类型,将文档数据的数据内容写入目标接口文档对应的文档信息对象(即S106),可执行为:将字段类型为请求接口名的文档数据的数据内容写入预设请求接口名对应的位置处;将字段类型为响应接口名的文档数据的数据内容写入预设响应接口名对应的位置处;将字段类型为请求字段的文档数据的数据内容写入预设请求字段对应的位置处;将字段类型为响应字段的文档数据的数据内容写入预设响应字段对应的位置处。
其中,文档信息对象中包括预设请求接口名、预设响应接口名、预设请求字段和预设响应字段。
可选地,将字段类型为请求接口名的文档数据的数据内容写入预设请求接口名对应的位置处,即为:对预设请求接口名对应的位置处进行赋值。将字段类型为响应接口名的文档数据的数据内容写入预设响应接口名对应的位置处,即为:对预设响应接口名对应的位置处进行赋值。将字段类型为请求字段的文档数据的数据内容写入预设请求字段对应的位置处,即为:对预设请求字段对应的位置处进行赋值。将字段类型为响应字段的文档数据的数据内容写入预设响应字段对应的位置处,即为:对预设响应字段对应的位置处进行赋值。
本实施例中,通过将每行文档数据的数据内容,按照各自的字段类型写入目标接口文档对应的文档信息对象中与各字段类型对应的位置处,有效确保了在文档信息对象中对各数据内容的准确存储。
在一个实施例中,每行文档数据均对应有各自的数据编号。针对存在嵌套关系的文档数据,如下述步骤E1-E4,针对目标字段类型为请求字段或者响应字段的每行文档数据,将文档数据的数据内容写入文档信息对象的具体实现方式均有:
步骤E1,根据数据编号,确定当前行文档数据对应的当前字段等级。
步骤E2,若当前字段等级与在目标接口文档中位置位于当前行文档数据上一行的文档数据对应的字段等级相同,则将当前行文档数据的数据内容写入上一行文档数据对应的第一文档信息子对象。
可选地,可根据当前行文档数据对应的数据编号与上一行文档数据对应的数据编号之间“.”的个数差值,判断当前字段等级与上一行文档数据对应的字段等级是否相同;若差值为0,则当前字段等级与上一行文档数据对应的字段等级相同;若差值等于1,则当前字段等级属于上一行文档数据对应的字段等级的下一级或上一级。
步骤E3,若当前字段等级低于上一行文档数据对应的字段等级,则根据第一文档信息子对象与第二文档信息子对象之间的双向链表关系,将当前行文档数据的数据内容写入第二文档信息子对象,第二文档信息子对象属于第一文档信息子对象的嵌套对象。
其中,相对于第二文档信息子对象,第一文档信息子对象为父级文档信息对象;相对于第一文档信息子对象,第二文档信息子对象为子级文档信息对象。
步骤E4,若当前字段等级高于上一行文档数据对应的字段等级,则根据第一文档信息子对象与第三文档信息子对象之间的双向链表关系,将当前行文档数据的数据内容写入第三文档信息子对象,第一文档信息子对象属于第三文档信息子对象的嵌套对象。
其中,相对于第三文档信息子对象,第一文档信息子对象为子级文档信息对象;相对于第一文档信息子对象,第三文档信息子对象为父级文档信息对象。
本实施例中,通过每行文档数据对应的数据编号,能够准确地确定出当前行文档数据对应的当前字段等级与上一行文档数据对应的字段等级之间的上下级关系,从而能够将存在嵌套关系的文档数据准确地写入相应的文档信息子对象中,有利于实现对复杂嵌套类接口文档的准确解析。
在一个实施例中,若当前字段等级与上一行文档数据对应的字段等级之间的等级差大于1,则输出第一提示信息,第一提示信息用于提示目标接口文档的编号异常。
可选地,可根据当前行文档数据对应的数据编号与上一行文档数据对应的数据编号之间“.”的个数差值,判断当前字段等级与上一行文档数据对应的字段等级之间的等级差是否大于1,一个“.”表征一个等级差。
例如,当前字段等级为1.1.1,上一行文档数据对应的字段等级为1,由于二者之间差了两个“.”,因此可确定当前字段等级与上一行文档数据对应的字段等级之间的等级差大于1。
本实施例中,通过在确定当前字段等级与上一行文档数据对应的字段等级之间的等级差大于1时,输出用于提示目标接口文档的编号异常的提示信息,有利于及时终止编号异常的接口文档解析任务,节约了计算资源,且有利于确保最终生成的接口文档的实体类的准确度。
在一个实施例中,在将当前行文档数据的数据内容写入第二文档信息子对象(即步骤E3)之前,可创建当前行文档数据对应的第二文档信息子对象,并建立第二文档信息子对象和第一文档信息子对象之间的双向链表关系。其中,第二文档信息子对象为第一文档信息子对象的嵌套对象。
可选地,若以图2所示的执行器链对文档数据进行解析,从而根据每行文档数据对应的目标字段类型,将每行文档数据的数据内容写入目标接口文档对应的文档信息对象,则在写入每行文档数据时,在当前行文档数据的字段等级低于上一行文档数据对应的字段等级的情况下,实时创建较低等级的文档信息子对象(如第二文档信息子对象),以及创建双向链表关系。根据上述步骤E1-E4可确定出,第一文档信息子对象属于第三文档信息子对象的嵌套对象,第二文档信息子对象属于第一文档信息子对象的嵌套对象。因此,在将当前行文档数据的数据内容写入第一文档信息子对象之前,可创建文档数据对应的第一文档信息子对象,并建立第一文档信息子对象和第三文档信息子对象之间的双向链表关系。
可选地,双向链表关系的创建可参考图3所示的实施例,各文档信息子对象之间的双向链表关系可如图3所示,310即为第三文档信息子对象,320即为第一文档信息子对象,330即为第二文档信息子对象。
本实施例中,通过在当前行文档数据对应的当前字段等级低于上一行文档数据对应的字段等级时,创建当前行文档数据对应的第二文档信息子对象,并建立第二文档信息子对象和第一文档信息子对象之间的双向链表关系,为实现将存在嵌套关系的文档数据准确地写入相应的文档信息子对象中提供了基础,有利于实现对复杂嵌套类接口文档的准确解析。
在一个实施例中,在创建当前行文档数据对应的第二文档信息子对象之后,可将第一文档信息子对象中写入时间最晚的一行文档数据的数据内容删除,以及将删除的文档数据的数据内容写入第二文档信息子对象,根据删除的文档数据和第一文档信息子对象对应的接口名,确定第二文档信息子对象对应的接口名。
其中,接口名可包括请求接口名、请求接口中文名、响应接口名、响应接口中文名等。
可选地,将删除的文档数据的数据内容写入第二文档信息子对象,可执行为:将删除的文档数据的数据内容赋值给第二文档信息子对象的属性,该属性中的内容(即删除的文档数据的数据内容)为第二文档信息子对象的请求接口名、请求接口中文名、响应接口名、响应接口中文名等字段类型对应的字段值的来源。
可选地,根据删除的文档数据和第一文档信息子对象对应的接口名,确定第二文档信息子对象对应的接口名,即是根据第二文档信息子对象的属性中记载的字段码的字段值和第一文档信息子对象对应的接口名,确定第二文档信息子对象对应的接口名。例如,第二文档信息子对象的属性中记载的字段码的字段值为cust_acct_num,第一文档信息子对象对应的请求接口名为QuotaInfo,则可确定第二文档信息子对象对应的请求接口名为:QuotaInfoCustAcctNumReq。
本实施例中,通过删除第一文档信息子对象中写入时间最晚的一行文档数据的数据内容,并根据删除的文档数据和第一文档信息子对象对应的接口名,确定第二文档信息子对象对应的接口名,使得根据第二文档信息子对象对应的接口名,即可准确、直观地体现出各文档信息子对象之间的嵌套关系,有利于后续实施例中根据各文档信息子对象直接生成嵌套类。
下面举例介绍如何创建文档信息对象,以及将每行文档数据的数据内容写入目标接口文档对应的文档信息对象。
在执行接口文档解析任务之前,首先创建1个文档信息对象赋值给初始节点root,并赋值给节点current。
然后,执行接口文档解析任务,从上而下依次读取目标接口文档的每行文档数据,对每行文档数据进行匹配及解析处理。当解析到文档数据的数据编号为1时,将该行文档数据的数据内容写入节点current对应的文档信息对象中;当解析到文档数据的数据编号为2时,由于数据编号2和数据编号1的数据编号等级相同,因此数据编号2的文档数据的数据内容仍写入节点current对应的文档信息对象中;当解析到文档数据的数据编号为2.1时,由于数据编号2.1较之上一行文档数据的数据编号2为升级编号,因此可将节点current对应的文档信息对象中数据编号2的文档数据的数据内容删除,并创建1个新的文档信息对象赋值给节点next,将数据编号2的文档数据的数据内容赋值给节点next对应的文档信息对象的属性,再将节点current指向节点next,从而将数据编号2.1的文档数据的数据内容写入节点next对应的文档信息对象。
当解析到文档数据的数据编号为3时,由于数据编号3较之上一行文档数据的数据编号2.1为降级编号,因此可获取节点next对应的文档信息对象的父级文档信息对象,即获取节点current对应的文档信息对象,从而将数据编号3的文档数据的数据内容写入节点current对应的文档信息对象中。
在一个实施例中,实体类信息对象中可包括如下信息:包名、依赖包名、类名、继承父类、实现接口、类上的文档注释、类上注解和属性字段。属性字段可包括字段注释、字段注解、字段的访问修饰符、字段类型、字段名、字段默认值等。将文档信息对象转换为实体类信息对象(即S108),可执行为如下步骤F1-F8:
步骤F1,从配置信息中获取包名。其中,若基于Excel接口文档模板对目标接口文档进行解析,则配置信息为Excel接口文档模板的配置信息,Excel接口文档模板中的多个sheet可共用一个配置信息,或者,一个sheet对应一个配置信息。步骤F2,确定注解(包括类上注解和字段注解)、父类、接口名和字段类型的依赖包名。步骤F3,确定类名:最外层的类以请求接口名或响应接口名作为类名;嵌套的类名为父类的接口名与嵌套字段的字段名的组合。步骤F4,从配置信息中获取继承父类。如步骤F1所述,配置信息可为Excel接口文档模板的配置信息。步骤F5,从配置信息中获取实现接口。如步骤F1所述,配置信息可为Excel接口文档模板的配置信息。步骤F6,将解析得到的请求接口中文名或响应接口中文名确定为类上的文档注释。步骤F7,通过现有的注解插件确定类上注解。
步骤F8,确定属性字段:将表头字段信息中的中文名对应的字段值确定为字段注释;通过现有的注解插件确定字段注解;将private作为字段的访问修饰符;将表头字段信息中的类型对应的字段值转换为实体类对应的指定数据类型(如Java类型);将表头字段信息中的字段码对应的字段值确定为字段名;将表头字段信息中的默认值对应的字段值确定为字段默认值。
下面通过一具体业务场景来说明本申请提供的实体类生成方法。在一业务场景中,文档信息对象的表征方式为表格,在将基于Excel接口文档模板解析目标接口文档所得到的各行文档数据的数据内容写入文档信息对象后,可得到如表十和表十一所示的文档信息对象,表十一属于表十的嵌套对象。需要说明的是,表十和表十一仅是对文档信息对象的示意性展示,请求响应标识和双向链表关系未体现在表十和表十一中。
该业务场景中,父级文档信息对象中的请求接口名对应的字段值为QuotaInfo,请求接口中文名对应的字段值为产品额度信息,请求字段及响应字段分别包含编号、字段码、中文名、类型、长度、列表值、默认值和必输分别对应的字段值,响应接口名对应的字段值为RespQueryQuota,响应接口中文名对应的字段值为产品额度信息查询响应报文。子级文档信息对象中的请求接口名对应的字段值为QuotaInfoCustAcctNumReq,请求接口中文名对应的字段值为产品额度信息#客户账号,请求字段分别包含编号、字段码、中文名、类型、长度、列表值、默认值和必输分别对应的字段值。图5所示实施例以此场景为例进行说明。
表十
表十一
图5是根据本申请另一实施例的一种实体类生成方法的示意性流程图,如图5所示,该方法可包括:
S501,获取待解析的目标接口文档,目标接口文档包括多行文档数据。
S502,针对每行文档数据,将文档数据与多个第二预设关键字中的至少一个进行匹配,根据匹配结果确定出字段类型为请求接口名的第三文档数据,以及确定出字段类型为响应接口名的第四文档数据。
本实施例中,每个第二预设关键字对应的字段类型可以是请求接口名或者响应接口名,多个第二预设关键字包括至少一种字段类型对应的预设关键字。可选地,多个第二预设关键字可包括请求接口名对应的预设关键字、响应接口名对应的预设关键字中的至少一项。将文档数据与多个第二预设关键字中的至少一个进行匹配,可执行为:将文档数据与请求接口名对应的预设关键字和响应接口名对应的预设关键字分别进行匹配;或者,将文档数据与请求接口名对应的预设关键字进行匹配;或者,将文档数据与响应接口名对应的预设关键字进行匹配。
其中,若文档数据与请求接口名对应的预设关键字相匹配,则将请求接口名对应的预设关键字所对应的字段类型(即请求接口名)确定为目标字段类型,该文档数据即为第三文档数据。若文档数据与响应接口名对应的预设关键字相匹配,则将响应接口名对应的预设关键字所对应的字段类型(即响应接口名)确定为目标字段类型,该文档数据即为第四文档数据。
S503,将在目标接口文档中位置位于第三文档数据和第四文档数据之间的第一文档数据的目标字段类型确定为请求字段,将在目标接口文档中位置位于第四文档数据之后的第二文档数据的目标字段类型确定为响应字段。
在一个实施例中,在将第一文档数据的目标字段类型确定为请求字段,以及将第二文档数据的目标字段类型确定为响应字段之后,可根据目标字段类型为请求字段的文档数据,确定请求字段的表头字段信息,并根据目标字段类型为响应字段的文档数据,确定响应字段的表头字段信息,在请求字段和响应字段分别对应的表头字段信息不相匹配的情况下,输出用于提示目标接口文档解析失败的第二提示信息。其中,表头字段信息可包括表头字段数量、表头字段类型、表头字段顺序中的至少一项。
S504,针对目标字段类型为请求字段或者响应字段的每行文档数据,根据数据编号,确定当前行文档数据对应的当前字段等级。之后执行S505或S506。
其中,每行文档数据均对应有各自的数据编号。可根据当前行文档数据对应的数据编号与在目标接口文档中位置位于文档数据上一行的文档数据对应的数据编号之间“.”的个数差值,判断当前字段等级与上一行文档数据对应的字段等级是否相同;若差值为0,则当前字段等级与上一行文档数据对应的字段等级相同;若差值等于1,则当前字段等级属于上一行文档数据对应的字段等级的下一级或上一级。若当前字段等级与上一行文档数据对应的字段等级之间的等级差大于1,则输出用于提示目标接口文档的编号异常的第一提示信息。
S505,若当前字段等级与在目标接口文档中位置位于文档数据上一行的文档数据对应的字段等级相同,则将当前行文档数据的数据内容写入上一行文档数据对应的文档信息对象。之后执行S507。
如表十所示,数据编号1对应的文档数据、数据编号2对应的文档数据和数据编号3对应的文档数据的字段等级相同,因此,可将数据编号1对应的数据内容、数据编号2对应的数据内容、以及数据编号3对应的数据内容均写入表十所示的文档信息对象中。
在一个实施例中,在将当前行文档数据的数据内容写入文档信息对象之前,可获取文档数据类型与实体类对应的指定数据类型之间的映射关系,根据映射关系将当前行文档数据的文档数据类型进行转换。其中,若映射关系中包括当前行文档数据对应的文档数据类型与指定数据类型之间的映射关系,则将当前行文档数据的文档数据类型转换为映射关系所映射的指定数据类型;若映射关系中不包括当前行文档数据对应的文档数据类型与指定数据类型之间的映射关系,则将当前行文档数据的文档数据类型转换为实体类对应的默认数据类型。
S506,若当前字段等级低于上一行文档数据对应的字段等级,则根据文档信息对象与子级文档信息对象之间的双向链表关系,将当前行文档数据的数据内容写入子级文档信息对象。
本实施例中,在将当前行文档数据的数据内容写入子级文档信息对象(即表十一所示的文档信息对象)之前,可创建当前行文档数据对应的子级文档信息对象(即表十一所示的文档信息对象),并建立文档信息对象(即表十所示的文档信息对象)和子级文档信息对象(即表十一所示的文档信息对象)之间的双向链表关系。
在创建当前行文档数据对应的子级文档信息对象之后,可将文档信息对象中写入时间最晚的一行文档数据的数据内容删除,以及将删除的文档数据的数据内容写入子级文档信息对象,根据删除的文档数据和文档信息对象对应的接口名,确定子级文档信息对象对应的接口名。
如表十一所示,数据编号3.1对应的文档数据的字段等级低于数据编号3对应的文档数据的字段等级,因此可根据表十和表十一之间的双向链表关系,将数据编号3.1对应的数据内容写入表十一所示的子级文档信息对象中。
S507,将各文档信息对象转换为实体类信息对象,实体类信息对象包括用于生成实体类所需的元素信息。
本实施例中,需要将表十所示的文档信息对象和表十一所示的文档信息对象分别转换为实体类信息对象,具体转换方式可参考上述步骤F1-F8,此处不再赘述。
S508,将各实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到目标接口文档对应的目标实体类。
示例性地,可根据表十所示的数据编号为3的文档数据的数据内容,以及表十一所示的数据编号为3.1的文档数据的数据内容、数据编号为3.2的文档数据的数据内容,将各文档信息对象转换为实体类信息对象,从而将各实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到目标接口文档对应的目标实体类,该目标实体类为嵌套类,该嵌套类包括类名为QuotaInfo的实体类(父类)和类名为QuotaInfoCustAcctNumReq的嵌套对象实体类(子类)。
示例性地,类名为QuotaInfo的实体类如下所示:
package req;
import javax.validation.Valid;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import lombok.Getter;
import com.alibaba.fastjson.annotation.JSONField;
import java.io.Serializable;
import org.hibernate.validator.constraints.Length;
/**
*产品额度信息
*<p>
*doc-obj自动生成
*
*@date 2022-01-05
*@author doc-obj
*@since 1.0
*/
@Setter
@Getter
public class QuotaInfo implements Serializable{
/**
*客户账号
*/
@JSONField(name="cust_acct_num")
@Valid
private QuotaInfoCustAcctNumReq custAcctNum;
}
示例性地,类名为QuotaInfoCustAcctNumReq的嵌套对象实体类如下所示:
package req;
import lombok.Setter;
import lombok.Getter;
import com.alibaba.fastjson.annotation.JSONField;
import java.io.Serializable;
import org.hibernate.validator.constraints.Length;
/**
*产品额度信息#客户账号
*<p>
*doc-obj自动生成
*
*@date 2022-01-05
*@author doc-obj
*@since 1.0
*/
@Setter
@Getter
public class QuotaInfoCustAcctNumReq implements Serializable{
/**
*账户名称
*/
@JSONField(name="acc_nm")
@Length(max=750,message="账户名称[acc_nm]最大长度为[750]")
private String accNm;
/**
*冻结种类
*/
@JSONField(name="frz_catg")
@Length(max=2,message="冻结种类[frz_catg]最大长度为[2]")
private String frzCatg;
}
上述S501-S508的具体过程在上述实施例中已进行详细说明,此处不再赘述。
采用本申请实施例的技术方案,通过获取待解析的目标接口文档,自动化地解析目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型,并根据每行文档数据对应的目标字段类型,自动化地将每行文档数据的数据内容写入目标接口文档对应的文档信息对象,从而将文档信息对象转换为实体类信息对象,实体类信息对象包括用于生成实体类所需的元素信息,进而将实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到目标接口文档对应的目标实体类。可见,在接口文档的实体类生成过程中,无需开发人员参与,因此能够避免因开发人员的业务能力及业务熟练度差异所导致的生成实体类耗时较长的问题,提高了实体类生成效率。并且,通过实体类生成模型生成接口文档对应的实体类,由于实体类生成模型的可通用性特征,因此能够适用于各类接口文档,从而能够适用于提供接口文档的各类系统接口(如第三方系统接口),不仅实现了生成实体类的通用性,且使得针对不同接口文档生成的实体类之间具有一致性,因此避免了因开发人员的代码风格不同所导致的实体类不规范的问题,提升了实体类的规范性,从而提升了实体类的可维护性。
综上,已经对本主题的特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作可以按照不同的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序,以实现期望的结果。在某些实施方式中,多任务处理和并行处理可以是有利的。
以上为本申请实施例提供的实体类生成方法,基于同样的思路,本申请实施例还提供一种实体类生成装置。
图6是根据本申请一实施例的一种实体类生成装置的结构示意图,请参考图6,实体类生成装置可包括:
第一获取模块610,用于获取待解析的目标接口文档;目标接口文档包括多行文档数据;
解析及确定模块620,用于解析目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型;
写入模块630,用于根据每行文档数据对应的目标字段类型,将每行文档数据的数据内容写入目标接口文档对应的文档信息对象;
第一转换模块640,用于将文档信息对象转换为实体类信息对象;实体类信息对象包括用于生成实体类所需的元素信息;
输入及生成模块650,用于将实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到目标接口文档对应的目标实体类。
在一个实施例中,解析及确定模块620包括:
匹配及确定单元,用于针对每行文档数据,将文档数据与多个第一预设关键字中的至少一个进行匹配,将与文档数据相匹配的第一预设关键字对应的字段类型确定为目标字段类型;
其中,目标字段类型包括请求接口名、响应接口名、请求字段、响应字段中的其中一种。
在一个实施例中,解析及确定模块620包括:
匹配单元,用于针对每行文档数据,将文档数据与多个第二预设关键字中的至少一个进行匹配,第二预设关键字对应的字段类型包括请求接口名或响应接口名,多个第二预设关键字包括至少一种字段类型对应的预设关键字;
第一确定单元,用于若文档数据与多个第二预设关键字中的至少一个相匹配,则将与文档数据相匹配的第二预设关键字对应的字段类型确定为目标字段类型;
第二确定单元,用于若文档数据与多个第二预设关键字均不匹配,则将第一文档数据的目标字段类型确定为请求字段,以及将第二文档数据的目标字段类型确定为响应字段;其中,第一文档数据在目标接口文档中位置位于第三文档数据和第四文档数据之间,第二文档数据在目标接口文档中位置位于第四文档数据之后,第三文档数据为目标接口文档中字段类型为请求接口名的文档数据,第四文档数据为目标接口文档中字段类型为响应接口名的文档数据。
在一个实施例中,文档信息对象包括预设请求接口名、预设响应接口名、预设请求字段和预设响应字段;写入模块630包括:
第一写入单元,用于将字段类型为请求接口名的文档数据的数据内容写入预设请求接口名对应的位置处;将字段类型为响应接口名的文档数据的数据内容写入预设响应接口名对应的位置处;将字段类型为请求字段的文档数据的数据内容写入预设请求字段对应的位置处;将字段类型为响应字段的文档数据的数据内容写入预设响应字段对应的位置处。
在一个实施例中,每行文档数据均对应有各自的数据编号;
针对目标字段类型为请求字段或者响应字段的每行文档数据,写入模块630包括:
第三确定单元,用于根据数据编号,确定文档数据对应的当前字段等级;
第二写入单元,用于若当前字段等级与在目标接口文档中位置位于文档数据上一行的文档数据对应的字段等级相同,则将文档数据的数据内容写入上一行文档数据对应的第一文档信息子对象;
第三写入单元,用于若当前字段等级低于上一行文档数据对应的字段等级,则根据第一文档信息子对象与第二文档信息子对象之间的双向链表关系,将文档数据的数据内容写入第二文档信息子对象,第二文档信息子对象属于第一文档信息子对象的嵌套对象;
第四写入单元,用于若当前字段等级高于上一行文档数据对应的字段等级,则根据第一文档信息子对象与第三文档信息子对象之间的双向链表关系,将文档数据的数据内容写入第三文档信息子对象,第一文档信息子对象属于第三文档信息子对象的嵌套对象。
在一个实施例中,实体类生成装置还包括:
创建模块,用于在将文档数据的数据内容写入第二文档信息子对象之前,创建文档数据对应的第二文档信息子对象;
建立模块,用于建立第二文档信息子对象和第一文档信息子对象之间的双向链表关系。
在一个实施例中,实体类生成装置还包括:
删除及写入模块,用于在创建文档数据对应的第二文档信息子对象之后,将第一文档信息子对象中写入时间最晚的一行文档数据的数据内容删除,以及将删除的文档数据的数据内容写入第二文档信息子对象;
第一确定模块,用于根据删除的文档数据和第一文档信息子对象对应的接口名,确定第二文档信息子对象对应的接口名。
在一个实施例中,实体类生成装置还包括:
第一输出模块,用于若当前字段等级与上一行文档数据对应的字段等级之间的等级差大于1,则输出第一提示信息,第一提示信息用于提示目标接口文档的编号异常。
在一个实施例中,实体类生成装置还包括:
第二获取模块,用于在根据每行文档数据对应的目标字段类型,将每行文档数据的数据内容写入目标接口文档对应的文档信息对象之前,获取目标映射关系,目标映射关系为文档数据类型与实体类对应的指定数据类型之间的映射关系,指定数据类型为生成实体类所需的元素信息对应的数据类型;
第二转换模块,用于根据目标映射关系将每行文档数据的文档数据类型进行转换;
其中,若目标映射关系中包括文档数据对应的文档数据类型与指定数据类型之间的映射关系,则将文档数据的文档数据类型转换为映射关系所映射的指定数据类型;
若目标映射关系中不包括文档数据对应的文档数据类型与指定数据类型之间的映射关系,则将文档数据的文档数据类型转换为实体类对应的默认数据类型。
在一个实施例中,实体类生成装置还包括:
第二确定模块,用于在将第一文档数据的目标字段类型确定为请求字段,以及将第二文档数据的目标字段类型确定为响应字段之后,根据目标字段类型为请求字段的文档数据,确定请求字段的表头字段信息;根据目标字段类型为响应字段的文档数据,确定响应字段的表头字段信息;表头字段信息包括表头字段数量、表头字段类型、表头字段顺序中的至少一项;
第二输出模块,用于若请求字段和响应字段分别对应的表头字段信息不相匹配,则输出第二提示信息,第二提示信息用于提示目标接口文档解析失败。
采用本申请实施例的装置,通过获取待解析的目标接口文档,自动化地解析目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型,并根据每行文档数据对应的目标字段类型,自动化地将每行文档数据的数据内容写入目标接口文档对应的文档信息对象,从而将文档信息对象转换为实体类信息对象,实体类信息对象包括用于生成实体类所需的元素信息,进而将实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到目标接口文档对应的目标实体类。可见,在接口文档的实体类生成过程中,无需开发人员参与,因此能够避免因开发人员的业务能力及业务熟练度差异所导致的生成实体类耗时较长的问题,提高了实体类生成效率。并且,通过实体类生成模型生成接口文档对应的实体类,由于实体类生成模型的可通用性特征,因此能够适用于各类接口文档,从而能够适用于提供接口文档的各类系统接口(如第三方系统接口),不仅实现了生成实体类的通用性,且使得针对不同接口文档生成的实体类之间具有一致性,因此避免了因开发人员的代码风格不同所导致的实体类不规范的问题,提升了实体类的规范性,从而提升了实体类的可维护性。
本领域的技术人员应可理解,图6中的实体类生成装置能够用来实现前文所述的实体类生成方法,其中的细节描述应与前文方法部分描述类似,为避免繁琐,此处不另赘述。
基于同样的思路,本申请实施例还提供一种电子设备,如图7所示。电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器701和存储器702,存储器702中可以存储有一个或一个以上的应用程序或数据。其中,存储器702可以是短暂存储或持久存储。存储在存储器702的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对电子设备中的一系列计算机可执行指令。更进一步地,处理器701可以设置为与存储器702通信,在电子设备上执行存储器702中的一系列计算机可执行指令。电子设备还可以包括一个或一个以上电源703,一个或一个以上有线或无线网络接口704,一个或一个以上输入输出接口705,一个或一个以上键盘706。
具体在本实施例中,电子设备包括有存储器,以及一个或一个以上的应用程序,其中一个或者一个以上应用程序存储于存储器中,且一个或者一个以上应用程序可以包括一个或一个以上模块,且每个模块可以包括对电子设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上应用程序包含用于进行以下计算机可执行指令:
获取待解析的目标接口文档;目标接口文档包括多行文档数据;
解析目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型;
根据每行文档数据对应的目标字段类型,将每行文档数据的数据内容写入目标接口文档对应的文档信息对象;
将文档信息对象转换为实体类信息对象;实体类信息对象包括用于生成实体类所需的元素信息;
将实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到目标接口文档对应的目标实体类。
采用本申请实施例的设备,通过获取待解析的目标接口文档,自动化地解析目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型,并根据每行文档数据对应的目标字段类型,自动化地将每行文档数据的数据内容写入目标接口文档对应的文档信息对象,从而将文档信息对象转换为实体类信息对象,实体类信息对象包括用于生成实体类所需的元素信息,进而将实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到目标接口文档对应的目标实体类。可见,在接口文档的实体类生成过程中,无需开发人员参与,因此能够避免因开发人员的业务能力及业务熟练度差异所导致的生成实体类耗时较长的问题,提高了实体类生成效率。并且,通过实体类生成模型生成接口文档对应的实体类,由于实体类生成模型的可通用性特征,因此能够适用于各类接口文档,从而能够适用于提供接口文档的各类系统接口(如第三方系统接口),不仅实现了生成实体类的通用性,且使得针对不同接口文档生成的实体类之间具有一致性,因此避免了因开发人员的代码风格不同所导致的实体类不规范的问题,提升了实体类的规范性,从而提升了实体类的可维护性。
本申请实施例还提出了一种存储介质,该存储介质存储一个或多个计算机程序,该一个或多个计算机程序包括计算机可执行指令,该计算机可执行指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行上述的实体类生成方法,并具体用于执行:
获取待解析的目标接口文档;目标接口文档包括多行文档数据;
解析目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型;
根据每行文档数据对应的目标字段类型,将每行文档数据的数据内容写入目标接口文档对应的文档信息对象;
将文档信息对象转换为实体类信息对象;实体类信息对象包括用于生成实体类所需的元素信息;
将实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到目标接口文档对应的目标实体类。
采用本申请实施例的存储介质,通过获取待解析的目标接口文档,自动化地解析目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型,并根据每行文档数据对应的目标字段类型,自动化地将每行文档数据的数据内容写入目标接口文档对应的文档信息对象,从而将文档信息对象转换为实体类信息对象,实体类信息对象包括用于生成实体类所需的元素信息,进而将实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到目标接口文档对应的目标实体类。可见,在接口文档的实体类生成过程中,无需开发人员参与,因此能够避免因开发人员的业务能力及业务熟练度差异所导致的生成实体类耗时较长的问题,提高了实体类生成效率。并且,通过实体类生成模型生成接口文档对应的实体类,由于实体类生成模型的可通用性特征,因此能够适用于各类接口文档,从而能够适用于提供接口文档的各类系统接口(如第三方系统接口),不仅实现了生成实体类的通用性,且使得针对不同接口文档生成的实体类之间具有一致性,因此避免了因开发人员的代码风格不同所导致的实体类不规范的问题,提升了实体类的规范性,从而提升了实体类的可维护性。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (13)
1.一种实体类生成方法,其特征在于,包括:
获取待解析的目标接口文档;所述目标接口文档包括多行文档数据;
解析所述目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型;
根据每行文档数据对应的目标字段类型,将每行文档数据的数据内容写入所述目标接口文档对应的文档信息对象;
将所述文档信息对象转换为实体类信息对象;所述实体类信息对象包括用于生成实体类所需的元素信息;
将所述实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到所述目标接口文档对应的目标实体类。
2.根据权利要求1所述的方法,其特征在于,针对每行文档数据,解析所述文档数据,根据解析结果确定所述文档数据对应的目标字段类型的具体实现方式均有:
将所述文档数据与多个第一预设关键字中的至少一个进行匹配,将与所述文档数据相匹配的第一预设关键字对应的字段类型确定为所述目标字段类型;
其中,所述目标字段类型包括请求接口名、响应接口名、请求字段、响应字段中的其中一种。
3.根据权利要求1所述的方法,其特征在于,针对每行文档数据,解析所述文档数据,根据解析结果确定所述文档数据对应的目标字段类型的具体实现方式均有:
将所述文档数据与多个第二预设关键字中的至少一个进行匹配,所述第二预设关键字对应的字段类型包括请求接口名或响应接口名,所述多个第二预设关键字包括至少一种字段类型对应的预设关键字;
若所述文档数据与所述多个第二预设关键字中的至少一个相匹配,则将与所述文档数据相匹配的第二预设关键字对应的字段类型确定为所述目标字段类型;
若所述文档数据与所述多个第二预设关键字均不匹配,则将第一文档数据的目标字段类型确定为请求字段,以及将第二文档数据的目标字段类型确定为响应字段;其中,所述第一文档数据在所述目标接口文档中位置位于第三文档数据和第四文档数据之间,所述第二文档数据在所述目标接口文档中位置位于第四文档数据之后,所述第三文档数据为所述目标接口文档中字段类型为所述请求接口名的文档数据,所述第四文档数据为所述目标接口文档中字段类型为响应接口名的文档数据。
4.根据权利要求2或3所述的方法,其特征在于,所述文档信息对象包括预设请求接口名、预设响应接口名、预设请求字段和预设响应字段;
所述根据所述文档数据对应的目标字段类型,将所述文档数据的数据内容写入所述目标接口文档对应的文档信息对象,包括:
将字段类型为所述请求接口名的文档数据的数据内容写入所述预设请求接口名对应的位置处;将字段类型为所述响应接口名的文档数据的数据内容写入所述预设响应接口名对应的位置处;将字段类型为所述请求字段的文档数据的数据内容写入所述预设请求字段对应的位置处;将字段类型为所述响应字段的文档数据的数据内容写入所述预设响应字段对应的位置处。
5.根据权利要求2或3所述的方法,其特征在于,每行文档数据均对应有各自的数据编号;
针对目标字段类型为所述请求字段或者所述响应字段的每行文档数据,将所述文档数据的数据内容写入所述文档信息对象的具体实现方式均有:
根据所述数据编号,确定所述文档数据对应的当前字段等级;
若所述当前字段等级与在所述目标接口文档中位置位于所述文档数据上一行的文档数据对应的字段等级相同,则将所述文档数据的数据内容写入上一行文档数据对应的第一文档信息子对象;
若所述当前字段等级低于所述上一行文档数据对应的字段等级,则根据所述第一文档信息子对象与第二文档信息子对象之间的双向链表关系,将所述文档数据的数据内容写入所述第二文档信息子对象,所述第二文档信息子对象属于所述第一文档信息子对象的嵌套对象;
若所述当前字段等级高于所述上一行文档数据对应的字段等级,则根据所述第一文档信息子对象与第三文档信息子对象之间的双向链表关系,将所述文档数据的数据内容写入所述第三文档信息子对象,所述第一文档信息子对象属于所述第三文档信息子对象的嵌套对象。
6.根据权利要求5所述的方法,其特征在于,所述将所述文档数据的数据内容写入第二文档信息子对象之前,所述方法还包括:
创建所述文档数据对应的第二文档信息子对象;
建立所述第二文档信息子对象和所述第一文档信息子对象之间的双向链表关系。
7.根据权利要求6所述的方法,其特征在于,所述创建所述文档数据对应的第二文档信息子对象之后,所述方法还包括:
将所述第一文档信息子对象中写入时间最晚的一行文档数据的数据内容删除,以及将删除的文档数据的数据内容写入所述第二文档信息子对象;
根据删除的文档数据和所述第一文档信息子对象对应的接口名,确定所述第二文档信息子对象对应的接口名。
8.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述当前字段等级与所述上一行文档数据对应的字段等级之间的等级差大于1,则输出第一提示信息,所述第一提示信息用于提示所述目标接口文档的编号异常。
9.根据权利要求1所述的方法,其特征在于,所述根据每行文档数据对应的目标字段类型,将每行文档数据的数据内容写入所述目标接口文档对应的文档信息对象之前,所述方法还包括:
获取目标映射关系,所述目标映射关系为文档数据类型与实体类对应的指定数据类型之间的映射关系,所述指定数据类型为生成所述实体类所需的元素信息对应的数据类型;
根据所述目标映射关系将每行文档数据的文档数据类型进行转换;
其中,若所述目标映射关系中包括所述文档数据对应的文档数据类型与指定数据类型之间的映射关系,则将所述文档数据的文档数据类型转换为所述映射关系所映射的指定数据类型;
若所述目标映射关系中不包括所述文档数据对应的文档数据类型与指定数据类型之间的映射关系,则将所述文档数据的文档数据类型转换为所述实体类对应的默认数据类型。
10.根据权利要求3所述的方法,其特征在于,所述将第一文档数据的目标字段类型确定为请求字段,以及将第二文档数据的目标字段类型确定为响应字段之后,所述方法还包括:
根据所述目标字段类型为所述请求字段的文档数据,确定所述请求字段的表头字段信息;根据所述目标字段类型为所述响应字段的文档数据,确定所述响应字段的表头字段信息;所述表头字段信息包括表头字段数量、表头字段类型、表头字段顺序中的至少一项;
若所述请求字段和所述响应字段分别对应的表头字段信息不相匹配,则输出第二提示信息,所述第二提示信息用于提示所述目标接口文档解析失败。
11.一种实体类生成装置,其特征在于,包括:
第一获取模块,用于获取待解析的目标接口文档;所述目标接口文档包括多行文档数据;
解析及确定模块,用于解析所述目标接口文档的每行文档数据,根据解析结果确定每行文档数据分别对应的目标字段类型;
写入模块,用于根据每行文档数据对应的目标字段类型,将每行文档数据的数据内容写入所述目标接口文档对应的文档信息对象;
第一转换模块,用于将所述文档信息对象转换为实体类信息对象;所述实体类信息对象包括用于生成实体类所需的元素信息;
输入及生成模块,用于将所述实体类信息对象输入预先部署的实体类生成模型进行实体类生成处理,得到所述目标接口文档对应的目标实体类。
12.一种电子设备,其特征在于,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述计算机可执行指令被配置由所述处理器执行,所述计算机可执行指令被所述处理器执行以实现如权利要求1-10任一项所述的实体类生成方法。
13.一种存储介质,其特征在于,所述存储介质用于存储计算机可执行指令,所述计算机可执行指令被处理器执行时实现如权利要求1-10任一项所述的实体类生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210452010.3A CN114816387A (zh) | 2022-04-24 | 2022-04-24 | 实体类生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210452010.3A CN114816387A (zh) | 2022-04-24 | 2022-04-24 | 实体类生成方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114816387A true CN114816387A (zh) | 2022-07-29 |
Family
ID=82509831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210452010.3A Pending CN114816387A (zh) | 2022-04-24 | 2022-04-24 | 实体类生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114816387A (zh) |
-
2022
- 2022-04-24 CN CN202210452010.3A patent/CN114816387A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111177176B (zh) | 数据检测方法、装置及存储介质 | |
US7873899B2 (en) | Mapping schemes for creating and storing electronic documents | |
CN109460220A (zh) | 报文预定义代码生成方法、装置、电子设备和存储介质 | |
CN106557307A (zh) | 业务数据的处理方法及处理系统 | |
CN115599359A (zh) | 一种代码生成方法、装置、设备及介质 | |
CN113791768B (zh) | 代码生成方法及装置、存储介质、终端 | |
CN112395339B (zh) | 系统间数据准入校验方法、装置、计算机设备和存储介质 | |
CN110955658B (zh) | 一种基于Java智能合约的数据组织和存储方法 | |
CN116450655A (zh) | 树形结构数据处理方法、装置、电子设备及存储介质 | |
US11868362B1 (en) | Metadata extraction from big data sources | |
CN114816387A (zh) | 实体类生成方法及装置 | |
CN115629763A (zh) | 目标代码的生成方法、npu指令的显示方法及装置 | |
CN112395818B (zh) | 基于SysML的硬件算法模型构建方法 | |
CN110941655A (zh) | 一种数据格式转换方法及装置 | |
CN114490651A (zh) | 数据存储方法及装置 | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 | |
CN115795187A (zh) | 资源访问方法、装置及设备 | |
CN114328486A (zh) | 基于模型的数据质量核查方法及装置 | |
CN111222015A (zh) | 一种异构xml映射生成文档方法 | |
CN110879710A (zh) | 一种rpg程序自动转成java程序的方法 | |
CN114528043B (zh) | 文件加载方法、装置、设备及计算机可读存储介质 | |
CN115378824B (zh) | 模型相似度确定方法、装置、设备及存储介质 | |
CN113792048B (zh) | 非关系型数据库的表单校验规则生成方法和系统 | |
CN117764034A (zh) | 基于FreeMarker模板引擎生成实体类实现属性校验的方法及系统 | |
CN117149775A (zh) | 拉链表的数据处理方法和装置 |
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 |