CN108536443B - 基于声明式的.net对象和多种数据格式自动相互转化的方法 - Google Patents
基于声明式的.net对象和多种数据格式自动相互转化的方法 Download PDFInfo
- Publication number
- CN108536443B CN108536443B CN201810273213.XA CN201810273213A CN108536443B CN 108536443 B CN108536443 B CN 108536443B CN 201810273213 A CN201810273213 A CN 201810273213A CN 108536443 B CN108536443 B CN 108536443B
- Authority
- CN
- China
- Prior art keywords
- data
- net
- net object
- type
- module
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
Abstract
基于声明式的.net对象和多种数据格式自动相互转化的方法,包括以下步骤:步骤1:构建数据格式与.net对象的可读写模块;步骤2:输入数据,确定数据的格式类型;步骤3:由可读写模块进行分析标记Attribute的.net对象类型;步骤4:基于当前数据的类型,获得指令;当指令为数据关联至.net对象时,进行步骤5,当指令为.net对象关联至数据时,进行步骤6;步骤5:调用交互模块对当前数据进行数据关联至.net对象的操作;进行步骤7;步骤6:调用交互模块对当前数据进行.net对象关联至数据的操作,将读出数据保存到文件或数据库等媒介;进行步骤7;步骤7:结束。本发明能够轻松打通前后端的交互瓶颈,达到前后端的同步。
Description
技术领域
本发明涉及电数字数据处理的技术领域,特别涉及一种数据格式与.net对象的转换方法。
背景技术
对于绝大多数应用,都存在前端和后台,数据交互在现有的数据处理与开发中是无法避免的。
然而,前端提交的数据需要转换成后端的对象,由于系统的版本更新、各个程序员对于数据和对象的表达差异,往往造成转换方式不统一、数据及对象格式不匹配的情况,导致程序员无法完全对在先的数据或对象进行应用,程序可扩展性差,兼容性差。
这样的操作方式直接导致代码的耦合、冗余且不美观,运算量大,如果没有一种简洁的解决方式将给开发人员带来长期重复劳动,而且影响代码的可读性。
发明内容
为了解决现有技术中存在的上述问题,本发明提供一种优化的数据格式与.net对象的转换方法,使用统一的可读写模块解决前后端不同步的问题。
本发明所采用的技术方案是,基于声明式的.net对象和多种数据格式自动相互转化的方法,所述方法包括以下步骤:
步骤1:构建数据格式与.net对象的可读写模块;
步骤2:输入数据,确定数据的格式类型;
步骤3:分析由可读写模块进行标记的.net对象类型;
步骤4:基于当前数据的类型,获得指令;当指令为数据关联至.net对象时,进行步骤5,当指令为.net对象关联至数据时,进行步骤6;
步骤5:调用交互模块对当前数据进行数据关联至.net对象的操作;进行步骤7;
步骤6:调用交互模块对当前数据进行.net对象关联至数据的操作,将读出数据保存至文件库或其他媒介;进行步骤7;
步骤7:结束。
优选地,所述数据的类型包括Xml、Json、Url中的QueryString。
优选地,所述可读写模块还包括用于与.net类库中的类型DataSet、DataRow的交互、Url中的QueryString格式的交互。
优选地,所述步骤1中,数据可读写模块的构建包括以下步骤:
步骤1.1:针对数据格式声明若干Attribute;
步骤1.2:根据数据格式的结构,构造对应的.net对象,并在相关的.net对象的property上标记对应的Attribute。
优选地,所述Attribute包括映射到数据格式的属性和用于限定准确性的额外属性。
优选地,所述步骤3的分析包括以下步骤:
步骤3.1:通过反射,检索当前的类型所有的.net对象的property;
步骤3.2:检查每个.net对象的property是否标记了对应的Attribute,对检索出标注了Attribute的.net对象的property进行归类存储;
步骤3.3:检查当前类型的基类是否是.net的顶级基类Object,如果不是,获取基类型,重复步骤3.1,直至获得完整的结构。
优选地,所述步骤5包括以下步骤:
步骤5.1:获得步骤3的分析结果,获取完整结构;
步骤5.2:当读取到数据的一个元素时,对应存储结构检索是否存在;如果存在,进行下一步,否则直接跳到该元素的结尾,结束;
步骤5.3:根据结构中存储的属性和子元素进行进一步分析,当有适配的属性或元素值,通过默认或者Attribute中定义的类型转换器将数据的值转换成对应的.net类型,并通过反射存储到相应.net对象的property中;
步骤5.4:分析完毕后,对应的.net对象存储的值将和对应的数据格式的内容适配,可直接使用.net对象进行各种相关的操作。
优选地,所述步骤6包括以下步骤:
步骤6.1:获得步骤3的分析结果,获取完整结构;
步骤6.2:根据结构中的指示,通过反射获取.net对象的property值,通过可读写模块转换为相应的字符串,写入相应的数据格式的属性或者元素中;如果存在子元素,则不断向下,直到写完整个完整的对象为止。
优选地,步骤5和步骤6所述交互模块具有可扩展接口,可扩展接口配合设置有配置插件模块。
本发明提供了一种优化的数据格式与.net对象的转换方法,通过构建数据格式与.net对象的可读写模块,输入并判断数据的格式类型,分析由可读写模块进行标记的.net对象类型,基于当前数据的类型,获得指令;当指令为数据关联至.net对象时,调用交互模块对当前数据进行数据关联至.net对象的操作,当指令为.net对象关联至数据时,调用交互模块对当前数据进行.net对象关联至数据的操作,将读出数据保存至文件库或其他媒介,完成后结束。本发明主要应用在后端。
本发明的优点是:能够轻松打通前后端的交互瓶颈,达到前后端的同步,转换方式清晰,数据及对象格式匹配,程序可扩展性强,兼容性好,解决统一修改和管理的问题,有助于更简洁明了获取结果。
附图说明
图1是本发明方法的流程图。
具体实施方式
下面结合实施例对本发明做进一步的详细描述,但本发明的保护范围并不限于此。
本发明涉及基于声明式的.net对象和多种数据格式自动相互转化的方法,所述方法包括以下步骤。
所述数据的类型包括Xml、Json、Url中的QueryString。
所述可读写模块还包括用于与.net类库中的类型DataSet、DataRow的交互。
本发明中,事实上,数据的类型包括但不限于Xml和Json数据类型,系统采用插件的方式来注册读写.net对象的数据格式,Xml和Json最常见。此外,系统还可以实现与.net类库中的类型DataSet、DataRow的互通,和Url中的QueryString的互通,如果有新的需求,还可以根据新的需求编写相关的插件来读写相应的数据格式。
本发明中,每种插件对相关Attribute的解释可以根据实际需要,解释一部分或者解释全部。
步骤1:构建数据格式与.net对象的可读写模块。
所述步骤1中,数据可读写模块的构建包括以下步骤:
步骤1.1:针对数据格式声明若干Attribute;
步骤1.2:根据数据格式的结构,构造对应的.net对象,并在相关的.net对象的property上标记对应的Attribute。
所述Attribute包括映射到数据格式的属性和用于限定准确性的额外属性。
本发明中,Attribute是.net对象的语言特性,通过声明自己的Attribute,可以给相应的.net对象、property等附着额外的信息。Attribute可以是针对Xml属性的SimpleAttributeAttribute、针对简单Xml元素的SimpleElementAttribute、针对含有内嵌子元素的Xml元素的ObjectElementAttribute等。
本发明中,举例来说,定义类型(节选部分定义代码):
此处,SimpleAttributeAttribute是映射到Xml的属性,但是可以为其添加足够的额外属性来保证描述的准确性,其中,LocalName、NamespaceType、NamespaceUri是针对XML中的Namespace的特性,DefaultValue是默认值,而Required则是进行必录检查。
本发明中,步骤1.2是指根据数据格式的结构,如XML的结构,声明对应的.net对象,并在相关的property上标记对应的Attribute,如:
此时,这个.net对象对应的Xml为:
<SimpleConfig Height="100"Check="true">
<Name>Hello</Name>
</SimpleConfig>
如果读取完成,那么.net对象的property中Check将是true,Name将是Hello,Height为100。
步骤2:输入数据,确定数据的格式类型。
本发明中,可以定义不同的Attribute,对于Attribute的分析方式也会由于数据格式的不同而有所不同,所以需要对数据格式做出判断。例如,SimpleAttributeAttribute用于分析Xml中的属性而用于针对Json中的值对,SimpleElementAttribute在Xml元素中为简单值且不包含属性,在Json中表示值对,TextContentAttribute在Xml元素中为简单值且单包含属性,在Json中不被支持,ObjectElementAttribute表示Xml元素中含有子元素而针对Json中的子对象,DictionaryAttribute在Xml元素为名称/简单值对且不太关注名称,而在Json对象中为名称/值对,也不太关注名称,ObjectDictionaryAttribute在Xml元素和Json对象均为为名称/子元素对且不太关注名称,TagElementAttribute在Xml元素仅仅是外层嵌套,使用该标记可以越过该层嵌套,减少子类定义,而在Json标记仅仅是外层嵌套,使用该标记可以越过该层嵌套,减少子类定义。
步骤3:分析由可读写模块进行标记的.net对象类型。
所述步骤3中,分析包括以下步骤:
步骤3.1:通过反射,检索当前的类型所有的.net对象的property;
步骤3.2:检查每个.net对象的property是否标记了对应的Attribute,对检索出标注了Attribute的.net对象的property进行归类存储;
步骤3.3:检查当前类型的基类是否是.net的顶级基类Object,如果不是,获取基类型,重复步骤3.1,直至获得完整的结构。
本发明中,如果需要读取格式数据,首先分析标记了Attribute的.net对象类型。由于面向对象支持继承结构,这种分析除了分析自身外,还将不断分析其基类型,如果检测出Attribute是ObjectElementAttribute,或者ObjectDictionaryAttribute这种类型的Attribute,将继续钻取分析其对应的.net类型。这样,将获取一个完整的格式。可见,如果对应.net声明的property支持嵌套结构,分析程序即会向内钻取,分析其内部的声明结构,一直得到一个完整结构为止。
步骤4:基于当前数据的类型,获得指令;当指令为数据关联至.net对象时,进行步骤5,当指令为.net对象关联至数据时,进行步骤6。
步骤5:调用交互模块对当前数据进行数据关联至.net对象的操作;进行步骤7。
所述步骤5包括以下步骤:
步骤5.1:获得步骤3的分析结果,获取完整结构;
步骤5.2:当读取到数据的一个元素时,对应存储结构检索是否存在;如果存在,进行下一步,否则直接跳到该元素的结尾,结束;
步骤5.3:根据结构中存储的属性和子元素进行进一步分析,当有适配的属性或元素值,通过默认或者Attribute中定义的类型转换器将数据的值转换成对应的.net类型,并通过反射存储到相应.net对象的property中;
步骤5.4:分析完毕后,对应的.net对象存储的值将和对应的数据格式的内容适配,可直接使用.net对象进行各种相关的操作。
本发明中,以XML为例,采用Pull的方式对XML进行分析。当读取一个元素时,将去对应存储结构去检索是否存在,如果不存在,将直接跳到该元素的结尾;如果存在,将根据结构中存储的属性,子元素等进行进一步分析,当有适配的属性或者元素值,将通过默认或者Attribute中定义的类型转换器将Xml的值转换成对应的.net类型,并通过反射存储到相应的property中
步骤6:调用交互模块对当前数据进行.net对象关联至数据的操作,将读出数据保存至文件库或其他媒介;进行步骤7。
所述步骤6包括以下步骤:
步骤6.1:获得步骤3的分析结果,获取完整结构;
步骤6.2:根据结构中的指示,通过反射获取.net对象的值,通过可读写模块转换为相应的字符串,写入相应的数据格式的属性或者元素中;如果存在子元素,则不断向下,直到写完整个完整的对象为止。
步骤7:结束。
以下是采用本发明方法将.net对象和多种数据格式自动相互转化的结果:
.net类型
和对等的xml自动相互转化的格式:
<SimpleConfig Height="100"Check="true">
<Name>Hello</Name>
</SimpleConfig>
和对等的json自动相互转化的格式:
{"Height":"100","Check":"true","Name":"Hello"}
和对等的Url中的QueryString自动相互转化的格式:
Height=100&Check=true&Name=Hello
和对等的DataRow自动相互转化:
DataRow是.net类库的一种类型,无法直接看见。其结构类似于数据库中的一行数据。实际上,这个记录就是会将字段名为Height的值设为100,字段名为Check的值设为true,字段名为Name的值设为Hello。反向一样可以操作。
和DataSet转化
DataSet是表的集合,不适合这种简单的平面数据,而是复杂的复合数据。比如,以上面的类型为基础,做新的声明:
这时,和DataSet进行转换的插件,就会把ConfigList转换成一张表,因为这是一个集合,所以集合中的每个元素都会变成一个DataRow,而添加到表中。
当然,可以在ComplexConfig中添加新的集合类型,同样会变成新的表,而里面的集合也会变成DataRow的集合添加到表中。
反向亦如此,DataSet中的表,会把每行转化成一个对象,添加到对应的集合中。
所述交互模块具有可扩展接口,可扩展接口配合设置有配置插件模块。
本发明中,交互模块还可以通过可扩展接口配合设置插件模块。配置插件就是通过定义一个规范,后续的开发人员可以定义自己的.net的Xml片段,并通过配置插件提供的机构,自动注册到系统中去,这样就对自己定义Xml片段有了对应的解释。系统核心代码能通过Xml的tag name认出它是哪个插件会调用相应的代码去解释。
本发明中,插件模块使Xml的定义具有无限扩展能力,这样系统内核只需要定义一个恰当的Xml框架,就能够获得良好的扩展性,处理各式各样的问题。配置插件由于整合了前述Attribute中的相关内容,所以读写Xml并不需要去写特别的分析代码。Json格式对配置插件的支持有限,后续将考虑让Json完全支持配置插件,同时考虑配置标签的版本化,即相同的Xml Tag Name因为版本的不同,会自动映射到不同的.net类上,这方便升级和对下兼容。
本发明通过构建数据格式与.net对象的可读写模块,输入并判断数据的格式类型,分析由可读写模块进行标记的.net对象类型,基于当前数据的类型,获得指令;当指令为数据关联至.net对象时,调用交互模块对当前数据进行数据关联至.net对象的操作,当指令为.net对象关联至数据时,调用交互模块对当前数据进行.net对象关联至数据的操作,将读出数据保存至文件库,完成后结束。本发明主要应用在后端,能够轻松打通前后端的交互瓶颈,达到前后端的同步,转换方式清晰,数据及对象格式匹配,程序可扩展性强,兼容性好,解决统一修改和管理的问题,有助于更简洁明了获取结果。
本说明书实施例所述的内容仅仅是对发明构思的实现形式的列举,本发明的保护范围不应当被视为仅限于实施例所陈述的具体形式,本发明的保护范围也及于本领域技术人员根据本发明构思所能够想到的等同技术手段。
Claims (9)
1.基于声明式的.net对象和多种数据格式自动相互转化的方法,其特征在于:所述方法包括以下步骤:
步骤1:构建数据格式与.net对象的可读写模块;
步骤2:输入数据,确定数据的格式类型;
步骤3:由可读写模块进行分析标记Attribute的.net对象类型;
步骤4:基于当前数据的类型,获得指令;当指令为数据关联至.net对象时,进行步骤5,当指令为.net对象关联至数据时,进行步骤6;
步骤5:调用交互模块对当前数据进行数据关联至.net对象的操作;进行步骤7;
步骤6:调用交互模块对当前数据进行.net对象关联至数据的操作,将读出数据保存到文件或数据库;进行步骤7;
步骤7:结束。
2.根据权利要求1所述的基于声明式的.net对象和多种数据格式自动相互转化的方法,其特征在于:所述数据的类型包括Xml、Json、Url中的QueryString数据格式。
3.根据权利要求1所述的基于声明式的.net对象和多种数据格式自动相互转化的方法,其特征在于:步骤1所述可读写模块还包括用于.net类库中的DataSet、DataRow的交互、Url中的QueryString格式的交互。
4.根据权利要求1所述的基于声明式的.net对象和多种数据格式自动相互转化的方法,其特征在于:步骤1中,数据可读写模块的构建包括以下步骤:
步骤1.1:针对数据格式声明若干Attribute;
步骤1.2:根据数据格式的结构,构造对应的.net对象类型,并在相关的.net对象类型的property上标记对应的Attribute。
5.根据权利要求4所述的基于声明式的.net对象和多种数据格式自动相互转化的方法,其特征在于:所述Attribute包括映射到数据格式的属性和用于限定准确性的额外属性。
6.根据权利要求1所述的基于声明式的.net对象和多种数据格式自动相互转化的方法,其特征在于:所述步骤3中,分析包括以下步骤:
步骤3.1:通过反射,检索当前的类型所有的.net对象类型的property;
步骤3.2:检查每个.net对象类型的property是否标记了对应的Attribute,对检索出标注了Attribute的.net对象的property进行归类存储;
步骤3.3:检查当前类型的基类是否是.net的顶级基类Object,如果不是,获取基类型,重复步骤3.1,直至获得完整的结构。
7.根据权利要求1所述的基于声明式的.net对象和多种数据格式自动相互转化的方法,其特征在于:所述步骤5包括以下步骤:
步骤5.1:获得步骤3的分析结果,获取完整结构;
步骤5.2:当读取到数据的一个元素时,对应存储结构检索是否存在;如果存在,进行下一步,否则直接跳到该元素的结尾,结束;
步骤5.3:根据结构中存储的属性和子元素进行进一步分析,当有适配的属性或元素值,通过默认或者Attribute中定义的类型转换器将数据的值转换成对应的.net类型,并通过反射存储到相应.net对象的property中;
步骤5.4:分析完毕后,对应的.net对象存储的值将和对应的数据格式的内容适配,可直接使用.net对象进行操作。
8.根据权利要求1所述的基于声明式的.net对象和多种数据格式自动相互转化的方法,其特征在于:所述步骤6包括以下步骤:
步骤6.1:获得步骤3的分析结果,获取完整结构;
步骤6.2:根据结构中的指示,通过反射获取.net对象相关property的值,通过可读写模块转换为相应的字符串,写入相应的数据格式的属性或者元素中;如果存在子元素,则不断向下,直到写完整个完整的对象为止。
9.根据权利要求1所述的基于声明式的.net对象和多种数据格式自动相互转化的方法,其特征在于:步骤5和步骤6所述的交互模块具有可扩展接口,可扩展接口配合设置有配置插件的模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810273213.XA CN108536443B (zh) | 2018-03-29 | 2018-03-29 | 基于声明式的.net对象和多种数据格式自动相互转化的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810273213.XA CN108536443B (zh) | 2018-03-29 | 2018-03-29 | 基于声明式的.net对象和多种数据格式自动相互转化的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108536443A CN108536443A (zh) | 2018-09-14 |
CN108536443B true CN108536443B (zh) | 2021-03-05 |
Family
ID=63482631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810273213.XA Active CN108536443B (zh) | 2018-03-29 | 2018-03-29 | 基于声明式的.net对象和多种数据格式自动相互转化的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108536443B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5119465A (en) * | 1989-06-19 | 1992-06-02 | Digital Equipment Corporation | System for selectively converting plurality of source data structures through corresponding source intermediate structures, and target intermediate structures into selected target structure |
JP2007188366A (ja) * | 2006-01-16 | 2007-07-26 | Fuji Electric Fa Components & Systems Co Ltd | コンパイル装置 |
CN103389991A (zh) * | 2012-05-09 | 2013-11-13 | 阿里巴巴集团控股有限公司 | 数据交互的方法及装置以及数据转换的方法及装置 |
CN104317925A (zh) * | 2014-10-31 | 2015-01-28 | 北京思特奇信息技术股份有限公司 | 一种高效的前端开发展示方法及系统 |
CN104462274A (zh) * | 2014-11-25 | 2015-03-25 | 北京国双科技有限公司 | 数据处理方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070226707A1 (en) * | 2002-11-01 | 2007-09-27 | Catahan Nardo B Jr | Transforming product description information |
US7334223B2 (en) * | 2004-01-19 | 2008-02-19 | Tata Consultancy Services, Ltd. | Apparatus and method for automatically migrating client server applications to other architectures and platforms |
-
2018
- 2018-03-29 CN CN201810273213.XA patent/CN108536443B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5119465A (en) * | 1989-06-19 | 1992-06-02 | Digital Equipment Corporation | System for selectively converting plurality of source data structures through corresponding source intermediate structures, and target intermediate structures into selected target structure |
JP2007188366A (ja) * | 2006-01-16 | 2007-07-26 | Fuji Electric Fa Components & Systems Co Ltd | コンパイル装置 |
CN103389991A (zh) * | 2012-05-09 | 2013-11-13 | 阿里巴巴集团控股有限公司 | 数据交互的方法及装置以及数据转换的方法及装置 |
CN104317925A (zh) * | 2014-10-31 | 2015-01-28 | 北京思特奇信息技术股份有限公司 | 一种高效的前端开发展示方法及系统 |
CN104462274A (zh) * | 2014-11-25 | 2015-03-25 | 北京国双科技有限公司 | 数据处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108536443A (zh) | 2018-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101122841B1 (ko) | 중첩된 표로 스키마 없는 데이터 매핑을 위한 시스템과방법 | |
CN105760534B (zh) | 自定义的可序列化的数据结构、hadoop集群、服务器及其应用方法 | |
US7784036B2 (en) | Methods and systems for transforming a parse graph into an and/or command tree | |
US20060190491A1 (en) | Database access system and database access method | |
US11334549B2 (en) | Semantic, single-column identifiers for data entries | |
US8397157B2 (en) | Context-free grammar | |
US20070006196A1 (en) | Methods and systems for extracting information from computer code | |
CN103412853A (zh) | 一种针对文档转换器的测试用例自动生成方法 | |
US20100306207A1 (en) | Method and system for transforming xml data to rdf data | |
CN111913739B (zh) | 一种服务接口原语定义方法和系统 | |
CN109062572B (zh) | 一种组件调用方法、装置、设备及存储介质 | |
CN116011400A (zh) | 一种项目标准测试文档自动化生成方法及装置 | |
US11138206B2 (en) | Unified metadata model translation framework | |
CN108664546B (zh) | Xml数据结构转换方法和装置 | |
US10776351B2 (en) | Automatic core data service view generator | |
US8768969B2 (en) | Method and system for efficient representation, manipulation, communication, and search of hierarchical composite named entities | |
CN109325217B (zh) | 一种文件转换方法、系统、装置及计算机可读存储介质 | |
US10275462B2 (en) | Automatic translation of string collections | |
CN111090668B (zh) | 数据检索方法及装置、电子设备和计算机可读存储介质 | |
CN108536443B (zh) | 基于声明式的.net对象和多种数据格式自动相互转化的方法 | |
CN111508562A (zh) | 流程描述性语言的可视化显示方法、装置、设备和介质 | |
CN108595164A (zh) | 一种数据格式与Java对象的转换方法 | |
CN115629763A (zh) | 目标代码的生成方法、npu指令的显示方法及装置 | |
Prabhune et al. | P-PIF: a ProvONE provenance interoperability framework for analyzing heterogeneous workflow specifications and provenance traces | |
CN114722112A (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 |