CN114168111A - 组件化路由实现方法、设备、产品及存储介质 - Google Patents

组件化路由实现方法、设备、产品及存储介质 Download PDF

Info

Publication number
CN114168111A
CN114168111A CN202111484662.7A CN202111484662A CN114168111A CN 114168111 A CN114168111 A CN 114168111A CN 202111484662 A CN202111484662 A CN 202111484662A CN 114168111 A CN114168111 A CN 114168111A
Authority
CN
China
Prior art keywords
routing
class
annotation information
code
service component
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.)
Granted
Application number
CN202111484662.7A
Other languages
English (en)
Other versions
CN114168111B (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 58 Information Technology Co Ltd
Original Assignee
Beijing 58 Information 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 58 Information Technology Co Ltd filed Critical Beijing 58 Information Technology Co Ltd
Priority to CN202111484662.7A priority Critical patent/CN114168111B/zh
Publication of CN114168111A publication Critical patent/CN114168111A/zh
Application granted granted Critical
Publication of CN114168111B publication Critical patent/CN114168111B/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
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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

Abstract

本申请实施例提供一种组件化路由实现方法、设备、产品及存储介质。在本申请实施例中,通过在业务组件的源代码中封装出一层用于描述业务组件相对路径的路由类和路由方法,可以建立业务组件与路由类及路由方法的对应关系;并且,将现有方案中在业务组件的源代码中添加注解信息改为在路由类和路由方法中添加注解信息,减少了对业务组件的源代码的侵入性;业务组件的路由注册功能在源代码编译阶段交由插件完成,有助于提升应用程序的启动速度;在业务组件有互访需求的情况下,根据路由注册信息可以确定要访问的目标业务组件对应的路由类和路由方法并对其进行调用,可以实现对目标业务组件的访问功能。

Description

组件化路由实现方法、设备、产品及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种组件化路由实现方法、设备、产品及存储介质。
背景技术
在组件化开发模式下,不同类型的业务组件对应的访问方式可能不同,为了对不同类型业务组件之间的访问方式进行通用性处理,通常采用路由作为业务组件之间通信的桥梁。传统路由通信方式为:在业务组件的代码中添加注解,路由编译时扫描各业务组件的代码并根据预先添加在代码中的注解生成各业务组件之间的路由关系;在APP启动时进行路由注册,将各业务组件之间的路由关系添加到路由表中;进而在APP运行过程中,可根据路由表中各业务组件之间的路由关系,实现不同业务组件之间的互通。
但是,在业务组件的代码中添加注解,对业务组件的代码有一定的侵入性,并且在APP启动时进行路由注册也影响APP的启动速度。
发明内容
本申请的多个方面提供一种组件化路由实现方法、设备、产品及存储介质,用以减少对业务组件的代码的侵入性,并提升APP的启动速度。
本申请实施例提供一种组件化路由实现方法,包括:在业务组件的源代码开发过程中,生成用于描述所述业务组件相对路径的类作为路由类,并在所述路由类中编写用于指向所述业务组件的方法作为路由方法,以及在所述路由类和路由方法上添加注解信息;对所述业务组件的源代码进行编译,得到字节码文件,并调用Gradle插件对所述字节码文件进行扫描,得到所述路由类和路由方法对应的注解信息;构建路由表,生成用于提供路由服务的路由代码,将所述注解信息写入所述路由表中,并将所述路由代码插入所述字节码文件对应的路由启动方法中,加载所述字节码文件并得到可执行文件;以及在所述可执行文件运行过程中,根据业务组件之间的互访请求调用所述路由代码,结合所述路由表中的注解信息实现业务组件之间互访。
在一可选实施例中,在对所述业务组件的源代码进行编译之前,还包括:在当前开发工程对应的主配置文件中,添加扫描限定条件,所述扫描限定条件包括用于锁定所述路由类和路由方法的扫描条件,以供Gradle插件仅针对所述路由类和路由方法进行扫描,还包括用于限定路由代码在字节码文件中的插入位置的位置条件,所述位置条件用于指向所述字节码文件对应的路由启动方法;相应地,将所述路由代码插入所述字节码文件对应的路由启动方法中,包括:根据所述位置条件中的插入位置,将所述路由代码插入所述字节码文件对应的路由启动方法中。
在一可选实施例中,在所述可执行文件运行过程中,根据业务组件之间的互访请求调用所述路由代码,结合所述路由表中的注解信息实现业务组件之间互访,包括:在所述可执行文件运行过程中,获取第一业务组件发起的访问请求,所述访问请求包括URI格式的路径信息;调用所述路由代码,从所述路由表中查询与所述路径信息对应的目标注解信息,并调用与所述目标注解信息对应的路由类和路由方法,以访问与所述路径信息对应的第二业务组件。
在一可选实施例中,所述路由类包括分别与所述URI格式的路径信息中的域名部分和路径部分对应的主机类和路径类,则调用所述路由代码,从所述路由表中查询与所述路径信息对应的目标注解信息,包括:从所述URI格式的路径信息中解析出对应域名部分的主机值和对应路径部分的路径值以及请求参数;将所述主机值、路径值以及请求参数作为入参,调用所述路由代码,根据所述入参从所述路由表中匹配目标注解信息;其中,所述请求参数对应所述路由方法对应的注解信息。
在一可选实施例中,调用与所述目标注解信息对应的路由类和路由方法,包括:利用观察者模式及异步响应式编程,从线程池中选择一个空闲状态的目标线程执行所述路由代码,以调用与所述目标注解信息对应的路由类和路由方法。
在一可选实施例中,从线程池中选择一个空闲状态的目标线程执行所述路由代码,包括:利用所述目标线程采用异步调用方式调用与所述目标注解信息对应的路由类和路由方法。在一可选实施例中,在调用与所述目标注解信息对应的路由类和路由方法之后,还包括:接收所述第二业务组件通过所述路由类返回的调用结果,并将所述调用结果包装成可被观察的对象返回给所述第一业务组件。
在一可选实施例中,在调用Gradle插件对所述字节码文件进行扫描,得到所述路由类和路由方法对应的注解信息的情况下,还包括:将扫描得到的注解信息添加到缓存中,以在所述可执行文件运行过程中再次响应到业务组件之间的互访请求时,调用所述路由代码并从所述缓存中读取所述注解信息,结合所述注解信息实现业务组件之间互访。
本申请实施例还提供一种组件化路由实现设备,包括:处理器以及存储有计算机程序的存储器,所述处理器用于执行所述计算机程序,以用于:在业务组件的源代码开发过程中,生成用于描述所述业务组件相对路径的类作为路由类,并在所述路由类中编写用于指向所述业务组件的方法作为路由方法,以及在所述路由类和路由方法上添加注解信息;对所述业务组件的源代码进行编译,得到字节码文件,并调用Gradle插件对所述字节码文件进行扫描,得到所述路由类和路由方法对应的注解信息;构建路由表,生成用于提供路由服务的路由代码,将所述注解信息写入所述路由表中,并将所述路由代码插入所述字节码文件对应的路由启动方法中,加载所述字节码文件并得到可执行文件;以及在所述可执行文件运行过程中,根据业务组件之间的互访请求调用所述路由代码,结合所述路由表中的注解信息实现业务组件之间互访。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当所述计算机程序被处理器执行时,致使所述处理器实现所述组件化路由实现方法中的任一项步骤。
本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现所述组件化路由实现方法中的任一项步骤。
在本申请实施例中,通过在业务组件的源代码中封装出一层用于描述业务组件相对路径的路由类和路由方法,可以建立业务组件与路由类及路由方法的对应关系;并且,将现有方案中在业务组件的源代码中添加注解信息改为在路由类和路由方法中添加注解信息,减少了对业务组件的源代码的侵入性;业务组件的路由注册功能在源代码编译阶段交由插件完成,有助于提升应用程序的启动速度;在业务组件有互访需求的情况下,根据路由注册信息可以确定要访问的目标业务组件对应的路由类和路由方法并对其进行调用,可以实现对目标业务组件的访问功能。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1a为本申请实施例提供的一种组件化路由实现方法的流程图;
图1b为本申请实施例提供的一种组件化路由实现方法整体的流程图;
图2为本申请实施例提供的一种组件化路由实现设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了解决现有组件化开发模式下,因在业务组件的代码中添加注解,对业务组件的代码造成一定侵入性的问题,本申请实施例以安卓开发环境为例,提供了一种组件化路由实现方法。图1a为本申请实施例提供的组件化路由实现方法的流程图,如图1a所示,方法包括:
S1、在业务组件的源代码开发过程中,生成用于描述业务组件相对路径的类作为路由类,并在路由类中编写用于指向业务组件的方法作为路由方法,以及在路由类和路由方法上添加注解信息;
S2、对业务组件的源代码进行编译,得到字节码文件,并调用Gradle插件对字节码文件进行扫描,得到路由类和路由方法对应的注解信息;
S3、构建路由表,生成用于提供路由服务的路由代码,将注解信息写入路由表中,并将路由代码插入字节码文件对应的路由启动方法中,加载字节码文件并得到可执行文件;
S4、在可执行文件运行过程中,根据业务组件之间的互访请求调用路由代码,结合路由表中的注解信息实现业务组件之间互访。
在实际应用中,业务组件之间的每次访问、跳转、调用等过程实际上是一次路由过程,为了建立业务组件之间的路由关系,在本申请实施例中,在业务组件的源代码开发过程中,在业务组件的源代码中封装出一层用于提供路由服务的路由文件包。在该路由文件包中,包括用于描述业务组件相对路径的类作为路由类,在路由类中编写用于指向业务组件的方法作为路由方法,以及在路由类和路由方法上添加注解信息,分别作为路由类和路由方法的标识信息,以用于在路由注册时构建业务组件之间的路由关系。
例如,对于用于展示用户信息的业务组件,假设其对应的唯一标识为“UserInfo”,则可以在其对应的路由类上添加注解信息“UserInfo”;进一步,假设唯一标识“UserInfo”对应的路由类中包括用于获取用户信息的路由方法“getUserInfo(string userName)”,则可以在该路由方法上添加注解信息“getUserInfo”。
在本申请实施例中,路由文件中包括不同业务组件对应的路由类,可选地,每个业务组件对应的路由类可以是一个或多个,在此不做限定。相应地,每个路由类中的路由方法也可以是一个或多个,每个路由方法对应业务组件的一种具体功能。在每个业务组件对应的路由类是多个的情况下,还可以根据各路由类所提供路由服务的类型,将多个路由类区分为不同的类型。例如,路由类的类型可以包括用于提供业务组件唯一标识的路由类和用于提供业务组件功能的路由类;其中,用于提供业务组件功能的路由类中包括路由方法,用于提供业务组件唯一标识的路由类与业务组件为一一对应关系,用于提供业务组件功能的路由类与业务组件可以为一一对应关系,也可以为多对一的关系,在此不做限定。
进一步,为了区分不同类型路由类,在对不同类型的路由类添加注解信息时,还可以进行区分。例如,对于用于展示用户信息的业务组件,在用于提供业务组件唯一标识的路由类上可以添加“UserInfoProvider”注解信息,在用于提供业务组件功能的路由类上可以添加“UserInfoService”注解信息,以区分不同路由类的类型。
在本申请实施例中,在业务组件的源代码中封装出路由类和路由方法的情况下,在对业务组件的源代码进行编译并得到对应的字节码文件后,调用插件实现业务组件的路由注册的过程。在本申请实施例中,基于TransformAPI和ASM框架开发了一款Gradle插件,Gradle插件在被调用的情况下,可以扫描业务组件的源代码经编译后生成的字节码文件,并从自己码文件中扫描开发阶段在路由类和路由方法中添加的注解信息。基于此,Gradle插件可以构建用于存储业务组件之间路由关系的路由表,并将扫描得到的注解信息按照路由关系存储在路由表中。其中,路由关系是指业务组件的相对路径与该业务组件的路由类和路由方法的注解信息的对应关系。
并且,根据业务组件之间的路由关系以及扫描得到的注解信息,Gradle插件还可以生成用于提供路由服务的路由代码,并将生成的路由代码插入字节码文件对应的路由启动方法中;其中,路由代码用于在被执行的情况下,根据路由表中的路由关系确定待访问的目标业务组件。进一步,在Gradle插件完成业务组件的路由注册过程之后,编译器可继续加载业务组件的字节码文件,得到对应的可执行文件,并在业务组件的可执行文件运行过程中,根据业务组件之间的互访请求调用路由代码,结合路由表中的注解信息实现业务组件之间互访。
在本申请实施例中,为了在Gradle插件对业务组件进行路由注册时,确定业务组件之间的路由关系,在对业务组件的源代码进行编译之前,还可以在当前开发工程对应的主配置文件中添加扫描限定条件。可选地,该扫描限定条件可以包括用于锁定路由类和路由方法的扫描条件,例如,该扫描限定条件为指定对哪些文件包下的哪些业务组件进行扫描,或者,指定排除对哪些文件包下的哪些业务组件进行扫描;基于此,Gradle插件可以仅针对锁定业务组件对应的字节码进行扫描,得到其对应的路由类和路由方法的注解信息,并根据扫描到的注解信息构建业务组件的路由关系。
进一步可选地,该扫描限定条件还可以包括用于限定路由代码在字节码文件中的插入位置的位置条件,可选地,该位置条件用于指向字节码文件对应的路由启动方法,则Gradle插件在生成路由代码的情况下,可以根据该位置条件找到字节码文件对应的路由启动方法,并将路由代码插入字节码文件对应的路由启动方法中。
在本申请实施例中,将业务组件之间的一次路由过程抽象为一次网络请求,即第一业务组件调用第二业务组件的过程,相当于第一业务组件向第二业务组发起一次网路请求。基于此,本申请实施例将业务组件之间请求的路径信息格式规范为统一资源标识符(Uniform Resource Identifier,URI)格式;其中,URI格式的路径信息中对应中域名(host)部分的内容为用于提供业务组件唯一标识的路由类对应的注解信息,对应路径(path)部分的内容为用于提供业务组件功能的路由类对应的注解信息,对应请求参数(query)部分的内容为路由方法对应的注解信息。
基于上述,在业务组件的可执行文件运行过程中,可以获取第一业务组件发起的访问请求,并获取访问请求中包括的URI格式的路径信息,以及从路径信息中识别被访问的第二业务组件对应的唯一标识,以及第二业务组件对应的路由类和路由方法分别对应的注解信息。进一步,通过调用路由代码,可以根据获取到路径信息从路由表中查询与路径信息对应的目标注解信息,并调用与目标注解信息对应的路由类和路由方法,以访问与路径信息对应的第二业务组件。可选的,以基于Java编程语言的开发环境为例,在查找到目标注解信息的情况下,可以通过Java编程语言提供的反射机制,通过反射实例化的方式,根据目标注解信息生成对应的路由类对象,并通过生成的路由类对象调用与目标注解信息对应的路由类和路由方法,以访问与路径信息对应的第二业务组件。
在本申请实施例中,对业务组件对应的路由类除了可以从实现功能的角度分类,还可以从请求访问的角度将路由类分为主机类和路径类,分别与URI格式的路径信息中的域名部分和路径部分对应。基于此,在上述实施例中,用于提供业务组件唯一标识的路由类可以作为主机类,用于提供业务组件功能的路由类可以作为路径类。则在调用路由代码,从路由表中查询与路径信息对应的目标注解信息时,可以从URI格式的路径信息中解析出对应域名部分的主机值和对应路径部分的路径值以及请求参数,并将主机值、路径值以及请求参数作为入参,调用路由代码,以根据入参从路由表中匹配目标注解信息。
例如,若从第一业务组件发起的访问请求中获取到的路径信息为:MyRouter://UserInfoProvider/UserInfoService?query={“action”:“getUserInfo”,“data”={“Mike”}},则可以解析出主机值为“UserInfoProvider”,路径值为“UserInfoService”,请求参数为{“action”:“getUserInfo”,“data”={“Mike”}}。基于此,根据解析出的主机值、路径值和请求参数等信息,可以从路由表中查找主机类对应的注解信息“UserInfoProvider”和路径类对应的注解信息“UserInfoService”,以及查找路径类中的目标路由方法对应的注解信息“getUserInfo”,并将“Mike”作为目标路由方法的参数,以在调用目标路由方法时,根据该参数获取用户对象“Mike”对应的用户信息。
在本申请实施例中,不限定调用与目标注解信息对应的路由类和路由方法的实现形式,可选地,可以利用观察者模式及异步响应式编程,从线程池中选择一个空闲状态的目标线程执行路由代码,以调用与目标注解信息对应的路由类和路由方法;可选地,异步响应式编程可以通过RXAndroid异步调用框架实现,当然并不限于此。进一步可选地,在从线程池中选择一个空闲状态的目标线程执行路由代码时,可以利用目标线程采用异步调用方式调用与目标注解信息对应的路由类和路由方法,并在调用与目标注解信息对应的路由类和路由方法之后,接收第二业务组件通过路由类返回的调用结果,并将调用结果包装成可被观察的对象返回给第一业务组件。
在实际应用中,业务组件之间的互访过程时有发生,为了提升业务组件之间的互访效率,在本申请实施例中,在调用Gradle插件对字节码文件进行扫描,得到路由类和路由方法对应的注解信息的情况下,还可以将扫描得到的注解信息添加到缓存中,以在业务组件的可执行文件运行过程中再次响应到业务组件之间的互访请求时,调用路由代码并从缓存中读取注解信息,结合注解信息实现业务组件之间互访,无需每次都从路由表中查询目标注解信息,提升业务组件之间的互访效率。
下面就业务组件的源代码从开发阶段、编译阶段到运行阶段,对本申请实施例的整体流程进行说明。
图1b为本申请实施例的整体流程图,如图1b所示,首先,在业务组件的源代码开发阶段主要做两件准备工作,一是在业务组件的源代码中封装出一层路由文件包,在路由文件包中编写用于描述业务组件相对路径的路由类,并在路由类中编写用于指向业务组件的路由方法,以及在路由类和路由方法上添加注解信息;二是在当前开发工程对应的主配置文件中添加扫描限定条件和用于限定路由代码在字节码文件中的插入位置的位置条件,作为Gradle插件对业务组件进行路由注册时的依据。
其次,如图1b所示,在业务组件的源代码编译阶段,在对业务组件的源代码编译生成对应的字节码文件的情况下,通过调用Gradle插件来实现业务组件的路由注册。Gradle插件根据在业务组件的源代码开发阶段添加到主配置文件中的扫描限定条件,可以有针对性的扫描业务组件的字节码文件,并从扫描的字节码文件中获取对应的注解信息;进一步,Gradle插件可以将扫描到的注解信息添加到构建的路由表中,并生成用于执行路由过程的路由代码;进一步,根据在业务组件的源代码开发阶段添加到主配置文件中的插入位置条件,将生成的路由代码插入到业务组件的字节码文件对应的启动方法中,完成对业务组件的路由注册。基于此,对业务组件的字节码文件继续编译,生成对应的可执行文件,可在运行过程中实现业务之间的互访需求。
最后,如图1b所示,在业务组件的运行阶段,在响应到第一业务组件发起的互访请求的情况下,可以从互访请求中识别第一业务组件要访问的第二业务组件对应的路径信息,并根据识别到的路径信息从路由表(首次访问)或缓存(非首次访问)中查找与路径信息对应的目标注解信息,该目标注解信息指向第一业务组件要访问的第二业务组件对应的路由类和路由方法;进一步,根据查找到的目标注解信息,可以通过反射实例化的方式生成所属于第二业务组件对应的路由类对象;进而,基于查找到的目标注解信息,可以通过该路由类对象调用与目标注解信息对应的路由类以及其中的路由方法,进而访问对应的第二业务组件。
在业务组件的运行阶段,第一业务组件访问第二业务组件的过程对应如图1b中右下部分所示;其中,第一业务组件首先向路由框架发起互访请求,路由框架在通过上述过程识别出目标注解信息并生成对应的路由类对象之后,可以通过路由类对象调用第二业务组件对应的路由类和路由方法,以根据所调用的路由类和路由方法,访问对应的第二业务组件,以及接收从第二业务组件返回的访问结果。
在本申请实施例中,通过在业务组件的源代码中封装出一层用于描述业务组件相对路径的路由类和路由方法,可以建立业务组件与路由类及路由方法的对应关系;并且,将现有方案中在业务组件的源代码中添加注解信息改为在路由类和路由方法中添加注解信息,减少了对业务组件的源代码的侵入性;业务组件的路由注册功能在源代码编译阶段交由插件完成,有助于提升应用程序的启动速度;在业务组件有互访需求的情况下,根据路由注册信息可以确定要访问的目标业务组件对应的路由类和路由方法并对其进行调用,可以实现对目标业务组件的访问功能。
通过这种方式,不仅减少了对业务组件源代码的侵入性,还能提升应用程序的启动速度;并且,将用于提供路由服务的功能统一封装管理,也能减轻开发人员的工作压力及代码维护成本。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤S1至步骤S4的执行主体可以为设备A;又比如,步骤S1的执行主体可以为设备A,步骤S1至步骤S4的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如S1、S2等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
本申请实施例还提供一种组件化路由实现设备,图2为组件化路由实现设备的结构示意图,如图2所示,组件化路由实现设备包括:处理器21以及存储有计算机程序的存储器22;其中,处理器21和存储器22可以是一个或多个。
存储器22,主要用于存储计算机程序,这些计算机程序可被处理器21执行,致使处理器21控制组件化路由实现设备实现相应功能、完成相应动作或任务。除了存储计算机程序之外,存储器22还可被配置为存储其它各种数据以支持在组件化路由实现设备上的操作。这些数据的示例包括用于在组件化路由实现设备上操作的任何应用程序或方法的指令。
存储器22,可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
在本申请实施例中,并不限定处理器21的实现形态,例如可以是但不限于CPU、GPU或MCU等。处理器21可以看作是组件化路由实现设备的控制系统,可用于执行存储器22中存储的计算机程序,以控制组件化路由实现设备实现相应功能、完成相应动作或任务。值得说明的是,根据组件化路由实现设备实现形态以及所处于场景的不同,其所需实现的功能、完成的动作或任务会有所不同;相应地,存储器22中存储的计算机程序也会有所不同,而处理器21执行不同计算机程序可控制组件化路由实现设备实现不同的功能、完成不同的动作或任务。
在一些可选实施例中,如图2所示,组件化路由实现设备还可包括:显示器23、电源组件24以及通信组件25等其它组件。图2中仅示意性给出部分组件,并不意味着组件化路由实现设备只包括图2所示组件,针对不同的应用需求,组件化路由实现设备还可以包括其他组件,例如,在存在语音交互需求的情况下,如图2所示,组件化路由实现设备还可以包括音频组件26。关于组件化路由实现设备可包含的组件,具体可视组件化路由实现设备的产品形态而定,在此不做限定。
在本申请实施例中,当处理器21执行存储器22中的计算机程序时,以用于:在业务组件的源代码开发过程中,生成用于描述业务组件相对路径的类作为路由类,并在路由类中编写用于指向业务组件的方法作为路由方法,以及在路由类和路由方法上添加注解信息;对业务组件的源代码进行编译,得到字节码文件,并调用Gradle插件对字节码文件进行扫描,得到路由类和路由方法对应的注解信息;构建路由表,生成用于提供路由服务的路由代码,将注解信息写入路由表中,并将路由代码插入字节码文件对应的路由启动方法中,加载字节码文件并得到可执行文件;以及在可执行文件运行过程中,根据业务组件之间的互访请求调用路由代码,结合路由表中的注解信息实现业务组件之间互访。
在一可选实施例中,处理器21在对业务组件的源代码进行编译之前,还用于:在当前开发工程对应的主配置文件中,添加扫描限定条件,扫描限定条件包括用于锁定路由类和路由方法的扫描条件,以供Gradle插件仅针对路由类和路由方法进行扫描,还包括用于限定路由代码在字节码文件中的插入位置的位置条件,位置条件用于指向字节码文件对应的路由启动方法;相应地,将路由代码插入字节码文件对应的路由启动方法中,包括:根据位置条件中的插入位置,将路由代码插入字节码文件对应的路由启动方法中。
在一可选实施例中,在可执行文件运行过程中,处理器21在根据业务组件之间的互访请求调用路由代码,结合路由表中的注解信息实现业务组件之间互访时,用于:在可执行文件运行过程中,获取第一业务组件发起的访问请求,访问请求包括URI格式的路径信息;调用路由代码,从路由表中查询与路径信息对应的目标注解信息,并调用与目标注解信息对应的路由类和路由方法,以访问与路径信息对应的第二业务组件。
在一可选实施例中,路由类包括分别与URI格式的路径信息中的域名部分和路径部分对应的主机类和路径类,则处理器21在调用路由代码,从路由表中查询与路径信息对应的目标注解信息时,用于:从URI格式的路径信息中解析出对应域名部分的主机值和对应路径部分的路径值以及请求参数;将主机值、路径值以及请求参数作为入参,调用路由代码,根据入参从路由表中匹配目标注解信息;其中,请求参数对应路由方法对应的注解信息。
在一可选实施例中,处理器21在调用与目标注解信息对应的路由类和路由方法时,用于:利用观察者模式及异步响应式编程,从线程池中选择一个空闲状态的目标线程执行路由代码,以调用与目标注解信息对应的路由类和路由方法。
在一可选实施例中,处理器21在从线程池中选择一个空闲状态的目标线程执行路由代码时,用于:利用目标线程采用异步调用方式调用与目标注解信息对应的路由类和路由方法。
在一可选实施例中,处理器21在调用与目标注解信息对应的路由类和路由方法之后,还用于:接收第二业务组件通过路由类返回的调用结果,并将调用结果包装成可被观察的对象返回给第一业务组件。
在一可选实施例中,处理器21在调用与目标注解信息对应的路由类和路由方法之后,还用于:接收第二业务组件通过路由类返回的调用结果,并将调用结果包装成可被观察的对象返回给第一业务组件。
在一可选实施例中,处理器21在调用Gradle插件对字节码文件进行扫描,得到路由类和路由方法对应的注解信息的情况下,还用于:将扫描得到的注解信息添加到缓存中,以在可执行文件运行过程中再次响应到业务组件之间的互访请求时,调用路由代码并从缓存中读取注解信息,结合注解信息实现业务组件之间互访。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由组件化路由实现设备执行的各步骤。
相应地,本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,计算机程序/指令被处理器执行时能够实现上述组件化路由实现方法实施例中的任一项步骤。
上述实施例中的通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
上述实施例中的显示器包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
上述实施例中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
上述实施例中的音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (11)

1.一种组件化路由实现方法,其特征在于,包括:
在业务组件的源代码开发过程中,生成用于描述所述业务组件相对路径的类作为路由类,并在所述路由类中编写用于指向所述业务组件的方法作为路由方法,以及在所述路由类和路由方法上添加注解信息;
对所述业务组件的源代码进行编译,得到字节码文件,并调用Gradle插件对所述字节码文件进行扫描,得到所述路由类和路由方法对应的注解信息;
构建路由表,生成用于提供路由服务的路由代码,将所述注解信息写入所述路由表中,并将所述路由代码插入所述字节码文件对应的路由启动方法中,加载所述字节码文件并得到可执行文件;以及
在所述可执行文件运行过程中,根据业务组件之间的互访请求调用所述路由代码,结合所述路由表中的注解信息实现业务组件之间互访。
2.根据权利要求1所述的方法,其特征在于,在对所述业务组件的源代码进行编译之前,还包括:
在当前开发工程对应的主配置文件中,添加扫描限定条件,所述扫描限定条件包括用于锁定所述路由类和路由方法的扫描条件,以供Gradle插件仅针对所述路由类和路由方法进行扫描,还包括用于限定路由代码在字节码文件中的插入位置的位置条件,所述位置条件用于指向所述字节码文件对应的路由启动方法;
相应地,将所述路由代码插入所述字节码文件对应的路由启动方法中,包括:根据所述位置条件中的插入位置,将所述路由代码插入所述字节码文件对应的路由启动方法中。
3.根据权利要求1所述的方法,其特征在于,在所述可执行文件运行过程中,根据业务组件之间的互访请求调用所述路由代码,结合所述路由表中的注解信息实现业务组件之间互访,包括:
在所述可执行文件运行过程中,获取第一业务组件发起的访问请求,所述访问请求包括URI格式的路径信息;
调用所述路由代码,从所述路由表中查询与所述路径信息对应的目标注解信息,并调用与所述目标注解信息对应的路由类和路由方法,以访问与所述路径信息对应的第二业务组件。
4.根据权利要求3所述的方法,其特征在于,所述路由类包括分别与所述URI格式的路径信息中的域名部分和路径部分对应的主机类和路径类,则调用所述路由代码,从所述路由表中查询与所述路径信息对应的目标注解信息,包括:
从所述URI格式的路径信息中解析出对应域名部分的主机值和对应路径部分的路径值以及请求参数;
将所述主机值、路径值以及请求参数作为入参,调用所述路由代码,根据所述入参从所述路由表中匹配目标注解信息;其中,所述请求参数对应所述路由方法对应的注解信息。
5.根据权利要求3所述的方法,其特征在于,调用与所述目标注解信息对应的路由类和路由方法,包括:
利用观察者模式及异步响应式编程,从线程池中选择一个空闲状态的目标线程执行所述路由代码,以调用与所述目标注解信息对应的路由类和路由方法。
6.根据权利要求5所述的方法,其特征在于,从线程池中选择一个空闲状态的目标线程执行所述路由代码,包括:
利用所述目标线程采用异步调用方式调用与所述目标注解信息对应的路由类和路由方法。
7.根据权利要求6所述的方法,其特征在于,在调用与所述目标注解信息对应的路由类和路由方法之后,还包括:
接收所述第二业务组件通过所述路由类返回的调用结果,并将所述调用结果包装成可被观察的对象返回给所述第一业务组件。
8.根据权利要求1-7任一项所述的方法,其特征在于,在调用Gradle插件对所述字节码文件进行扫描,得到所述路由类和路由方法对应的注解信息的情况下,还包括:
将扫描得到的注解信息添加到缓存中,以在所述可执行文件运行过程中再次响应到业务组件之间的互访请求时,调用所述路由代码并从所述缓存中读取所述注解信息,结合所述注解信息实现业务组件之间互访。
9.一种组件化路由实现设备,其特征在于,包括:处理器以及存储有计算机程序的存储器,所述处理器用于执行所述计算机程序,以用于:
在业务组件的源代码开发过程中,生成用于描述所述业务组件相对路径的类作为路由类,并在所述路由类中编写用于指向所述业务组件的方法作为路由方法,以及在所述路由类和路由方法上添加注解信息;
对所述业务组件的源代码进行编译,得到字节码文件,并调用Gradle插件对所述字节码文件进行扫描,得到所述路由类和路由方法对应的注解信息;
构建路由表,生成用于提供路由服务的路由代码,将所述注解信息写入所述路由表中,并将所述路由代码插入所述字节码文件对应的路由启动方法中,加载所述字节码文件并得到可执行文件;以及
在所述可执行文件运行过程中,根据业务组件之间的互访请求调用所述路由代码,结合所述路由表中的注解信息实现业务组件之间互访。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序被处理器执行时,致使所述处理器实现权利要求1-8任一项所述方法中的步骤。
11.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现权利要求1-8任一项所述的组件化路由实现方法。
CN202111484662.7A 2021-12-07 2021-12-07 组件化路由实现方法、设备、产品及存储介质 Active CN114168111B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111484662.7A CN114168111B (zh) 2021-12-07 2021-12-07 组件化路由实现方法、设备、产品及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111484662.7A CN114168111B (zh) 2021-12-07 2021-12-07 组件化路由实现方法、设备、产品及存储介质

Publications (2)

Publication Number Publication Date
CN114168111A true CN114168111A (zh) 2022-03-11
CN114168111B CN114168111B (zh) 2024-04-05

Family

ID=80483920

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111484662.7A Active CN114168111B (zh) 2021-12-07 2021-12-07 组件化路由实现方法、设备、产品及存储介质

Country Status (1)

Country Link
CN (1) CN114168111B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112199092A (zh) * 2020-09-17 2021-01-08 上海硬通网络科技有限公司 应用的开发方法、装置及电子设备
CN114866451A (zh) * 2022-04-29 2022-08-05 深圳依时货拉拉科技有限公司 iOS端路由通信改进方法、装置、存储介质和设备
CN116360752A (zh) * 2023-06-02 2023-06-30 钱塘科技创新中心 面向java的函数式编程方法、智能终端和存储介质

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030040896A1 (en) * 2001-08-17 2003-02-27 Mcwilliams Thomas M. Method and apparatus for cycle-based computation
US20090249288A1 (en) * 2008-03-28 2009-10-01 International Business Machines Corporation Rebuildable service-oriented applications
US20100125854A1 (en) * 2008-11-18 2010-05-20 Accenture Global Services Gmbh Event based routing between presentation and business logic components
US20140130009A1 (en) * 2012-11-07 2014-05-08 Oracle International Corporation System and method for composing a telecommunication application by orchestrating application components
CN108536436A (zh) * 2018-03-15 2018-09-14 链家网(北京)科技有限公司 Android系统基于URI的方法级别路由方法及装置
CN108563432A (zh) * 2018-03-14 2018-09-21 广东能龙教育股份有限公司 一种通过路由配置的Android应用程序组件化快速开发方法
CN110007925A (zh) * 2019-04-01 2019-07-12 睿驰达新能源汽车科技(北京)有限公司 一种提升应用程序运行性能的方法及装置
US20190370333A1 (en) * 2018-06-04 2019-12-05 International Business Machines Corporation Semi-Automatic Process for Creating a Natural Language Processing Resource
CN110928548A (zh) * 2019-11-14 2020-03-27 腾讯音乐娱乐科技(深圳)有限公司 一种数据处理方法以及设备
CN111324333A (zh) * 2018-12-17 2020-06-23 中移(杭州)信息技术有限公司 一种基于组件化的软件开发方法及装置
WO2020155776A1 (zh) * 2019-01-28 2020-08-06 平安科技(深圳)有限公司 一种基于核心模块的应用程序的生成方法及设备
CN111538530A (zh) * 2020-04-29 2020-08-14 中国银行股份有限公司 页面跳转方法及系统、存储介质及电子设备
CN112214219A (zh) * 2019-06-24 2021-01-12 腾讯科技(深圳)有限公司 一种组件处理方法、装置、服务器及存储介质
CN112769706A (zh) * 2020-12-24 2021-05-07 平安银行股份有限公司 组件化路由方法及系统

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030040896A1 (en) * 2001-08-17 2003-02-27 Mcwilliams Thomas M. Method and apparatus for cycle-based computation
US20090249288A1 (en) * 2008-03-28 2009-10-01 International Business Machines Corporation Rebuildable service-oriented applications
US20100125854A1 (en) * 2008-11-18 2010-05-20 Accenture Global Services Gmbh Event based routing between presentation and business logic components
US20140130009A1 (en) * 2012-11-07 2014-05-08 Oracle International Corporation System and method for composing a telecommunication application by orchestrating application components
CN108563432A (zh) * 2018-03-14 2018-09-21 广东能龙教育股份有限公司 一种通过路由配置的Android应用程序组件化快速开发方法
CN108536436A (zh) * 2018-03-15 2018-09-14 链家网(北京)科技有限公司 Android系统基于URI的方法级别路由方法及装置
US20190370333A1 (en) * 2018-06-04 2019-12-05 International Business Machines Corporation Semi-Automatic Process for Creating a Natural Language Processing Resource
CN111324333A (zh) * 2018-12-17 2020-06-23 中移(杭州)信息技术有限公司 一种基于组件化的软件开发方法及装置
WO2020155776A1 (zh) * 2019-01-28 2020-08-06 平安科技(深圳)有限公司 一种基于核心模块的应用程序的生成方法及设备
CN110007925A (zh) * 2019-04-01 2019-07-12 睿驰达新能源汽车科技(北京)有限公司 一种提升应用程序运行性能的方法及装置
CN112214219A (zh) * 2019-06-24 2021-01-12 腾讯科技(深圳)有限公司 一种组件处理方法、装置、服务器及存储介质
CN110928548A (zh) * 2019-11-14 2020-03-27 腾讯音乐娱乐科技(深圳)有限公司 一种数据处理方法以及设备
CN111538530A (zh) * 2020-04-29 2020-08-14 中国银行股份有限公司 页面跳转方法及系统、存储介质及电子设备
CN112769706A (zh) * 2020-12-24 2021-05-07 平安银行股份有限公司 组件化路由方法及系统

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112199092A (zh) * 2020-09-17 2021-01-08 上海硬通网络科技有限公司 应用的开发方法、装置及电子设备
CN112199092B (zh) * 2020-09-17 2024-03-15 上海硬通网络科技有限公司 应用的开发方法、装置及电子设备
CN114866451A (zh) * 2022-04-29 2022-08-05 深圳依时货拉拉科技有限公司 iOS端路由通信改进方法、装置、存储介质和设备
CN114866451B (zh) * 2022-04-29 2023-10-03 深圳依时货拉拉科技有限公司 iOS端路由通信改进方法、装置、存储介质和设备
CN116360752A (zh) * 2023-06-02 2023-06-30 钱塘科技创新中心 面向java的函数式编程方法、智能终端和存储介质
CN116360752B (zh) * 2023-06-02 2023-08-22 钱塘科技创新中心 面向java的函数式编程方法、智能终端和存储介质

Also Published As

Publication number Publication date
CN114168111B (zh) 2024-04-05

Similar Documents

Publication Publication Date Title
CN114168111B (zh) 组件化路由实现方法、设备、产品及存储介质
EP2827244A1 (en) Extension mechanism for scripting language compiler
US20140298318A1 (en) Computer-executable application packaging method, computer-executable device and storage media performing the same
EP3848798A1 (en) Information processing method and apparatus, storage medium, and electronic device
CN112463123B (zh) 任务编译方法、装置、网络节点、系统及存储介质
CN111399840B (zh) 一种模块开发方法及装置
CN103838572A (zh) 一种安卓开发包的打包系统和方法
US20180060048A1 (en) Hybrid Deoptimization Mechanism for Class Hierarchy Analysis
CN112947934A (zh) 一种动态变换业务逻辑的方法、设备及介质
CN108170430B (zh) 一种界面展示的方法及系统
CN110399384B (zh) Udf适配方法、数据处理方法、设备及存储介质
CN111596951A (zh) 一种工程文件的配置方法及装置
WO2018001041A1 (zh) 接口实现方法、装置、机顶盒及存储介质
CN112256355B (zh) 数据驱动的系统功能加载方法、设备及存储介质
CN110837446A (zh) 应用于嵌入式系统的设备管理方法及装置、介质以及嵌入式设备
CN112764796A (zh) 安装包生成系统
CN110018831B (zh) 程序处理方法、装置及计算机可读存储介质
CN112115394A (zh) 数据展示方法、服务器、终端和介质
KR100818919B1 (ko) 메소드 호출 방법 및 이를 이용한 자바 가상 머신
KR20130012603A (ko) 복수의 운영체제와 호환 가능한 가상머신 생성 방법 및 가상머신 프로그램을 저장한 기록매체
CN111796865B (zh) 一种字节码文件修改方法、装置、终端设备及介质
CN114358936A (zh) 一种基于微服务区块链的智能合约运行方法
CN114546359A (zh) Dsl描述文件生成方法、装置、设备及存储介质
CN108932130B (zh) 一种实现服务器功能调用的代码生成方法及装置
WO2019157891A1 (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