CN116755684B - OAS Schema的生成方法、装置、设备及介质 - Google Patents

OAS Schema的生成方法、装置、设备及介质 Download PDF

Info

Publication number
CN116755684B
CN116755684B CN202311031400.4A CN202311031400A CN116755684B CN 116755684 B CN116755684 B CN 116755684B CN 202311031400 A CN202311031400 A CN 202311031400A CN 116755684 B CN116755684 B CN 116755684B
Authority
CN
China
Prior art keywords
class
information
file
schema
oas
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
Application number
CN202311031400.4A
Other languages
English (en)
Other versions
CN116755684A (zh
Inventor
张联华
王首峰
欧阳晔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Asiainfo Technologies China Inc
Original Assignee
Asiainfo Technologies China Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Asiainfo Technologies China Inc filed Critical Asiainfo Technologies China Inc
Priority to CN202311031400.4A priority Critical patent/CN116755684B/zh
Publication of CN116755684A publication Critical patent/CN116755684A/zh
Application granted granted Critical
Publication of CN116755684B publication Critical patent/CN116755684B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • G06F8/355Round-trip engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种OAS Schema的生成方法、装置、设备以及存储介质,涉及软件开发技术领域。该方法包括:解析类图文件,并从解析后的文件中获取与类相关的信息;遍历与类相关的信息生成OAS的数据模型。本申请的实施能够对类图文件进行解析,根据解析结果自动生成OAS Schema,具体的,可以解析PlantUML类图文件,通过解析结果生成OAS Schema,并快速通过OAS Schema生成包含对OAS Schema进行增删改查等接口的OAS文件,降低手动编写和维护的工作量,耗时短,提高了开发效率,并能够快速迭代和修改,减少OAS Schema与领域模型不一致的可能。

Description

OAS Schema的生成方法、装置、设备及介质
技术领域
本申请涉及软件开发技术领域,具体而言,本申请涉及一种OAS Schema的生成方法、装置、设备及介质。
背景技术
随着现代社会科学技术的发展,计算机***已经成为各行各业所不可缺少的工具,而在其中起着核心作用的,则是计算机软件***。随着软件***在各行各业的日益渗透,其变得日益庞大,自身的问题也是越来越严重。现在的一个应用,常常会由几十人编写几十万到几百万行代码来完成。另一方面,应用是在一个不断变化的动态环境中生存和发展的,因此,应用就需要不断地维护——即部分地改写应用的一部分或新增功能。
在软件开发领域,随着应用规模的不断扩大,各个部分之间的集成和交互变得越来越复杂,要求也越来越高。RESTful(英文:Representational State Transfer,简称REST,REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful)由于其特有的平台无关、编程语言无关、结构清晰、易于理解、扩展方便等特性,正在被越来越多的厂商使用。其中,OpenAPI Specification(OAS,接口定义规范)。也被称为Swagger规范,是一种用于描述和定义RESTful Web服务的标准规范。它提供了一种统一的方式来描述API(应用程序编程接口)的结构、操作和交互,使得开发人员、API提供者和消费者能够更好地理解和使用API。
OAS Schema(OAS数据模型)在OAS中被广泛用于描述资源、请求参数和响应体的数据模型,通过OAS Schema可以定义资源的属性、数据类型、验证规则等,以确保API的请求和响应数据的准确性和一致性。然而,现有的OAS Schema是手工编写的,这需要花费大量的时间和精力,并且容易出现错误和与领域模型不一致的情况,导致需要多次修改和维护,降低了软件开发效率。
发明内容
本申请实施例提供了一种OAS Schema的生成方法、装置、设备及介质,可以解决现有的OAS Schema手工编写花费时间长,精力消耗大且容易出现错误和偏差问题。为了实现该目的,本申请实施例提供了如下几个方案。
根据本申请实施例的一个方面,提供了一种OAS Schema的生成方法,该方法包括:
解析类图文件,并从解析后的文件中获取与类相关的信息,所述信息包括与各个类分别对应的列表、类的属性以及类之间的关系信息;
根据所述与类相关的信息生成OAS的数据模型。
在一个可能的实现方式中,所述解析类图文件,并从解析后的文件中获取与类相关的信息,包括:
调用预设的解析对象解析所述类图文件,得到可处理数据结构的目标文件,所述解析对象包括所述类图文件对应的解析器或库;
从所述目标文件中提取与类相关的信息。
在一个可能的实现方式中,所述根据所述与类相关的信息生成OAS的数据模型,包括:
基于所述与类相关的信息调用预设OAS自动生成程序,生成数据模型,该数据模型中包括多个与类一一对应的Schema对象;
基于所述与类相关的信息确定所述数据模型中各Schema对象的第一信息;所述第一信息包括类名、类型以及属性列表的文本信息;
基于所述与类相关的信息确定所述数据模型中各Schema对象的第二信息,所述第二信息包括类的属性名称、数据类型、属性的约束以及与各类对应的Schema对象之间的引用关系对应的文本信息。
在一个可能的实现方式中,所述基于所述与类相关的信息确定所述数据模型中各Schema对象的第一信息,包括:
根据所述与类相关的信息在所述Schema对象的文本信息中定义类的名称、类型以及属性列表。
在一个可能的实现方式中,所述基于所述与类相关的信息确定所述数据模型中各Schema对象的第二信息,包括:
根据所述属性名称确定对应的Schema对象中类的属性名称、数据类型,并对所述Schema对象中属性的约束进行处理;
根据所述关系信息确定所述Schema对象之间的引用关系。
在一个可能的实现方式中,所述根据所述与类相关的信息生成OAS的数据模型,包括:
针对所述数据模型中的每个Schema对象生成对应的定义文件,保存所述定义文件和所述数据模型;
或,根据数据模型中的每个Schema对象生成OAS文件,所述OAS文件包括每个Schema对象对应的定义。
在一个可能的实现方式中,所述方法,还包括:
检测所述类图文件是否发生变化,所述变化包括所述类图文件中类的新增、删除、修改中的至少一种;
若确定所述类图文件发生变化,解析所述类图文件获取与类相关的信息,根据所述与类相关的信息更新已生成的数据模型或对新增的类生成新的数据模型,并同步更新已生成的OAS文件。
本申请提供一种OAS Schema的生成装置,所述装置,包括:
类图文件解析模块,用于解析类图文件解析类图文件,并从解析后的文件中获取与类相关的信息,所述信息包括与各个类分别对应的列表、类的属性以及类之间的关系信息;
数据模型生成模块,用于遍历所述与类相关的信息生成OAS的数据模型。
本申请提供一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现如上所述方法的步骤。
根据本申请实施例的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述方法的步骤。
本申请实施例提供的技术方案带来的有益效果是:
本申请提供的OAS Schema的生成方法解析类图文件,从解析后的文件中获取与类相关的信息,根据该信息中与各个类分别对应的列表、类的属性以及类之间的关系生成OASSchema。本申请实施例对类图文件进行解析,根据解析结果生成OAS Schema。因此,本申请实施例利用类图文件自动化生成OAS Schema,降低手动编写和维护的工作量,耗时短,提高了开发效率,并能够快速迭代和修改,减少OAS Schema与领域模型不一致的可能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单的介绍。
图1为本申请实施例提供的OAS Schema的生成方法的流程图;
图2为本申请提供的OAS Schema的生成方法另一实施例的流程图;
图3为本申请OAS Schema的生成方法一实施例的序列图;
图4为本申请实施例提供的用于生成OAS Schema的类图文件的示意图;
图5为本申请实施例提供的OAS Schema的生成装置的结构图;
图6为本申请实施例提供的电子设备的结构图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”指示实现为“A”,或者实现为“A”,或者实现为“A和B”。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式做进一步的详细描述。
下面通过对几个示例性实施方式的描述,对本发明实施例的技术方案以及本发明的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
OAS基于JSON或YAML格式,提供了一组结构化的规范和约定,用于定义API的各个方面,包括资源、路径、操作、参数、响应和安全性等。它的主要目标是使API文档易于理解、可读性强,并提供了一种交互式的方式来测试和调用API。
Schema在OAS中被广泛用于描述资源、请求参数和响应体的数据模型,通过Schema可以定义资源的属性、数据类型、验证规则等,以确保API的请求和响应数据的准确性和一致性。
在软件开发中,编写OAS的数据模型(Schema)是一个重要的任务。现有方案中,数据模型是手工编写的,然而手工编写数据模型存在以下问题。
1.错误和遗漏:手工编写数据模型容易出现错误和遗漏。人工操作容易犯错,可能会导致属性命名错误、数据类型错误或者缺少必要的字段。这些错误可能会导致API不能正确地解释或实现。
2.不一致性:在大型项目或团队中,手工编写Schema存在一致性的挑战。不同的开发人员可能有不同的编写风格和标准,导致Schema的格式和结构不一致。这使得维护和修改变得困难,并增加了理解和协作的难度。
3.费时费力:手工编写Schema是一项耗时的任务。Schema可能包含大量的字段和复杂的数据类型,手动编写需要花费大量的时间和精力。此外,当领域模型发生更改时,手工更新和调整Schema也需要额外的时间和努力。
4.缺乏可靠性和扩展性:手工编写Schema缺乏自动化和可靠性。人工编写的Schema难以自动验证和检查,可能导致潜在的错误和问题无法及时发现。此外,当需要扩展和更新领域模型时,手工编写的Schema难以自动适应变化,可能需要进行大量的修改和调整。
5.领域模型同步困难:手工编写的Schema与实际的领域模型之间的同步可能会存在困难。如果领域模型发生变化,需要手工更新Schema、API和领域模型以保持一致性,这需要额外的工作和管理。这可能导致API文档和实际领域模型之间的不一致,给用户和开发人员带来困惑。
本申请提供的OAS Schema的生成方法、装置、设备以及存储介质,旨在解决现有技术中存在的至少一个技术问题。
本申请实施例中提供了一种OAS Schema的生成方法,应用该方法的设备可以为手机、电脑、服务器、云平台以及其他能够用于数据模型生成的设备。如图1所示,该OASSchema(下面简称数据模型)的生成方法包括步骤S101-S102。
S101:解析类图文件,并从解析后的文件中获取与类相关的信息。
可选地,类图文件可以为PlantUML类图文件,也可以为序列图、用例图、活动图以及其他基于PlantUML技术的用于描述类信息的文件。其中,PlantUML是一种开源的绘图工具,它允许用户使用简单的文本描述来生成各种类型的图表,如类图、时序图、用例图、活动图等。它采用了基于文本的标记语言,使得图表的创建过程更加简单和可维护。
可选地,在解析类图文件前,执行该生成方法的设备可以根据输入的文件选择指令确定需要解析的类图文件,也可以根据输入的指令开启生成数据模型的工具,将输入该工具的类图文件确定为需要解析的类图文件。还可以根据使用对象的查询操作或输入的网址等标识类图文件所在位置的信息获取类图文件。
可选地,获取类图文件后,调用预设的解析对象(一些解析工具)解析类图文件,其中该解析对象为解析器或库。
在一个实施例中,该解析对象包括PlantUML Parser、Puml2Json、PlantUML ClassDiagram Parser中的至少一种。
可选地,与类相关的信息可以包括与各个类分别对应的列表、类的属性以及类之间的关系信息,该列表可以包括类名、类型等与类相关的信息。并且,为了便于后续处理通过预设的解析结构将类图文件解析为一种为可处理数据结构的目标文件。
在一个实施例中,可处理的数据结构可以为树形结构或JSON格式,该数据结构包括类名的列表、类的属性以及类的关系信息。该关系信息包括类之间的关系信息,如一对多的关系、一对一的关系、继承关系等。
在一个示例中,关系信息如下:
Person "1" *-->"1..*" Address: personAddress
其包括以下内容:
主类名称:Person
被关联类名称: Address
类之间的关系名称:personAddress
关联的数量限制规则:一个人可以包含1到多个地址,一个地址只能属于一个人。
S102:遍历与类相关的信息生成OAS的数据模型。
可选地,遍历与类相关的信息生成OAS的数据模型,包括:基于与类相关的信息调用预设OAS自动生成程序,生成数据模型,该数据模型中包括多个与类一一对应的Schema对象(类和Schema对象的数量一致);基于与类相关的信息确定数据模型中各Schema对象的第一信息;第一信息包括类名、类型以及属性列表对应的文本信息;基于与类相关的信息确定数据模型中各Schema对象的第二信息,第二信息包括数据模型的属性名称、数据类型、数据模型中属性的约束以及与各类对应的Schema对象之间的引用关系对应的文本信息。
在一个实施例中,根据与类相关的信息创建对应的数据模型(即OAS Schema),该数据Schema对象包括多个Schema对象,并且利用该与类相关的信息定义每个Schema对象中类的名称、类型(object)以及属性。在完成定义后,获取类的属性名称,将该类型的信息映射到数据模型的Schema对象中,确定Schema对象的属性名称(如根据类的属性名称确定数据模型支持的数据类型,如字符串、数字、布尔值等)。并根据与类相关的信息相应处理属性的约束,如最大长度、枚举值等,根据解析结果中的关系信息相应设置Schema对象之间的引用关系。
本申请实施例利用类图文件自动化生成OAS Schema,减少了手动编写和维护的工作量,耗时短,提高了开发效率,并能够快速迭代和修改,减少OAS Schema与领域模型不一致的可能。
可选地,本申请还提出一种OAS Schema的生成方法,如图2-图4所示,该方法包括:
S201:调用预设的解析对象解析类图文件,得到可处理数据结构的目标文件。
可选地,使用对象输入类图文件,该类图文件为与数据模型相关的文件,包括数据模型相关的各个类的信息,设备接收该类图文件后,调用预设的解析对象解析该类图文件。其中,该解析对象包括PlantUML Parser、Puml2Json、PlantUML Class Diagram Parser中的至少一种。
可选地,设备可以获取输入的类图文件的名称、编号、格式以及其他能够标识解析对象的信息,根据该信息确定该类图文件对应的解析对象,调用该解析对象执行解析操作。
在一个实施例中,类图文件为PlantUML类图文件,接收该类图文件,并调用该类图文件对应的解析对象,得到该类图文件的解析结果。
可选地,作为解析结果的目标文件使用可处理数据结构,该结构可根据实际需求和解析对象的类型进行设置,该可处理数据结构包括类的列表、类的属性信息以及类之间的关系信息。
在一个实施例中,可处理数据结构可以为树形结构、JSON格式中的任一种。
S202:从目标文件中提取与类相关的信息。
可选地,通过目标文件提取类的列表以及类的属性、关系信息。关系信息包括两个类之间的关系信息,比如一对多的关系,一对一的关系、继承关系等。
在一个实施例中,提取的与类相关的信息中关系信息为:Person "1" *-->"1..*"Address: personAddress,该关系信息包括以下内容:
主类名称:Person
被关联类名称: Address
类之间的关系名称:personAddress
关联的数量限制规则:一个人可以包含1到多个地址,一个地址只能属于一个人。
可选地,在使用解析对象解析类图文件得到目标文件后,使用提取器提取与类相关的信息,该提取器根据目标文件的数据结构提取信息。
S203:基于与类相关的信息调用预设OAS自动生成程序,生成数据模型,基于与类相关的信息确定数据模型中各Schema对象的第一信息,基于与类相关的信息确定数据模型中各Schema对象的第二信息。
可选地,第一信息包括类的名称、类型以及类的属性列表对应的文本信息,第二信息包括数据模型的属性名称、数据类型、属性的约束以及类对应的引用关系。其中,数据模型由多个Schema对象组成,通过对Schema对象相关的第一信息、第二信息的处理得到最终的数据模型。
可选地,基于与类相关的信息确定数据模型中各Schema对象的第一信息,包括:根据与类相关的信息在每个Schema对象的文本信息中定义类的名称、类型以及属性列表。
在一个实施例中,目标文件中的每个类可以表示为一个OAS的Schema对象。根据提取的信息(可以为类的列表)创建对应的Schema对象,并在该Schema对象生成类的名称、类型(object)以及属性列表的文本信息。具体的,根据与类相关的信息,调用预设程序生成对应的Schema对象的文本内容,该文本内容包括类的名称、类型(object)以及属性,其中将类的名称作为Schema对象的名称。其中,预设程序可以为OAS自动生成程序。
具体的,基于上述实施例中与类相关的信息(其关系信息设为:Person "1" *-->"1..*" Address: personAddress)创建的一个Schema对象的定义如下:
components:
schemas:
Person:
type: object 这个类型目前都是固定的Object。
properties: 属性是指类的属性。
id:
type: string
name:
type: string
其中,除了生成Schema对象Person以及对应的文本信息,还生成Schema对象PersonAddress及PersonAddress对应的文本信息。
在一个实施例中,可以使用Schema generator(模式生成器)创建类的定义和属性,并使用该模式生成器确定数据模型的属性名称以及属性的约束关系。
可选地,基于与类相关的信息确定数据模型中各Schema对象的第二信息,包括:根据属性名称确定对应的Schema对象的属性名称、数据类型,并对属性的约束进行处理;根据关系信息确定Schema对象之间的引用关系。
在一个实施例中,将类图文件中类的属性名称映射到对应的Schema对象中,以确定该Schema对象的属性名称。基于该属性名称确定该Schema对象支持的数据类型,如字符串、数字、布尔值等。同时,处理属性的约束,如最大长度、枚举值等。具体的,类图文件中的属性名称String对应到创建的Schema对象中为string,类图文件中的属性名称Long对应到Schema对象中属性名称为string等,根据预设的映射关系进行属性名称的映射。可以在使用程序(如OAS自动生成程序)生成Schema对象中属性相关的文本时根据映射关系进行替换。
在一个示例中:
PlantUML类图文件中的Person是这样的:
class Person<<Resource>>{
{field}id: String
{field}name: String
}
其中,属性名称为String,根据该属性名称相应定义Schema对象中的属性名称为:
components:
schemas:
Person:
type: object
properties:
id:
type: string
name:
type: string
在另一个示例中,类图文件中属性名称为:{field}id: String,该类型对应的Schema对象中属性名称对应的描述文本则为:
properties:
id:
type: string
可选地,因类图文件中类之间可能存在关联关系(如聚合、继承、关联等),在数据模型中可以使用引用($ref)来表示类之间的关联关系。根据类图中的关系信息,生成对应的引用关系,并在Schema对象中使用$ref进行引用。
在一个实施例中,使用Reference Handler(引用处理程序)获取类图文件中类之间的关系信息,根据该关系信息对应生成Schema对象之间的引用关系。
可选地,为了实现对数据模型的存储调用以及实现OAS文件的快速生成,遍历与类相关的信息生成OAS的数据模型,包括:针对数据模型中的每个Schema对象生成对应的定义文件,保存定义文件和数据模型;或,根据数据模型中的每个Schema对象生成OAS文件,OAS文件包括每个Schema对象对应的定义。
可选地,定义文件可以作为OAS文件的一部分,也可以相对于OAS文件独立保存,OAS文件保存该定义文件的引用方式。其中,该定义文件包括生成的Schema对象的定义,该定义包括用于对Schema对象进行增删改查等操作的接口的定义。
在一个实施例中,定义文件作为OAS文件的一部分,该OAS文件的示例如下:
components:
schemas:
Person:
type: object
properties:
id:
type: string
name:
type: string
在另一个实施例中,定义文件单独保存为:Person_schemas.yaml:。相关的OAS文件为:Person_Management-v1.0.0.oas.yaml,该OAS文件还包括该定义文件的引用方式:
CuPerson:
type: object
properties:
id:
type: string
name:
type: string
然后在Person_Management-v1.0.0.oas.yaml中进行引用:
paths:
/persons:
get:
summary: Get all persons
responses:
'200':
description: A list of persons
content:
application/json:
schema:
type: array
items:
$ref: 'Person_schemas.yaml#/Person'
可选地,保存定义文件时,若Schema对象的定义写入OAS文件,则只需保存该OAS文件,若数据模型的Schema对象单独保存,则需要同时保存相应的定义文件,如果每个Schema对象单独保存,则有多少Schema对象就有多少个定义文件。
可选地,为了实现数据模型的快速迭代,检测类图文件是否发生变化,变化包括类图文件中类的新增、删除、修改中的至少一种;若确定类图文件发生变化,解析类图文件获取与类相关的信息,根据与类相关的信息生成新的数据模型。
下面结合图3对本申请的OAS Schema的生成方法作进一步说明。
如图3所示,使用者通过用户终端(如手机、电脑)提供PlantUML类图文件作为生成数据模型的文件。接收该类图文件后,使用预设的解析对象解析PlantUML类图文件,生成结构为可处理数据结构的目标文件。根据该数据结构从目标文件中提取类名、属性、关系信息。基于提取的信息对应生成数据模型的Schema对象,在Schema对象中创建类的定义和属性名称、数据类型,处理属性的约束,并对Schema对象之间的引用关系进行设置。数据模型的Schema对象创建完成后,向使用者返回生成的数据模型,保存该数据模型对应的OAS文件或定义文件。
在一个实施例中,PlantUML类图文件如图4所示,基于该类图文件生成的数据模型的示例为:
addresses:
type: array
items:
$ref: '#/components/schemas/Address'
该数据模型很好地体现了PlantUML类图中一个人可以包含1到多个地址的关系。
包括该数据模型的OpenAPI示例如下:
openapi: 3.0.0
info:
title: Example API
version: 1.0.0
paths:
/persons:
get:
summary: Get all persons
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Person'
components:
schemas:
Person:
type: object
properties:
id:
type: string
name:
type: string
addresses:
type: array
items:
$ref: '#/components/schemas/Address'
required:
- id
- name
Address:
type: object
properties:
street:
type: string
city:
type: string
country:
type: string
required:
- street
- city
- country
该OpenAPI示例定义了资源person相关的API接口,示例接口/persons获取所有Person的列表,返回内容是Person的列表,Person的定义引用Person Schema的定义,具体定于在本文件的 '#/components/schemas/Person'部分。
在components的schemas部分定义了对象Person的schema,同时定义了Address以及Person和Address之间关系对象的schema。这些schema定义了对象的类型、名称、属性列表,对每个属性,定义了名称和类型。
components的schemas中定义的每个对象的schema,即本申请根据PlantUML类图自动生成的内容。
区别于前述单独生成Schema对象并进行引用的方式,Person Schema还包含了对另一个数据模型Address Schema的引用。
该示例展示了对Person Schema对象的查询接口(API)获取,通过该API可以查询获得所有person对象的列表,其中每个person对象的结构由Person Schema进行定义。
相比于现有技术,本申请的OAS Schema的生成方法具有以下优点:
1.提高开发效率:通过自动化生成OAS Schema,减少了手工编写和维护的工作量,提高了开发效率。
2.确保一致性:自动生成的OAS Schema与领域模型保持一致,避免了手动编写时可能出现的不一致性问题。
3.快速迭代和修改:由于基于PlantUML类图文件生成OAS Schema,可以轻松地进行迭代和修改,加快了开发过程。
4.提高准确性:自动生成的OAS Schema的方式可以避免手动编写时可能出现的错误,提高了数据模型的准确性。
需要说明的是,在本申请的可选实施例中,所涉及到的数据(如类图文件、数据模型、OAS Schema等数据),当本申请以上实施例运用到具体产品或技术中时,需要获得使用对象许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。也就是说,本申请实施例中如果涉及到与对象有关的数据,这些数据需要经由对象授权同意、且符合国家和地区的相关法律法规和标准的情况下获取的。
根据本申请的一个方面,本申请提供一种OAS Schema的生成装置,如图5所示,OASSchema的生成装置300包括类图文件解析模块310、数据模型生成模块320,其中,类图文件解析模块310,用于解析类图文件,并从解析后的文件中获取与类相关的信息,信息包括与各个类分别对应的列表、类的属性以及类之间的关系信息;数据模型生成模块320,用于根据与类相关的信息生成OAS的数据模型。
可选地,解析类图文件,并从解析后的文件中获取与类相关的信息,包括:调用预设的解析对象解析类图文件,得到可处理数据结构的目标文件,解析对象包括类图文件对应的解析器或库;
从目标文件中提取与类相关的信息,与类相关的信息包括类名、类的属性以及类的关系信息。
可选地,遍历与类相关的信息生成OAS的数据模型,包括:
基于与类相关的信息调用预设OAS自动生成程序,生成数据模型,该数据模型中包括多个与类一一对应的Schema对象;
基于与类相关的信息确定数据模型中各Schema对象的第一信息;第一信息包括类名、类型以及属性列表的文本信息;
基于与类相关的信息确定数据模型中各Schema对象的第二信息,第二信息包括数据模型的属性名称、数据类型、属性的约束以及与各类对应的Schema对象之间的引用关系对应的文本信息。
可选地,基于与类相关的信息确定数据模型中各Schema对象的第一信息,包括:
根据与类相关的信息在所述Schema对象的文本信息中定义类的名称、类型以及属性列表。
可选地,基于与类相关的信息确定数据模型中各Schema对象的第二信息,包括:根据属性名称确定对应的Schema对象中类的属性名称、数据类型,并对Schema对象中属性的约束进行处理;根据关系信息确定Schema对象之间的引用关系。
可选地,遍历与类相关的信息生成OAS的数据模型,包括:
针对数据模型中的每个Schema对象生成对应的定义文件,保存定义文件和数据模型;
或,根据数据模型中的每个Schema对象生成OAS文件,所述OAS文件包括每个Schema对象对应的定义。
可选地,还包括:检测类图文件是否发生变化,变化包括类图文件中类的新增、删除、修改中的至少一种;
若确定类图文件发生变化,解析类图文件获取与类相关的信息,根据所述与类相关的信息更新已生成的数据模型或对新增的类生成新的数据模型,并同步更新已生成的OAS文件。
在一个可选实施例中,提供了一种电子设备,如图6所示,图6所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004,收发器4004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是CPU(CentralProcessingUnit,中央处理器),通用处理器,DSP(DigitalSignalProcessor,数据信号处理器),ASIC(ApplicationSpecificIntegratedCircuit,专用集成电路),FPGA(FieldProgrammableGateArray,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI(PeripheralComponentInterconnect,外设部件互连标准)总线或EISA(ExtendedIndustryStandardArchitecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM(ReadOnlyMemory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(RandomAccessMemory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(ElectricallyErasableProgrammableReadOnlyMemory,电可擦可编程只读存储器)、CD-ROM(CompactDiscReadOnlyMemory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器4003用于存储执行本申请实施例的计算机程序,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
其中,电子设备可以是任何一种可与对象进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(PersonalDigitalAssistant,PDA)、游戏机、交互式网络电视(InternetProtocolTelevision,IPTV)、智能式穿戴式设备等。
所述电子设备还可以包括网络设备和/或对象设备。其中,所述网络设备包括,但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(CloudComputing)的由大量主机或网络服务器构成的云。
所述电子设备所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(VirtualPrivateNetwork,VPN)等。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除图示或文字描述以外的顺序实施。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。

Claims (9)

1.一种OAS Schema的生成方法,其特征在于,包括:
解析类图文件,并从解析后的文件中获取与类相关的信息,所述信息包括与各个类分别对应的列表、类的属性以及类之间的关系信息,所述类图文件为PlantUML类图文件;
遍历所述与类相关的信息生成OAS的数据模型,包括:基于所述与类相关的信息调用预设OAS自动生成程序,生成数据模型,该数据模型用于描述资源、请求参数、响应体中的至少一种,包括多个与类一一对应的Schema对象;
基于所述与类相关的信息确定所述数据模型中各Schema对象的第一信息;所述第一信息包括类名、类型以及属性列表的文本信息;
基于所述与类相关的信息确定所述数据模型中各Schema对象的第二信息,所述第二信息包括类的属性名称、数据类型、属性的约束以及与各类对应的Schema对象之间的引用关系对应的文本信息,基于所述第二信息处理所述Schema对象。
2.根据权利要求1所述的方法,其特征在于,所述解析类图文件,并从解析后的文件中获取与类相关的信息,包括:
调用预设的解析对象解析所述类图文件,得到可处理数据结构的目标文件,所述解析对象包括所述类图文件对应的解析器或库;
从所述目标文件中提取与类相关的信息。
3.根据权利要求1所述的方法,其特征在于,所述基于所述与类相关的信息确定所述数据模型中各Schema对象的第一信息,包括:
根据所述与类相关的信息在所述Schema对象的文本信息中定义类的名称、类型以及属性列表。
4.根据权利要求1所述的方法,其特征在于,所述基于所述与类相关的信息确定所述数据模型中各Schema对象的第二信息,包括:
根据所述属性名称确定对应的Schema对象中类的属性名称、数据类型,并对所述Schema对象中属性的约束进行处理;
根据所述关系信息确定所述Schema对象之间的引用关系。
5.根据权利要求1所述的方法,其特征在于,所述遍历所述与类相关的信息生成OAS的数据模型,包括:
针对所述数据模型中的每个Schema对象生成对应的定义文件,保存所述定义文件和所述数据模型;
或,根据数据模型中的每个Schema对象生成OAS文件,所述OAS文件包括每个Schema对象对应的定义。
6.根据权利要求5所述的方法,其特征在于,所述方法,还包括:
检测所述类图文件是否发生变化,所述变化包括所述类图文件中类的新增、删除、修改中的至少一种;
若确定所述类图文件发生变化,解析所述类图文件获取与类相关的信息,根据所述与类相关的信息更新已生成的数据模型或对新增的类生成新的数据模型,并同步更新已生成的OAS文件。
7.一种OAS Schema的生成装置,其特征在于,所述装置,包括:
类图文件解析模块,用于解析类图文件,并从解析后的文件中获取与类相关的信息,所述信息包括与各个类分别对应的列表、类的属性以及类之间的关系信息,所述类图文件为PlantUML类图文件;
数据模型生成模块,用于遍历所述与类相关的信息生成OAS的数据模型,包括:基于所述与类相关的信息调用预设OAS自动生成程序,生成数据模型,该数据模型用于描述资源、请求参数、响应体中的至少一种,包括多个与类一一对应的Schema对象;
基于所述与类相关的信息确定所述数据模型中各Schema对象的第一信息;所述第一信息包括类名、类型以及属性列表的文本信息;
基于所述与类相关的信息确定所述数据模型中各Schema对象的第二信息,所述第二信息包括类的属性名称、数据类型、属性的约束以及与各类对应的Schema对象之间的引用关系对应的文本信息,基于所述第二信息处理所述Schema对象。
8.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-6中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-6任一项所述方法的步骤。
CN202311031400.4A 2023-08-16 2023-08-16 OAS Schema的生成方法、装置、设备及介质 Active CN116755684B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311031400.4A CN116755684B (zh) 2023-08-16 2023-08-16 OAS Schema的生成方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311031400.4A CN116755684B (zh) 2023-08-16 2023-08-16 OAS Schema的生成方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN116755684A CN116755684A (zh) 2023-09-15
CN116755684B true CN116755684B (zh) 2023-12-05

Family

ID=87951800

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311031400.4A Active CN116755684B (zh) 2023-08-16 2023-08-16 OAS Schema的生成方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN116755684B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014059207A1 (en) * 2012-10-12 2014-04-17 Baker Hughes Incorporated Method and system to automatically generate use case sequence diagrams and class diagrams
CN105630500A (zh) * 2015-12-25 2016-06-01 江苏东大金智信息***有限公司 一种用于数据处理的cim对象模型及其编程框架
CN111950239A (zh) * 2020-08-07 2020-11-17 北京字节跳动网络技术有限公司 Schema文档生成方法、装置、计算机设备和介质
CN114417064A (zh) * 2021-12-14 2022-04-29 深圳供电局有限公司 数据处理方法、装置、计算机设备、存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI262383B (en) * 2003-01-10 2006-09-21 Univ Nat Cheng Kung A generic software testing system and method
US11947976B2 (en) * 2021-09-20 2024-04-02 Salesforce, Inc. System and method for semantic metadata extensions in API governance using validation rulesets

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014059207A1 (en) * 2012-10-12 2014-04-17 Baker Hughes Incorporated Method and system to automatically generate use case sequence diagrams and class diagrams
CN105630500A (zh) * 2015-12-25 2016-06-01 江苏东大金智信息***有限公司 一种用于数据处理的cim对象模型及其编程框架
CN111950239A (zh) * 2020-08-07 2020-11-17 北京字节跳动网络技术有限公司 Schema文档生成方法、装置、计算机设备和介质
CN114417064A (zh) * 2021-12-14 2022-04-29 深圳供电局有限公司 数据处理方法、装置、计算机设备、存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于MDA的UML类模型转换XML Schema的方法;段有胜;王虎;;信息技术与信息化(第02期);第53-56页 *

Also Published As

Publication number Publication date
CN116755684A (zh) 2023-09-15

Similar Documents

Publication Publication Date Title
US11726969B2 (en) Matching metastructure for data modeling
CN107122368B (zh) 一种数据校验方法、装置及电子设备
US9021440B1 (en) System and method for automated test script generation
US9043757B2 (en) Identifying differences between source codes of different versions of a software when each source code is organized using incorporated files
US10445675B2 (en) Confirming enforcement of business rules specified in a data access tier of a multi-tier application
CN111722839A (zh) 一种代码生成方法、装置、电子设备及存储介质
US10534592B2 (en) Template expressions for constraint-based systems
CN111125064B (zh) 一种生成数据库模式定义语句的方法和装置
CN104679500B (zh) 实体类自动生成实现方法及装置
CN104461531A (zh) 一种报表***自定义函数的实现方法
CN112860584B (zh) 基于工作流模型的测试方法及装置
CN113962597A (zh) 一种数据分析方法、装置、电子设备及存储介质
CN108694172B (zh) 信息输出方法和装置
CN113238739A (zh) 一种插件开发和数据获取方法、装置、电子设备及介质
CN117033249A (zh) 一种测试用例生成方法、装置、计算机设备及存储介质
US11977473B2 (en) Providing a pseudo language for manipulating complex variables of an orchestration flow
CN116414689A (zh) 一种基于反射机制的接口参数校验方法及***
CN116755669A (zh) 一种基于dsl语言操作模型的低代码开发方法和工具
CN116755684B (zh) OAS Schema的生成方法、装置、设备及介质
CN116185389A (zh) 一种代码生成方法、装置、电子设备及介质
CN115543428A (zh) 一种基于策略模板的模拟数据生成方法和装置
CN113050935A (zh) 生成混入对象的方法、装置、计算设备及计算机可读存储介质
CN115543485B (zh) 一种数据转换配置生成方法、装置、计算机设备及介质
CN115981657A (zh) 代码生成方法、装置、电子设备及可读介质
CN106020787B (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
GR01 Patent grant
GR01 Patent grant