CN111562908A - 一种代码生成方法和装置 - Google Patents
一种代码生成方法和装置 Download PDFInfo
- Publication number
- CN111562908A CN111562908A CN202010296022.2A CN202010296022A CN111562908A CN 111562908 A CN111562908 A CN 111562908A CN 202010296022 A CN202010296022 A CN 202010296022A CN 111562908 A CN111562908 A CN 111562908A
- Authority
- CN
- China
- Prior art keywords
- database
- program code
- code generation
- database metadata
- code
- 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.)
- Withdrawn
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/31—Programming languages or programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种代码生成方法,包括,根据预设的数据库连接参数连接数据库,获取数据库元数据;根据所获取的数据库元数据,运行预先配置的代码生成模板脚本,生成目标程序代码;其中,所述代码生成模板脚本中至少包括:用于在执行时生成目标程序代码文本的指令和数据库元数据访问指令。本发明还公开了一种代码生成装置。
Description
技术领域
本发明涉及计算机技术领域,尤指一种基于模板动态生成代码的方法、装置、存储介质和电子装置。
背景技术
在快节奏、服务化盛行的技术环境下,自动化、快速开发是必须具备的能力。相关开发工具中也具备一些内置插件能够快速生成代码,帮助开发人员提高代码开发效率。例如,IntelliJ IDEA具备内置插件,结合Grovy脚本能够实现生成代码。
但是,这些插件依赖于具体的开发工具,对其他开发工具的使用者并不通用;脚本必须在固定位置存放,不能由用户指定目录分层管理,无法满足多个工程不同脚本生成代码的需要。
因此,更通用、灵活可扩展的代码生成方案对于规模化代码工作十分迫切。
发明内容
为了解决上述技术问题,本发明提供了一种代码生成方法、装置、存储介质和电子装置,能够不依赖于具体的开发工具,获取数据库元数据后,依据代码生成模板脚本,自动生成目标程序代码。
本发明实施例提供一种代码生成方法,包括,
根据预设的数据库连接参数连接数据库,获取数据库元数据;
根据所获取的数据库元数据,运行预先配置的代码生成模板脚本,生成目标程序代码;其中,所述代码生成模板脚本中至少包括:用于在执行时生成目标程序代码文本的指令和数据库元数据访问指令。
本发明实施例还提供一种代码生成装置,包括,
获取模块,设置为根据预设的数据库连接参数连接数据库,获取数据库元数据;
生成模块,设置为根据所获取的数据库元数据,运行预先配置的代码生成模板脚本,生成目标程序代码;其中,所述代码生成模板脚本中至少包括:用于在执行时生成目标程序代码文本的指令和数据库元数据访问指令。
本发明实施例还提供一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一一种代码生成方法。
本发明实施例还提供一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行上述任一一种代码生成方法。
附图说明
图1为实施例一提供的一种代码生成方法的流程图;
图2为实施例二提供的一种代码生成方法的流程图;
图3为实施例二提供的预配置数据的示例;
图4为实施例二中的实体映射对象代码生成模板脚本的示例;
图5为实施例二中的查询接口代码生成模板脚本的示例;
图6为实施例三提供的一种代码生成装置的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步的详细描述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
实施例一
本发明实施例提供一种代码生成方法,包括,
步骤101,根据预设的数据库连接参数连接数据库,获取数据库元数据;
步骤102,根据所获取的数据库元数据,运行预先配置的代码生成模板脚本,生成目标程序代码;其中,所述代码生成模板脚本中至少包括:用于在执行时生成目标程序代码文本的指令和数据库元数据访问指令。
可选地,其中,步骤102中所述运行预先配置的代码生成模板脚本,生成目标程序代码,包括:
执行所述用于在执行时生成目标程序代码文本,获得目标程序代码文本;
执行所述数据库元数据访问指令,获得数据库元数据的属性;
拼接所述目标程序代码文本和数据库元数据的属性,形成所述目标程序代码。
可选地,其中,步骤101中所述获得数据库元数据,包括:
调用预先设置的数据库元数据接口获取所述数据库元数据;
其中,所述预先设置的数据库元数据接口包括至少以下之一:
获取数据库的组织和结构接口、获取数据库表信息接口、获取表字段接口、获取主键接口、数据字段类型转换接口。
可选地,其中,步骤101中所述获得数据库元数据,包括:
根据预设的过滤参数,调用预设的预先设置的数据库元数据接口获取过滤后的数据库元数据。
其中,所述代码生成模板脚本与目标程序代码的编程语言相对应。
可选地,其中,步骤102中所述运行预先配置的代码生成模板脚本,生成目标程序代码,还包括:
根据预先配置的目标程序代码的包名和保存路径,保存所生成的目标程序代码。
可选地,其中,步骤102中所述根据所获取的数据库元数据,运行预先配置的代码生成模板脚本,生成目标程序代码,包括:
当所述数据库元数据包括多个数据库表的数据时,分别根据每个数据库表的数据运行预先配置的代码生成模板脚本,生成对应的目标程序代码。
实施例二
在本实施例所述的方案执行之前,预先配置如下内容:
配置数据连接参数,例如:
可选地,连接不同的数据库,则根据目标数据库的要求对应配置连接参数。不限于本实施例所示例内容。
配置元数据过滤条件,例如:
其中,includes配置需要获取的数据库表的表名,*代表获取全部;excludes配置需要过滤掉的,不需要获取的数据库表的表名,空代表不过滤;
配置代码生成模板脚本的存放目录,例如:
<generate>
<scriptDir>src/main/resource/scripts</scriptDir>
</gerenate>
代码生成模板脚本的存放目录scriptDir,可以包括一个或多个代码生成模板脚本;如果包括多个代码生成模板脚本,则依次执行。
配置目标代码的包名和保存目录,例如:
整体配置文件示例如图3所示。
数据库元数据访问接口例示如下表1所示:
表1,数据库元数据访问接口
其中,数据模型对象示例如下:
表2-CatalogDefinition
表3-SchemaDefinition
属性名 | 注释 |
name | schema名字 |
comment | schema注释 |
catalog | Schema归属的Catalog |
表4-TableDefinition
属性名 | 注释 |
name | 表名字 |
comment | 表注释 |
Schema | table归属的schema |
Type | Table类型:表、视图等 |
表5-ColumnDefinition
表6-PrimaryKeyColumnDefinition
属性名 | 注释 |
name | 字段名字 |
comment | 注释 |
Table | 归属的table |
Pkname | 主键名称 |
Lang_type | 实现语言类型 |
其中,Lang_type表示目标代码语言中对应的类型,如java.lang.Long,java.lang.String等。根据生成目标代码语言的不同,该接口实现时对应的语言类型不同。
上述接口预先被实现,本发明实施例不限于具体的接口实现方案;本领域技术人员根据相关技术方案实现即可。
例如,数据库中包含3个数据表:API信息表,用户信息表,日志表;<scriptDir>src/main/resource/scripts</scriptDir>路径下配置了两个代码生成模板脚本,实体映射对象代码生成模板脚本和表数据查询代码生成模板脚本。
根据本实施例的方法将自动生成3*2个java目标代码文件,其中,针对每一个数据库表分别生成实体映射对象代码文件和表数据查询代码文件。
例如,以API信息(APIInformation)表为例,其表结构如表7所示:
表7:APIInformation
字段名 | 注释 |
Id | 唯一标识 |
Path | Api访问路径 |
Name | Api名称 |
Is_sign | 是否校验签名 |
本发明实施例提供一种代码生成方法,其流程如图2所示,包括:
步骤201,根据预设的数据库连接参数初始化数据库连接;
步骤202,根据预设的配置文件初始化代码生成器;
步骤203,调用数据库元数据访问接口中的获取表信息接口,获取数据库中数据表信息;可选地,本实施例中调用getTables()接口获取表信息;
例如,数据库中有3个数据表,则获取到3个数据表的信息;
其中,以API Information表对应的表信息数据为例,如下:
表table:
{
"name":"api_info",
"comment":"api基本信息",
"scheme":"xxx",
"type":"TABLE"
}
该表信息数据与表4-TableDefinition对应。
步骤204,根据预设的代码生成模板脚本的存放目录,获取到该存放目录下保存的全部代码生成模板脚本;例如,该目录下有2个代码生成模板脚本,如图4,5左侧所示的模板脚本。
步骤205,根据步骤203中获取的全部数据表信息,遍历全部数据表信息,获取各表对应的数据表字段信息;依次执行步骤204中获取的代码生成模板脚本,形成所述目标程序代码。可选地,还获取各表对应的主键信息。
本实施例中,全部数据表信息包括3个表的信息,针对每一个表调用getColumns()获取每个表的全部表字段信息,根据表信息和每个表的全部表字段信息依次运行2个代码生成模板脚本。可选地,还针对每一个表调用getPrimaryKeys()获取每个表的主键信息,根据表信息、每个表的全部表字段信息和每个表的主键信息依次运行2个代码生成模板脚本。
其中,以对API Information表调用getColumns()得到表字段数据为例,如下:
字段columns:
上述示例的API Information表字段数据是与表5-ColumnDefinition对应,简化了其中部分不需要字段。
本实施例中,每个代码生成模板脚本采用如下函数为入口:
**
*生成代码入口函数
*@param table TableDefinition表元数据信息<步骤203输出>
*@param pk PrimaryKeyColumnDefinition主键元数据信息<步骤205输出>
*@param columns List<ColumnDefinition>字段元数据信息集合<步骤205输出>
*@param baseDir String代码生成根目录<从图3标注4获取>
*@param packageName String代码的包名<从图3标注4获取>
*@return
*/
def generate(table,pk,columns,baseDir,packageName)
可选地,图4,5所示的代码生成模板脚本为Grovy脚本;所述脚本在可以在maven框架下运行;可选地,本领域技术人员可以采用其他脚本或运行脚本的工具;
所述代码生成模板脚本中至少包括:用于在执行时生成目标程序代码文本的指令和数据库元数据访问指令;
例如,用于在执行时生成目标程序代码文本的指令:
out.println“package$packageName;”
out.println“@Entity”等,所述用于在执行时生成目标程序代码文本的指令被执行后,获得基本的目标程序代码文本,即与数据库元数据无关的目标程序代码文件。
数据库元数据访问指令:
table.getName()
pk.javaType
table.getName
pk.name等,所述数据库元数据访问指令用于操作/访问数据库元数据的相关属性,所述数据库元数据访问指令被执行后获得数据库元数据的属性。
步骤205中,执行每一个代码生成模板脚本生成对应的目标程序代码,包括:将其中用于在执行时生成目标程序代码文本的指令执行后得到的基本目标程序代码文本,和数据库元数据访问指令执行后获得的数据库元数据的属性拼接,形成所述目标程序代码。
如图4所示,左侧为代码生成模板脚本1,用于生成实体映射对象代码,对于API信息表数据而言,执行步骤205后,生成右侧的目标程序代码(.java文件)。
如图5所示,左侧为代码生成模板脚本2,用于生成表数据查询代码,对于API信息表数据而言,执行步骤205后,生成右侧的目标程序代码(.java文件)。
依次类推,对于其他2个表,也各自生成2个对应的目标程序代码。则本实施例执行步骤201-205后,共生成6个目标程序代码文件。
可以看到,代码生成模板脚本(图4和图5左侧脚本)是与目标程序代码所需的编程语言相对应的。如需生成其他编程语言的目标程序代码,则代码生成模板脚本需对应修改。
其中,步骤205中,执行所述代码生成模板脚本,形成所述目标程序代码,还包括:
根据预设的目标程序代码的包名和保存路径(图3中标注4获取),保存所生成的目标程序代码。
可选地,步骤203,所述调用数据库元数据访问接口中的获取表信息接口,获取数据库中数据表信息,包括:
根据预设的配置元数据过滤条件,获取过滤后的数据库中数据表信息。
例如,<includes>API Information</includes>
表明只获取API Information表的表信息元数据,过滤掉其他表的表信息元数据,则步骤205执行后,只针对API Information生成了2个目标程序代码。
可以看到,根据预先配置的代码生成模板脚本,根据本实施例方案,可以批量自动生成数据库中选定数据表的一个或多个目标程序代码。开发人员可以直接使用这些目标程序代码,或者基于已生成的目标程序代码进行二次开发。大大减小了开发者在编写相似功能代码上的重复劳动。
可选地,如果相似的功能需要针对开发系统中不同的目标程序代码要求,只需利用不用的代码生成模板脚本,就能自动批量生成不同编程语言的目标程序代码。
可选地,上述代码生成模板脚本遵守预设的函数入口要求即可,其模板中包含具体内容,都可以根据各开发系统的需要,对应进行扩展或修改。
基于本发明实施例的方案,可以做到对于每一个代码生成模板脚本而言,都能自动批量生成多个数据库表对应目标程序代码;当数据库系统中存在大量数据库表时,采用本实施例的方案大大提升了目标程序代码的生成效率,减轻了程序员的人工重复劳动。
可选地,当只需生成局部数据库表的对应目标程序代码时,通过配置表过滤属性即可简单实现。
实施例三
本发明实施例提供一种代码生成装置60,其结构如图6,包括,
获取模块601,设置为根据预设的数据库连接参数连接数据库,获取数据库元数据;
生成模块602,设置为根据所获取的数据库元数据,运行预先配置的代码生成模板脚本,生成目标程序代码;其中,所述代码生成模板脚本中至少包括:用于在执行时生成目标程序代码文本的指令和数据库元数据访问指令。
可选地,其中,生成模块602运行预先配置的代码生成模板脚本,生成目标程序代码,包括:
执行所述用于在执行时生成目标程序代码文本,获得目标程序代码文本;
执行所述数据库元数据访问指令,获得数据库元数据的属性;
拼接所述目标程序代码文本和数据库元数据的属性,形成所述目标程序代码。
可选地,其中,获取模块601获得数据库元数据,包括:
调用预先设置的数据库元数据接口获取所述数据库元数据;
其中,所述预先设置的数据库元数据接口包括至少以下之一:
获取数据库的组织和结构接口、获取数据库表信息接口、获取表字段接口、获取主键接口、数据字段类型转换接口。
可选地,其中,获取模块601获得数据库元数据,包括:
根据预设的过滤参数,调用预设的预先设置的数据库元数据接口获取过滤后的数据库元数据。
其中,所述代码生成模板脚本与目标程序代码的编程语言相对应。
可选地,其中,生成模块602运行预先配置的代码生成模板脚本,生成目标程序代码,还包括:
根据预先配置的目标程序代码的包名和保存路径,保存所生成的目标程序代码。
可选地,其中,生成模块602根据所获取的数据库元数据,运行预先配置的代码生成模板脚本,生成目标程序代码,包括:
当所述数据库元数据包括多个数据库表的数据时,分别根据每个数据库表的数据运行预先配置的代码生成模板脚本,生成对应的目标程序代码。
本发明实施例还提供一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一一种代码生成方法。
本发明实施例还提供一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行上述任一一种代码生成方法。
本领域普通技术人员可以理解上述实施例的全部或部分步骤可以使用计算机程序流程来实现,所述计算机程序可以存储于一计算机可读存储介质中,所述计算机程序在相应的硬件平台上(如系统、设备、装置、器件等)执行,在执行时,包括方法实施例的步骤之一或其组合。
可选地,上述实施例的全部或部分步骤也可以使用集成电路来实现,这些步骤可以被分别制作成一个个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
上述实施例中的各装置/功能模块/功能单元可以采用通用的计算装置来实现,它们可以集中在单个的计算装置上,也可以分布在多个计算装置所组成的网络上。
上述实施例中的各装置/功能模块/功能单元以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。上述提到的计算机可读取存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。
Claims (10)
1.一种代码生成方法,包括,
根据预设的数据库连接参数连接数据库,获取数据库元数据;
根据所获取的数据库元数据,运行预先配置的代码生成模板脚本,生成目标程序代码;其中,所述代码生成模板脚本中至少包括:用于在执行时生成目标程序代码文本的指令和数据库元数据访问指令。
2.根据权利要求1所述的方法,其中,
所述运行预先配置的代码生成模板脚本,生成目标程序代码,包括:
执行所述用于在执行时生成目标程序代码文本,获得目标程序代码文本;
执行所述数据库元数据访问指令,获得数据库元数据的属性;
拼接所述目标程序代码文本和数据库元数据的属性,形成所述目标程序代码。
3.根据权利要求1所述的方法,其中,
所述获得数据库元数据,包括:
调用预先设置的数据库元数据接口获取所述数据库元数据;
其中,所述预先设置的数据库元数据接口包括至少以下之一:
获取数据库的组织和结构接口、获取数据库表信息接口、获取表字段接口、获取主键接口、数据字段类型转换接口。
4.根据权利要求1、2或3所述的方法,其中,
所述获得数据库元数据,包括:
根据预设的过滤参数,调用预设的预先设置的数据库元数据接口获取过滤后的数据库元数据。
5.根据权利要求1、2或3所述的方法,其中,
所述代码生成模板脚本与目标程序代码的编程语言相对应。
6.根据权利要求1、2或3所述的方法,其中,
所述运行预先配置的代码生成模板脚本,生成目标程序代码,还包括:
根据预先配置的目标程序代码的包名和保存路径,保存所生成的目标程序代码。
7.根据权利要求1、2或3所述的方法,其中,
所述根据所获取的数据库元数据,运行预先配置的代码生成模板脚本,生成目标程序代码,包括:
当所述数据库元数据包括多个数据库表的数据时,分别根据每个数据库表的数据运行预先配置的代码生成模板脚本,生成对应的目标程序代码。
8.一种代码生成装置,其特征在于,包括,
获取模块,设置为根据预设的数据库连接参数连接数据库,获取数据库元数据;
生成模块,设置为根据所获取的数据库元数据,运行预先配置的代码生成模板脚本,生成目标程序代码;其中,所述代码生成模板脚本中至少包括:用于在执行时生成目标程序代码文本的指令和数据库元数据访问指令。
9.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至7任一项中所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至7任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010296022.2A CN111562908A (zh) | 2020-04-15 | 2020-04-15 | 一种代码生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010296022.2A CN111562908A (zh) | 2020-04-15 | 2020-04-15 | 一种代码生成方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111562908A true CN111562908A (zh) | 2020-08-21 |
Family
ID=72074319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010296022.2A Withdrawn CN111562908A (zh) | 2020-04-15 | 2020-04-15 | 一种代码生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111562908A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100218165A1 (en) * | 2009-02-26 | 2010-08-26 | International Business Machines Corporation | Optimizing code generation system with input data integration |
CN107368346A (zh) * | 2017-07-06 | 2017-11-21 | 万惠投资管理有限公司 | 一种基于元数据和脚本引擎的代码生成方法及装置 |
CN109885291A (zh) * | 2019-01-25 | 2019-06-14 | 深圳市元征科技股份有限公司 | 一种代码自动生成方法及代码自动生成器 |
CN110674625A (zh) * | 2019-08-29 | 2020-01-10 | 浙江数链科技有限公司 | 代码生成的方法、装置、计算机设备和存储介质 |
-
2020
- 2020-04-15 CN CN202010296022.2A patent/CN111562908A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100218165A1 (en) * | 2009-02-26 | 2010-08-26 | International Business Machines Corporation | Optimizing code generation system with input data integration |
CN107368346A (zh) * | 2017-07-06 | 2017-11-21 | 万惠投资管理有限公司 | 一种基于元数据和脚本引擎的代码生成方法及装置 |
CN109885291A (zh) * | 2019-01-25 | 2019-06-14 | 深圳市元征科技股份有限公司 | 一种代码自动生成方法及代码自动生成器 |
CN110674625A (zh) * | 2019-08-29 | 2020-01-10 | 浙江数链科技有限公司 | 代码生成的方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109062952B (zh) | 一种数据查询方法、装置及电子设备 | |
US20220253298A1 (en) | Systems and methods for transformation of reporting schema | |
CN110795455B (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
CN109933571B (zh) | 数据库设计文档生成方法、装置及计算机可读存储介质 | |
US20130332449A1 (en) | Generating data processing code from a directed acyclic graph | |
CN110489310B (zh) | 一种记录用户操作的方法、装置、存储介质及计算机设备 | |
US8869125B2 (en) | Systems and methods for demarcating information related to one or more blocks in an application | |
CN112363695B (zh) | Pmml文件及其运行时环境与工业软件的集成方法 | |
CN104679500B (zh) | 实体类自动生成实现方法及装置 | |
CN102946415B (zh) | 一种移动终端本地应用的实现方法和装置 | |
US10693962B1 (en) | Language and mechanism for modeling and exporting storage platform topologies, attributes, and behaviors | |
CN109116828B (zh) | 一种控制器中模型代码配置方法和装置 | |
CN106874163A (zh) | 一种显示软件错误码信息的方法及系统 | |
CN104461531A (zh) | 一种报表系统自定义函数的实现方法 | |
CN111427577A (zh) | 代码处理方法、装置及服务器 | |
US9373093B2 (en) | Gateway service manager for business object applications | |
CN103678396B (zh) | 一种基于数据模型的数据备份方法和装置 | |
CN106598825B (zh) | 电子设备、规范日志代码输出方法及装置 | |
CN113687827B (zh) | 基于微件的数据列表生成方法、装置、设备及存储介质 | |
CN110889013A (zh) | 一种基于xml的数据关联方法、装置、服务器及存储介质 | |
CN111178025A (zh) | 核电站运行导则的编辑方法、装置、计算机设备及存储介质 | |
CN113282850B (zh) | 资源标签管理方法、装置、电子设备、系统及存储介质 | |
CN111488144A (zh) | 一种数据处理方法以及设备 | |
CN111562908A (zh) | 一种代码生成方法和装置 | |
CN112799638B (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200821 |