CN108459842B - 一种模型配置方法、装置及电子设备 - Google Patents

一种模型配置方法、装置及电子设备 Download PDF

Info

Publication number
CN108459842B
CN108459842B CN201810084736.XA CN201810084736A CN108459842B CN 108459842 B CN108459842 B CN 108459842B CN 201810084736 A CN201810084736 A CN 201810084736A CN 108459842 B CN108459842 B CN 108459842B
Authority
CN
China
Prior art keywords
model
target
attribute
target model
field
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
CN201810084736.XA
Other languages
English (en)
Other versions
CN108459842A (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.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
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 Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201810084736.XA priority Critical patent/CN108459842B/zh
Publication of CN108459842A publication Critical patent/CN108459842A/zh
Application granted granted Critical
Publication of CN108459842B publication Critical patent/CN108459842B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Landscapes

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

Abstract

本发明实施例提供了一种模型配置方法、装置及电子设备,方法包括:获得目标模型,其中,目标模型包括预设的目标模型属性;解析目标模型,获得目标模型所包括的所述目标模型属性;针对每一所获得的目标模型属性,为该目标模型属性分配模型属性表中对应的字段。应用本发明实施例,可以提高接入不同服务的速度。

Description

一种模型配置方法、装置及电子设备
技术领域
本发明涉及配置技术领域,特别是涉及一种模型配置方法、装置及电子设备。
背景技术
大型互联网公司需要使用各种类型的中间件服务、底层服务,满足不同的用户的需求,提供更加的优质的服务。不管是中间件服务,还是底层服务都有很多配置项,可以使用CMDB(Configuration Management Database,配置管理数据库)管理各服务中物理的配置项和虚拟的配置项,其中,中间件服务是提供系统软件和应用软件之间连接的软件服务,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑。互联网公司的服务架构是分层的,底层服务是指分层处于底层的服务,有时底层服务指的是数据库提供的数据服务。
管理配置项的方式为首先需要完成配置项对应的模型配置,模型配置的方式为具体的模型配置方式为先在开发人员需要在数据库中建模型属性表,然后为模型的每一属性分配字段,即定义模型属性表中哪一列存储模型的哪一种属性,示例性的,定义列1存储属性A,即将字段列1分配给属性A;最后,开发操作该模型的代码。通过上述三个步骤,完成模型的配置。在模型配置完成后,将模型实例化后的属性值分别存储至对应的字段;后续可以基于模型属性表进行属性值的增删改查。需要说明的是,当对一个服务的配置项所对应的模型配置完成后,就接入了该服务。
然而,发明人在实现本发明的过程中发现,现有技术至少存在如下问题:配置项本身的属性、配置项之间的关系因服务类型的不同而差别各异,难以找到一个统一固定的模型适用于所有配置项,需要针对不同的配置项配置不同的模型。然而,现有技术中模型配置需要人工手动完成,并且模型配置的进度受限于开发的进度,导致模型配置需要消耗大量的时间,进而导致接入不同服务的速度比较慢。
发明内容
本发明实施例的目的在于提供一种模型配置方法、装置及电子设备。以实现提高接入不同服务的速度。具体技术方案如下:
在本发明实施的一方面,为了达到上述目的,本发明实施例提供了一种模型配置方法,方法包括:
获得目标模型,其中,所述目标模型包括预设的目标模型属性;
解析所述目标模型,获得所述目标模型所包括的所述目标模型属性;
针对每一所获得的目标模型属性,为该目标模型属性分配模型属性表中对应的字段。
可选的,所述针对每一所获得的目标模型属性,为该目标模型属性分配模型属性表中对应的字段;
针对每一所获得的目标模型属性,判断预先记录的模型属性与所述模型属性表中的字段的对应关系中是否存在针对该目标模型属性记录的对应关系;
如果不存在,从所述模型属性表的目标字段中,选择一个目标字段分配给该目标模型属性,其中,所述目标字段为所述模型属性表中未与任一模型属性之间存在对应关系的字段。
可选的,所述从所述模型属性表的目标字段中,选择一个目标字段分配给该目标模型属性之后,所述方法还包括:
记录该目标模型属性与所选择的目标字段之间的对应关系。
可选的,所述目标模型还包括所述目标模型与其他模型的关系,其中,所述其他模型为所获得的模型中除所述目标模型之外的模型;
在所述针对每一所获得的目标模型属性,为该目标模型属性分配模型属性表中对应的字段之后,所述方法还包括:
获得所述目标模型对应的目标数据,其中,所述目标数据包括所述目标模型的模型标识、目标模型属性值和目标关系,所述目标模型属性值为所述目标模型实例化后的模型属性值;所述目标关系为所述目标模型实例化后的关系;
判断所述目标数据是否满足所述目标模型中预先定义的条件;
如果满足,将所述目标模型的模型标识存储至针对模型标识分配的字段,并将所述目标数据中每一目标模型属性值存储至分配的对应的字段;
存储所述目标关系。
可选的,所述判断所述目标数据是否满足所述目标模型中预先定义的条件,包括:
确定所述目标数据中的每一所述目标模型属性值对应的模型属性以及属性类型;
判断所确定模型属性是否与所述目标模型属性一一对应;
如果不对应,则判定所述目标数据不满足所述目标模型中预先定义的条件;
或者,如果对应,判断所确定的属性类型中是否存在不同于对应的目标模型属性预设的属性类型的属性类型;
如果存在,则判定所述目标数据不满足所述目标模型中预先定义的条件;
或者,如果不存在,判断所述目标关系是否与所述目标模型与其他模型的关系相同;
如果不相同,则判定所述目标数据不满足所述目标模型中预先定义的条件;
或者,如果相同,则判定所述目标数据满足所述目标模型中预先定义的条件。
可选的,在存储所述目标关系之后,所述方法还包括:
获得服务请求,其中,所述服务请求包括目标模型标识和参考模型属性;
根据预先记录的模型属性与所述模型属性表中的字段的对应关系,确定所述参考模型属性对应的字段;
用所述目标模型标识以及所确定的字段填充预设的查询语句生成结构,生成结构化查询语言SQL语句;
执行所生成的SQL语句,进行所述服务请求所请求的操作。
在本发明实施的另一方面,为了达到上述目的,本发明实施例还提供了一种模型配置装置,所述装置包括:
第一获得模块,用于获得目标模型,其中,所述目标模型包括预设的目标模型属性;
解析模块,用于解析所述目标模型,获得所述目标模型所包括的所述目标模型属性;
分配模块,用于针对每一所获得的目标模型属性,为该目标模型属性分配模型属性表中对应的字段。
可选的,所述分配模块,具体用于:
针对每一所获得的目标模型属性,判断预先记录的模型属性与所述模型属性表中的字段的对应关系中是否存在针对该目标模型属性记录的对应关系;
如果不存在,从所述模型属性表的目标字段中,选择一个目标字段分配给该目标模型属性,其中,所述目标字段为所述模型属性表中未与任一模型属性之间存在对应关系的字段。
可选的,所述装置还包括:
记录模块,用于记录该目标模型属性与所选择的目标字段之间的对应关系。
可选的,所述目标模型还包括所述目标模型与其他模型的关系,其中,所述其他模型为所获得的模型中除所述目标模型之外的模型;
所述装置还包括:
第二获得模块,用于获得目标数据,其中,所述目标数据包括所述目标模型的模型标识、目标模型属性值和目标关系,所述目标模型属性值为所述目标模型实例化后的模型属性值;所述目标关系为所述目标模型实例化后的关系;
判断模块,用于判断所述目标数据是否满足所述目标模型中预先定义的条件;
存储模块,用于在所述判断模块的判断结果为满足的情况下,将所述目标模型的模型标识存储至针对模型标识分配的字段,并将所述目标数据中每一目标模型属性值存储至分配的对应的字段;存储所述目标关系。
可选的,所述判断模块,具体用于:
确定所述目标数据中的每一所述目标模型属性值对应的模型属性以及属性类型;
判断所确定模型属性是否与所述目标模型属性一一对应;
如果不对应,则判定所述目标数据不满足所述目标模型中预先定义的条件;
或者,如果对应,判断所确定的属性类型中是否存在不同于对应的目标模型属性预设的属性类型的属性类型;
如果存在,则判定所述目标数据不满足所述目标模型中预先定义的条件;
或者,如果不存在,判断所述目标关系是否与所述目标模型与其他模型的关系相同;
如果不相同,则判定所述目标数据不满足所述目标模型中预先定义的条件;
或者,如果相同,则判定所述目标数据满足所述目标模型中预先定义的条件。
可选的,所述装置还包括:
第三获得模块,用于获得服务请求,其中,所述服务请求包括目标模型标识和参考模型属性;
确定模块,用于根据预先记录的模型属性与所述模型属性表中的字段的对应关系,确定所述参考模型属性对应的字段;
生成模块,用于用所述目标模型标识以及所确定的字段填充预设的查询语句生成结构,生成结构化查询语言SQL语句;
执行模块,用于执行所生成的SQL语句,进行所述服务请求所请求的操作。
在本发明实施的又一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现执行上述任一所述的模型配置方法。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的模型配置方法。
在本发明实施的又一方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的模型配置方法。
本发明实施例提供的一种模型配置方法、装置及电子设备,可以在获得模型后,解析模型,获得模型所携带的模型属性,确定每一模型属性对应的字段,相较于现有技术,模型配置不需要开发操作模型的代码,可以提高模型配置的效率,接入不同服务的速度比较慢,进而提高接入不同服务的速度。当然,实施本发明的任一产品或方法必不一定需要同时达到以上的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的模型配置方法的第一种流程示意图;
图2为本发明实施例所提供的数据定义流程的流程示意图;
图3为本发明实施例提供的模型配置方法的第二种流程示意图;
图4为本发明实施例提供的数据写入的原理示意图;
图5为本发明实施例提供的模型配置方法的第三种流程示意图;
图6为本发明实施例提供的模型配置装置的结构示意图;
图7为本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
为了解决上述技术问题,本发明实施例提供了一种模型配置方法、装置及电子设备,下面首先对本发明实施例提供的模型配置方法进行说明。
本发明实施例所提供的模型配置方法可以应用于CMDB中,还可以应用于需要通过模型对数据进行管理的系统中。
图1为本发明实施例提供的模型配置方法的第一种流程示意图,方法包括:
S101:获得目标模型,其中,目标模型包括预设的目标模型属性。
目标模型可以是配置项对应的模型,示例性的,目标模型可以为集群模型、项目模型、机房模型等等。目标模型属性是指目标模型的模型属性,模型属性可以认为是预先确定的配置项的属性,示例性的,模型属性可以包括名字、状态等属性,这里所说的名字指的是模型实例化后的名字,即实例化后的配置项后的名字。在本发明实施例中,目标模型还可以包含目标模型与其他模型的关系,即可以在目标模型中定义模型与模型之间的关系。
目标模型可以是工作人员预先开发完成的,可以通过DSL(Domain-SpecificLanguages,领域特定语言)进行定义。DSL是在模型之上建立的一种更加灵活的对模型化的理解和使用方式,是一种用于提高生产力的手段;而更重要的,DSL可以使开发者能迅速的构建出配置项对应的模型。示例性的,目标模型为Mode(模型)A,通过DSL定义的ModeA可以为:
Figure BDA0001562077080000071
其中,ModeA为目标模型的名字,name(名字)、state(状态)、create_time(创建时间)为模型属性,string(字符串)、enum(枚举)、date(日期)是模型属性的类型。当冒号“:”右边为大写字母开头,则为定义一个关系,表示ModeA中有个关系,关系名为compose(组成),关系的目标模型为ModeB。[]表示该关系为1:n关系,表示ModeA与ModeB为1对多的关系。
需要说明的是,如果一个配置项如果与另一个配置项之间存在关系的时候,可以在该配置项对应的模型中定义该模型与另一个配置项对应的模型之间的关系。在一个模型中,可以不定义关系,也可以定义一个关系,也可以定义多个关系,具体的,是否在模型中定义关系,定义几个关系,是由模型对应的配置项决定的,如果预先的定义了模型对应的配置项与其他配置项之间的关系,则可以在该模型中定义关系。
在本发明实施例中,使用DSL可以方便灵活地定义数据模型,所定义的模型可以包括模型属性及关系,进而在需要接入大量不同类型的业务时,快速地接入不同的业务。
S102:解析目标模型,获得目标模型所包括的目标模型属性。
在本发明实施例中,虽然目标模型中定义了目标模型属性,但是执行本发明实施例所提供的模型配置方法的电子设备不知道目标模型中包含的模型属性是哪些,需要解析之后才能获得目标模型属性。具体的,使用预设的语法分析和词法分析方式,分析出目标模型中的目标模型属性,并提取出所分析出的目标模型属性。
解析的主要目的是为了使电子设备能够根据解析出的目标模型属性执行接下来的步骤,即将电子设备不能执行的代码转换为电子设备能够执行的代码。示例性的,电子设备所使用的语言环境是Java(一种可以撰写跨平台应用软件的面向对象的程序设计语言),目标模型是采用DSL定义的,在这种情况下,需要解析目标模型,才能知道目标模型的构成,得到Java语言能够解释执行的目标模型属性。
S103:针对每一所获得的目标模型属性,为该目标模型属性分配模型属性表中对应的字段。
模型属性表是存储模型属性值的表,为了能够方便对模型属性值进行管理,可以为每一模型属性分配一个字段,这里所说的字段是模型属性表中的列。示例性的,模型属性表的表结构可以如下:
id:long(主键)
type_id:long(模型类型)
s0:varchar(string类型的属性)
s10:varchar(预留10个string类型字段)
i0:int(integer类型的属性)
i10:int(预留10个integer类型的字段)
在模型属性表中的id是指实例化模型后的模型标识,模型可以理解为是类,实例化的模型可以理解为对象,模型实例化就是类实例化。实例化模型后的模型标识就是对象的标识。s0-s10、i0-i10是指模型属性表中的字段,其中,s0-s10在模型属性表中为属性类型为string预留的字段,i0-i10在模型属性表中为属性类型为integer(整数)预留的字段。当模型属性的属性类型为string时,可以在s0-s10中选择一个字段,分配给该模型属性,当模型属性的属性类型为integer时,可以在i0-i10中选择一个字段,分配给该模型属性。type_id为模型的标识,可以为上述定义的目标模型中的name。为了能够方便、灵活地存储数据,可以将s0-s10的存储的数据类型确定为varchar(表示字符数据),可以将i0-i10的存储的数据类型确定为int(有符号整型)。
在完成模型的配置后,为了方便以后使用目标模型,可以存储目标模型,具体的,可以将目标模型存储到Type表中,Type表的表结构可以为:
id:long(主键)
name:varchar(类型名称)
definition:TEXT(DSL)
Type表的表结构中的id是指模型的编号,name是指模型的名字,definition是指模型的定义,TEXT就是指模型存储的格式。
在本发明实施例中数据定义流程,即模型配置从开始到完成的流程可以如图2所示,首先需要开发人员定义模型DSL,然后解析模型中的属性,再次查询CodeC表分配字段给属性,最后存储模型到Type表。
在本发明实施例中,完成目标模型属性对应的字段的分配就完成了目标模型的配置,当完成了一个服务所有模型的配置,就完成了该服务的接入。相较于现有技术,相较于现有技术,模型配置不需要开发操作模型的代码,可以提高模型配置的效率,进而提高接入不同服务的速度。
在本发明实施例中,针对每一所获得的目标模型属性,为该目标模型属性分配模型属性表中对应的字段,可以包括:
针对每一所获得的目标模型属性,判断预先记录的模型属性与模型属性表中的字段的对应关系中是否存在针对该目标模型属性记录的对应关系;
如果不存在,从模型属性表的目标字段中,选择一个目标字段分配给该目标模型属性,其中,目标字段为模型属性表中未与任一模型属性之间存在对应关系的字段。
预先记录的模型属性与模型属性表中的字段的对应关系是一一对应的,示例性的,记录的对应关系中可以包括:模型属性A:s0,即模型属性A与字段s0之间的对应关系。具体的,可以将模型属性与模型属性表中的字段的对应关系记录在CodeC表中,CodeC是指编译码器。指的是数字通信中具有编码、译码功能的器件。CodeC表的表结构可以为:
id:long(主键)
name:varchar(属性名称)
type:varchar(属性类型,string,int等)
column:varchar(映射到的字段,如s0,i1等)。
这里所说的id是指字段的标识,字段的标识可以包括数字、字母和字符中的至少一种。这里所说的name是模型属性的名字,type是指模型属性的属性类型,即模型属性对应的属性值的数据类型。Column是指模型属性映射到的字段。示例性的,模型属性为集群,为集群分配的字段为s6,集群的属性类型为string,则CodeC表中针对集群记录的对应关系为:
id:s6
name:jiqun
type:string
column:s6
当得到目标模型属性后,针对每一目标模型属性,查询CodeC表,判断该目标模型属性是否记录在CodeC表中,如果记录,则该目标模型属性在CodeC表中映射到的字段作为为该目标模型属性分配的字段,如果未记录,根据CodeC表,确定模型属性表中没有被分配的字段,从未被分配的字段中挑选出一个字段,分配给该目标模型属性。
在本发明实施例中,还可以判断目标模型是否包含继承对应的关键字,如果目标模型中包含继承对应的关键字,针对目标模型中的每一目标模型属性,从预先为该目标模型属性对应的属性类型所预留的字段中,选择一个字段给该目标模型属性,如果目标模型中不包含继承对应的关键字,则说明已经为该目标模型中的每一目标模型属性分配了字段。
在本发明实施例中,可以根据预先记录的模型属性与字段之间的对应关系,为目标模型的每一目标模型属性分配字段,可以不用手工地分配字段,而是自动地为模型属性分配字段,提高字段分配的效率,进而提高服务接入的速度。
为了后续能够根据模型属性与字段的对应关系为模型属性分配字段,在从模型属性表的目标字段选择一个目标字段分配给该目标模型属性之后,还可以记录该目标模型属性与所选择的目标字段之间的对应关系。记录模型属性与字段之间的对应关系,可以防止后续将不同的模型属性分配给同一个字段,从而会导致不同的模型属性对应的属性值存储到一个字段中,使得数据存储混乱,进而使得后续配置的错误。
图3为本发明实施例提供的模型配置方法的第二种流程示意图,方法包括:
S301:获得目标模型,其中,目标模型包括预设的目标模型属性。
S302:解析目标模型,获得目标模型所包括的目标模型属性。
S303:针对每一所获得的目标模型属性,为该目标模型属性分配模型属性表中对应的字段。
需要说明的是,本发明实施例中的S301-S303分别与上述实施例中的S101-S103相同,在此不进行赘述。
S304:获得目标模型对应的目标数据,其中,目标数据包括目标模型的模型标识、目标模型属性值和目标关系,目标模型属性值为目标模型实例化后的模型属性值;目标关系为目标模型实例化后的关系。
在本发明实施例中,目标模型还包括目标模型与其他模型之间的关系,其他模型是指所获得的模型中除目标模型之外的模型,其他模型可以是在获得目标模型之前获得的模型,也可以是在获得目标模型之后所获得的模型。这里所说的所获得的模型是指获得目标模型的设备所获得的模型。示例性的,如果目标模型是上述所说的ModelA,则其他模型指的是上述所说的ModelB,目标模型与其他模型之间的关系名为compose,在ModelA中定义了ModelA与ModelB之间的关系为1对多的关系。这里所说的其他模型可以是一个,也可以是多个,具体的由目标模型中定义所决定的,示例性的,如果ModelA中只定义了ModelA与ModelB之间的关系,则其他模型为ModelB,如果ModelA中不仅定义了ModelA与ModelB之间的关系,还定义了ModelA与ModelC之间的关系,则其他模型为ModelB和ModelC。
在目标模型包括目标模型与其他模型的关系的情况下,目标模型实例化后,目标数据可以包括目标关系,目标关系为目标模型中所定义的关系实例化后的关系。
一个模型实例化后的数据是该模型对应的目标数据,目标模型对应的目标数据是指目标模型实例化后的数据,目标数据中包括目标模型中的目标属性实例化后的数据。
目标模型属性值是目标模型中目标模型属性实例化后对应的属性值。示例性的,目标模型属性为集群,目标模型属性实例化后,该目标模型属性值为上海集群,目标模型属性为创建时间,目标模型属性实例化后,该目标模型属性值为2017-12-01 09:00。
S305:判断目标数据是否满足目标模型中预先定义的条件,如果满足,执行S306,否则,结束。
在进行判断时,需要判断目标数据是否满足目标模型中预先定义的条件,此时需要获取目标模型中预先定义的条件,即需要获取目标模型。可以从上述所说的Type表中获取目标模型,具体的,根据目标模型的模型标识,确定Type表中目标模型的存储位置,从所确定的存储位置获取目标模型。获取了目标模型就获取了目标模型中预先定义的条件。
预先定义的条件为预先针对目标数据定义的条件,如果目标数据满足预先定义的条件,则说明目标数据没有错误,存储该目标数据不会对后续的配置管理产生影响,如果目标数据不满足预先定义的条件,说明目标数据不符合目标模型的要求,此时,可以向用户发推送目标数据不合法的提示,提示用户修改目标数据。
S306:将目标模型的模型标识存储至针对模型标识分配的字段,并将目标数据中每一目标模型属性值存储至分配的对应的字段。
模型属性表中预先为模型标识分配了字段,从该字段中找出一个未被占用的存储位置存储模型标识,针对目标数据中的每一模型属性值,从预先为该模型属性值对应的模型属性分配的字段中,确定一个为未被模型属性值占用的存储位置,将该模型属性值存储至所确定的字段中。需要说明的是,目标数据中的目标模型的模型标识和所有模型属性值存储在模型属性表中的同一行,不同的字段中。
在本发明实施例中,可以在确定存储位置时,将目标数据中的目标模型的模型标识及模型属性值的存储操作,转换为SQL(Structured Query Language,结构化查询语言)语句,执行所生成的SQL语句,完成目标数据的存储。
S307:存储目标关系。
存储目标关系,可以保证后面的配置项中的配置生效提供保证,目标关系可以存储到关系表中。关系表的表结构可以为:
id:long(主键)
primary_id:long(外键到Resource.id)
secondary_id:long(外键到Resource.id)
name:varchar(关系名字)
关系表中的id为关系的编号,primary(基本的)_id是关系中的一个模型实例化后的标识,secondary(次要的)_id是指关系中的另一模型实例化后的标识,name是指关系名字。如果关系为ModeA与ModeB之间的关系,primary_id可以是Mode A实例化后的标识,secondary_id可以为Mode B实例化后的标识。
可见,在本发明实施例中,在目标数据满足预先定义的条件时,将目标数据中的模型标识以及每一模型属性值存储至对应的字段,可以实现不同服务配置项实例化后的数据快速存储。
在本发明实施例中,判断目标数据是否满足目标模型中预先定义的条件,包括:
确定目标数据中的每一目标模型属性值对应的模型属性以及属性类型;
判断所确定模型属性是否与目标模型属性一一对应;
如果不对应,则判定目标数据不满足目标模型中预先定义的条件;
或者,如果对应,判断所确定的属性类型中是否存在不同于对应的目标模型属性预设的属性类型的属性类型;
如果存在,则判定目标数据不满足目标模型中预先定义的条件;
或者,如果不存在,判断目标关系是否与目标模型与其他模型的关系相同;
如果不相同,则判定目标数据不满足目标模型中预先定义的条件;
或者,如果相同,则判定目标数据满足目标模型中预先定义的条件。
在本发明实施例中,在获取目标数据后,需要先确定每一模型属性值对应的模型属性以及每一所确定的模型属性对应的属性类型,每一模型属性值对应的模型属性以及属性类型可以是目标模型所携带的,也可以是根据预先定义的模型属性的确定方式,确定每一模型属性值对应的模型属性以及属性类型。
在所确定模型属性以及属性类型之后,判断所确定的模型属性是否与目标模型属性一一对应,如果不对应,则判定目标数据不满足目标模型中预先定义的条件,即目标数据不合法,如果对应,则判断所确定的属性类型中是否存在不同于对应的目标模型属性预设的属性类型的属性类型,即针对每一所确定的模型属性,判断该模型属性在目标数据中的属性类型与目标模型中定义的属性类型是否相同,如果其中一个模型属性不满足,则判定目标数据不满足目标模型中预先定义的条件;如果每一所确定的模型属性均满足,判断目标关系是否与目标模型与其他模型的关系相同,即判断目标关系与目标模型中定义的关系是否为同一个关系,如果是,判定目标数据满足目标模型中预先定义的条件;如果否,判定目标数据不满足目标模型中预先定义的条件。
可见,在本发明实施例中,从不同的方面判断目标数据是否满足目标模型预先定义的条件,可以验证目标数据的合法性,可以确保所存储的目标数据是合法的,避免因存储不合法的数据而造成的配置错误。
图4为本发明实施例提供的数据写入的原理示意图,首先获得目标数据,并确定目标数据对应的属性和关系,然后获取目标数据对应的DSL,再次,检查目标数据中属性、属性类型以及关系的合法性,在目标数据合法的情况下,按CodeC将目标数据转换为SQL语句并写入Resource表及Relationship表,Resource表就是上述所说的模型属性表,Relationship表就是上述所说的关系表。
图5为本发明实施例提供的模型配置方法的第三种流程示意图,方法包括:
S501:获得目标模型,其中,目标模型包括预设的目标模型属性。
S502:解析目标模型,获得目标模型所包括的目标模型属性。
S503:针对每一所获得的目标模型属性,为该目标模型属性分配模型属性表中对应的字段。
S504:获得目标模型对应的目标数据,其中,目标数据包括目标模型的模型标识、目标模型属性值和目标关系,目标模型属性值为目标模型实例化后的模型属性值;目标关系为目标模型实例化后的关系。
S505:判断目标数据是否满足目标模型中预先定义的条件,如果满足,执行S506,否则,结束。
S506:将目标模型的模型标识存储至针对模型标识分配的字段,并将目标数据中每一目标模型属性值存储至分配的对应的字段。
S507:存储目标关系。
需要说明的是,S501-S507与上述实施例中的S310-S307相同,在此不进行赘述。
S508:获得服务请求,其中,服务请求包括目标模型标识和参考模型属性。
这里所说的服务请求可以是数据查询请求,也可以为数据删除请求,还可以为数据修改请求,这里所说的数据是指模型属性值。参考模型属性可以为目标模型属性中的一个或多个。
S509:根据预先记录的模型属性与模型属性表中的字段的对应关系,确定参考模型属性对应的字段。
S510:用目标模型标识以及所确定的字段填充预设的查询语句生成结构,生成结构化查询语言SQL语句。
需要说明的是,预设的查询语句生成结构可以为事先设计好的一段程序代码,该程序代码运行于电子设备中,从而,电子设备在获得目标模型标识以及所确定的字段以后,可以直接将该目标模型标识以及字段填充到该程序代码中,即可生成SQL语句。示例性的,服务请求为将ModeA中的模型属性A的属性值1修改为2,确定模型属性A对应的字段为s4,则将s4中ModeA对应的数据修改为2的操作转换为SQL语句;服务请求为将ModeA中的模型属性A对应的属性值删除,确定模型属性A对应的字段为s4,则将s4中ModeA对应的数据删除的操作转换为SQL语句。
S511:执行所生成的SQL语句,进行服务请求所请求的操作。
执行所生成的SQL语句,在SQL语句执行完毕,就完成了服务请求所请求的操作。
可见,在本发明实施例中,将数据的写入映射到底层统一的数据存储,可以使用一套接口进行增删改查,相较于现有技术,不需要提供不同的接口进行增删改查,进而不需要预先开发不同的接口满足用户的需求,能够满足用户的需求。
图6为本发明实施例提供的模型配置装置的结构示意图,该装置包括:
第一获得模块601,用于获得目标模型,其中,目标模型包括预设的目标模型属性;
解析模块602,用于解析目标模型,获得目标模型所包括的目标模型属性;
分配模块603,用于针对每一所获得的目标模型属性,为该目标模型属性分配模型属性表中对应的字段。
在本发明实施例中,完成目标模型属性对应的字段的分配就完成了目标模型的配置,当完成了一个服务所有模型的配置,就完成了该服务的接入。相较于现有技术,相较于现有技术,模型配置不需要开发操作模型的代码,可以提高模型配置的效率,接入不同服务的速度比较慢,进而提高接入不同服务的速度。
在本发明的一个实施方式中,分配模块603,具体用于:
针对每一所获得的目标模型属性,判断预先记录的模型属性与模型属性表中的字段的对应关系中是否存在针对该目标模型属性记录的对应关系;
如果不存在,从模型属性表的目标字段中,选择一个目标字段分配给该目标模型属性,其中,目标字段为模型属性表中未与任一模型属性之间存在对应关系的字段。
在本发明的一个实施方式中,该装置还可以包括:
记录模块,用于记录该目标模型属性与所选择的目标字段之间的对应关系。
在本发明的一个实施方式中,所述目标模型还包括所述目标模型与其他模型的关系,其中,所述其他模型为所获得的模型中除所述目标模型之外的模型;
该装置还可以包括:
第二获得模块,用于获得目标模型对应的目标数据,其中,目标数据包括目标模型的模型标识、目标模型属性值和目标关系,目标模型属性值为目标模型实例化后的模型属性值;目标关系为目标模型实例化后的关系;
判断模块,用于判断目标数据是否满足目标模型中预先定义的条件;
存储模块,用于在判断模块的判断结果为满足的情况下,将目标模型的模型标识存储至针对模型标识分配的字段,并将目标数据中每一目标模型属性值存储至分配的对应的字段;存储目标关系。
在本发明的一个实施方式中,判断模块,具体用于:
确定目标数据中的每一目标模型属性值对应的模型属性以及属性类型;
判断所确定模型属性是否与目标模型属性一一对应;
如果不对应,则判定目标数据不满足目标模型中预先定义的条件;
或者,如果对应,判断所确定的属性类型中是否存在不同于对应的目标模型属性预设的属性类型的属性类型;
如果存在,则判定目标数据不满足目标模型中预先定义的条件;
或者,如果不存在,判断目标关系是否与目标模型与其他模型的关系相同;
如果不相同,则判定目标数据不满足目标模型中预先定义的条件;
或者,如果相同,则判定目标数据满足目标模型中预先定义的条件。
在本发明的一个实施方式中,该装置还可以包括:
第三获得模块,用于获得服务请求,其中,服务请求包括目标模型标识和参考模型属性;
确定模块,用于根据预先记录的模型属性与模型属性表中的字段的对应关系,确定参考模型属性对应的字段;
生成模块,用于用目标模型标识以及所确定的字段填充预设的查询语句生成结构,生成SQL语句;
执行模块,用于执行所生成的SQL语句,进行服务请求所请求的操作。
本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现如下步骤:
获得目标模型,其中,目标模型包括预设的目标模型属性;
解析目标模型,获得目标模型所包括的目标模型属性;
针对每一所获得的目标模型属性,为该目标模型属性分配模型属性表中对应的字段。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Ne twork Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Applica tion SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明实施例中,完成目标模型属性对应的字段的分配就完成了目标模型的配置,当完成了一个服务所有模型的配置,就完成了该服务的接入。相较于现有技术,相较于现有技术,模型配置不需要开发操作模型的代码,可以提高模型配置的效率,接入不同服务的速度比较慢,进而提高接入不同服务的速度。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一的模型配置方法。
在本发明实施例中,完成目标模型属性对应的字段的分配就完成了目标模型的配置,当完成了一个服务所有模型的配置,就完成了该服务的接入。相较于现有技术,相较于现有技术,模型配置不需要开发操作模型的代码,可以提高模型配置的效率,接入不同服务的速度比较慢,进而提高接入不同服务的速度。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一的模型配置方法。
在本发明实施例中,完成目标模型属性对应的字段的分配就完成了目标模型的配置,当完成了一个服务所有模型的配置,就完成了该服务的接入。相较于现有技术,相较于现有技术,模型配置不需要开发操作模型的代码,可以提高模型配置的效率,接入不同服务的速度比较慢,进而提高接入不同服务的速度。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置/电子设备/计算机可读存储介质/计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (11)

1.一种模型配置方法,其特征在于,所述方法包括:
获得目标模型,其中,所述目标模型包括预设的目标模型属性;所述目标模型还包括所述目标模型与其他模型的关系,其中,所述其他模型为所获得的模型中除所述目标模型之外的模型;
解析所述目标模型,获得所述目标模型所包括的所述目标模型属性;
针对每一所获得的目标模型属性,为该目标模型属性分配模型属性表中对应的字段;
获得所述目标模型对应的目标数据,其中,所述目标数据包括所述目标模型的模型标识、目标模型属性值和目标关系,所述目标模型属性值为所述目标模型实例化后的模型属性值;所述目标关系为所述目标模型实例化后的关系;
判断所述目标数据是否满足所述目标模型中预先定义的条件;
如果满足,将所述目标模型的模型标识存储至针对模型标识分配的字段,并将所述目标数据中每一目标模型属性值存储至分配的对应的字段;
存储所述目标关系。
2.根据权利要求1所述的方法,其特征在于,所述针对每一所获得的目标模型属性,为该目标模型属性分配模型属性表中对应的字段,包括:
针对每一所获得的目标模型属性,判断预先记录的模型属性与所述模型属性表中的字段的对应关系中是否存在针对该目标模型属性记录的对应关系;
如果不存在,从所述模型属性表的目标字段中,选择一个目标字段分配给该目标模型属性,其中,所述目标字段为所述模型属性表中未与任一模型属性之间存在对应关系的字段。
3.根据权利要求2所述的方法,其特征在于,所述从所述模型属性表的目标字段中,选择一个目标字段分配给该目标模型属性之后,所述方法还包括:
记录该目标模型属性与所选择的目标字段之间的对应关系。
4.根据权利要求1所述的方法,其特征在于,所述判断所述目标数据是否满足所述目标模型中预先定义的条件,包括:
确定所述目标数据中的每一所述目标模型属性值对应的模型属性以及属性类型;
判断所确定模型属性是否与所述目标模型属性一一对应;
如果不对应,则判定所述目标数据不满足所述目标模型中预先定义的条件;
或者,如果对应,判断所确定的属性类型中是否存在不同于对应的目标模型属性预设的属性类型的属性类型;
如果存在,则判定所述目标数据不满足所述目标模型中预先定义的条件;
或者,如果不存在,判断所述目标关系是否与所述目标模型与其他模型的关系相同;
如果不相同,则判定所述目标数据不满足所述目标模型中预先定义的条件;
或者,如果相同,则判定所述目标数据满足所述目标模型中预先定义的条件。
5.根据权利要求1所述的方法,其特征在于,在存储所述目标关系之后,所述方法还包括:
获得服务请求,其中,所述服务请求包括目标模型标识和参考模型属性;
根据预先记录的模型属性与所述模型属性表中的字段的对应关系,确定所述参考模型属性对应的字段;
用所述目标模型标识以及所确定的字段填充预设的查询语句生成结构,生成结构化查询语言SQL语句;
执行所生成的SQL语句,进行所述服务请求所请求的操作。
6.一种模型配置装置,其特征在于,所述装置包括:
第一获得模块,用于获得目标模型,其中,所述目标模型包括预设的目标模型属性;所述目标模型还包括所述目标模型与其他模型的关系,其中,所述其他模型为所获得的模型中除所述目标模型之外的模型;
解析模块,用于解析所述目标模型,获得所述目标模型所包括的所述目标模型属性;
分配模块,用于针对每一所获得的目标模型属性,为该目标模型属性分配模型属性表中对应的字段;
第二获得模块,用于所述目标模型对应的获得目标数据,其中,所述目标数据包括所述目标模型的模型标识、目标模型属性值和目标关系,所述目标模型属性值为所述目标模型实例化后的模型属性值;所述目标关系为所述目标模型实例化后的关系;
判断模块,用于判断所述目标数据是否满足所述目标模型中预先定义的条件;
存储模块,用于在所述判断模块的判断结果为满足的情况下,将所述目标模型的模型标识存储至针对模型标识分配的字段,并将所述目标数据中每一目标模型属性值存储至分配的对应的字段;存储所述目标关系。
7.根据权利要求6所述的装置,其特征在于,所述分配模块,具体用于:
针对每一所获得的目标模型属性,判断预先记录的模型属性与所述模型属性表中的字段的对应关系中是否存在针对该目标模型属性记录的对应关系;
如果不存在,从所述模型属性表的目标字段中,选择一个目标字段分配给该目标模型属性,其中,所述目标字段为所述模型属性表中未与任一模型属性之间存在对应关系的字段。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
记录模块,用于记录该目标模型属性与所选择的目标字段之间的对应关系。
9.根据权利要求6所述的装置,其特征在于,所述判断模块,具体用于:
确定所述目标数据中的每一所述目标模型属性值对应的模型属性以及属性类型;
判断所确定模型属性是否与所述目标模型属性一一对应;
如果不对应,则判定所述目标数据不满足所述目标模型中预先定义的条件;
或者,如果对应,判断所确定的属性类型中是否存在不同于对应的目标模型属性预设的属性类型的属性类型;
如果存在,则判定所述目标数据不满足所述目标模型中预先定义的条件;
或者,如果不存在,判断所述目标关系是否与所述目标模型与其他模型的关系相同;
如果不相同,则判定所述目标数据不满足所述目标模型中预先定义的条件;
或者,如果相同,则判定所述目标数据满足所述目标模型中预先定义的条件。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第三获得模块,用于获得服务请求,其中,所述服务请求包括目标模型标识和参考模型属性;
确定模块,用于根据预先记录的模型属性与所述模型属性表中的字段的对应关系,确定所述参考模型属性对应的字段;
生成模块,用于用所述目标模型标识以及所确定的字段填充预设的查询语句生成结构,生成结构化查询语言SQL语句;
执行模块,用于执行所生成的SQL语句,进行所述服务请求所请求的操作。
11.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
CN201810084736.XA 2018-01-29 2018-01-29 一种模型配置方法、装置及电子设备 Active CN108459842B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810084736.XA CN108459842B (zh) 2018-01-29 2018-01-29 一种模型配置方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810084736.XA CN108459842B (zh) 2018-01-29 2018-01-29 一种模型配置方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN108459842A CN108459842A (zh) 2018-08-28
CN108459842B true CN108459842B (zh) 2021-05-14

Family

ID=63239066

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810084736.XA Active CN108459842B (zh) 2018-01-29 2018-01-29 一种模型配置方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN108459842B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109286672B (zh) * 2018-09-30 2020-11-27 北京金山云网络技术有限公司 一种用户请求的处理方法、装置及服务器
CN111427973B (zh) * 2020-04-21 2023-05-05 上海新致软件股份有限公司 一种规划表数据解析方法
CN114839887A (zh) * 2022-03-23 2022-08-02 青岛海尔科技有限公司 设备属性的配置方法、装置、存储介质及电子装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176778A (zh) * 2011-12-21 2013-06-26 北大方正集团有限公司 网页开发方法和装置
CN103428243A (zh) * 2012-05-21 2013-12-04 阿里巴巴集团控股有限公司 动态网页静态存储的实现方法、设备和系统
CN105956015A (zh) * 2016-04-22 2016-09-21 四川中软科技有限公司 一种基于大数据的服务平台整合方法
CN106294776A (zh) * 2016-08-12 2017-01-04 北京东方车云信息技术有限公司 一种数据处理方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7210097B1 (en) * 2002-05-22 2007-04-24 Pitney Bowes Inc. Method for loading large XML documents on demand

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176778A (zh) * 2011-12-21 2013-06-26 北大方正集团有限公司 网页开发方法和装置
CN103428243A (zh) * 2012-05-21 2013-12-04 阿里巴巴集团控股有限公司 动态网页静态存储的实现方法、设备和系统
CN105956015A (zh) * 2016-04-22 2016-09-21 四川中软科技有限公司 一种基于大数据的服务平台整合方法
CN106294776A (zh) * 2016-08-12 2017-01-04 北京东方车云信息技术有限公司 一种数据处理方法及装置

Also Published As

Publication number Publication date
CN108459842A (zh) 2018-08-28

Similar Documents

Publication Publication Date Title
CN107402992B (zh) 一种分布式NewSQL数据库系统和全文检索建立方法
CN109840429B (zh) 智能合约部署、调用方法和装置
US11669503B2 (en) Building and managing data-processing attributes for modeled data sources
CN109062952B (zh) 一种数据查询方法、装置及电子设备
CN109242420B (zh) 权限控制方法、装置、电子设备及存储介质
CN108304201B (zh) 对象更新方法、装置及设备
WO2020015190A1 (zh) 业务规则的生成方法、电子装置及可读存储介质
CN109492053B (zh) 用于访问数据的方法和装置
WO2017107414A1 (zh) 文件操作方法和装置
CN109558525B (zh) 一种测试数据集的生成方法、装置、设备和存储介质
CN108459842B (zh) 一种模型配置方法、装置及电子设备
CN109656889B (zh) 基于区块链的文件系统实现方法、装置、设备和存储介质
CN103970758A (zh) 数据库访问系统及方法
US20100306638A1 (en) Object templates for data-driven applications
CN111556005A (zh) 权限管理方法、装置、电子设备及存储介质
CN112269659A (zh) 一种资源管理方法、系统及电子设备和存储介质
US20230177363A1 (en) Generation of query templates for knowledge-graph based question answering system
CN111125064A (zh) 一种生成数据库模式定义语句的方法和装置
CN110362404B (zh) 一种基于sql的资源分配方法、装置和电子设备
CN110825395A (zh) 多插件分层部署系统、设备及介质
CN113626223A (zh) 一种接口调用方法和装置
KR20070047675A (ko) 객체 및 엔터티의 표현을 구성하기 위한 방법 및 장치
JP2020129359A (ja) 知識ベースを管理するための方法、装置、設備及び媒体
CN114547055A (zh) 一种数据处理方法及装置
WO2021234019A1 (en) Database management methods and associated apparatus

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