CN111290818A - 创建应用程序的操作方法及应用程序的操作方法 - Google Patents
创建应用程序的操作方法及应用程序的操作方法 Download PDFInfo
- Publication number
- CN111290818A CN111290818A CN202010076657.1A CN202010076657A CN111290818A CN 111290818 A CN111290818 A CN 111290818A CN 202010076657 A CN202010076657 A CN 202010076657A CN 111290818 A CN111290818 A CN 111290818A
- Authority
- CN
- China
- Prior art keywords
- layer
- visual
- use case
- creating
- visual layer
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
Abstract
本发明的实施方式提供了一种创建应用程序的操作方法。所述方法包括:创建视觉层,该视觉层用于展示显示界面;创建用例层,用例层定义有一个或多个用例;以及创建控制层。其中,控制层用于:获取视觉层在生命周期中当前阶段的状态信息;以及根据状态信息及一个或多个用例,控制视觉层更新显示界面。本发明的方法通过由控制器获取视觉层的生命周期的当前阶段,可以实现控制层在视觉层的生命周期中的任意阶段执行处理操作。相较于现有技术中视觉层通知控制层的管理方式,可以在一定程度上解决视觉层生命周期管理混乱,视觉层生命周期管理侵入性较强的技术问题。
Description
技术领域
本发明的实施方式涉及计算机技术领域,更具体地,本发明的实施方式涉及一种创建应用程序的操作方法及应用程序的操作方法。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在程序开发中,往往追求依托简洁的架构进行业务开发,以求尽量降低程序中各功能部分的耦合性和依赖性,便于开发人员对程序进行测试。同时,为了便于非开发人员参与到程序开发项目中,往往希望将各功能模块化,以快速清晰的明白各个功能模块负责什么样的业务。
从臭名昭著的MVC(Model-View-Controller),到MVVM(Model-View-View-Model),再到控制器(Presenter)任务过重的MVP(Model-View-Presenter),现有的程序开发框架中代码复用均存在问题。Presenter的职责也使得开发人员的重心过多的沉溺于如何重构代码之上,甚至久而久之就会演变为破窗理论。
The Clean Architecture(整洁的架构)是改善测试、代码混乱和代码复用问题的理论,众多权威人士对其具有极高的认可度。但传统的The Clean Architecture的实现方案存在视觉层生命周期管理混乱、控制器承担责任过重等技术问题。
发明内容
因此在现有技术中,程序开发的框架在实现方案上存在使用不友好、各功能模块耦合较重的问题。
为此,非常需要一种改进的应用程序的创建方法,通过控制器来获取视觉层的生命周期,从而便于通过控制器在视觉层的各种状态下执行控制操作,以此提高视觉层生命周期管理的规范性,提高程序开发和框架维护的友好性。
在本上下文中,本发明的实施方式期望提供一种能够得到对交互界面(视觉层)的生命周期进行有效控制的应用程序的创建操作方法。
在本发明实施方式的第一方面中,提供了一种创建应用程序的操作方法,该方法包括:创建视觉层,该视觉层用于展示显示界面;创建用例层,该用例层定义有一个或多个用例;以及创建控制层。该控制层用于:获取视觉层在生命周期中当前阶段的状态信息;以及根据状态信息及一个或多个用例,控制视觉层更新显示界面。
在本发明的一个实施例中,上述创建应用程序的操作方法还包括:创建封装有所述视觉层的声明周期的调用接口。上述获取所述状态信息包括:通过代理类调用所述调用接口,获取所述视觉层在所述生命周期中当前阶段的状态信息。上述控制视觉层更新所述显示界面包括:根据状态信息,调用一个或多个用例中的至少一个用例,得到与状态信息相对应的反馈信息;以及将反馈信息发送给视觉层,以使视觉层根据反馈信息更新显示界面。
在本发明的另一实施例中,上述创建应用程序的操作方法还包括:创建用例管理层,该用例管理层用于根据单实例、懒加载的方式管理用例层定义的所述一个或多个用例。上述控制层用于经由用例管理层调用至少一个用例。
在本发明的又一个实施例中,上述视觉层包括生命周期相同的第一页面和第二页面。上述创建应用程序的操作方法还包括:创建共享变量层,该共享变量层用于在控制层的控制下:自第一/第二页面获取共享变量,并将获取的共享变量发送至第二/第一页面,实现共享变量在第一页面和第二页面之间的传递。
在本发明的再一个实施例中,上述视觉层基于视觉类创建,视觉类继承自包装类,以对视觉层进行包装处理。其中,视觉层的状态信息为经由包装类包装处理的视觉层的状态信息。
在本发明的再一个实施例中,上述一个或多个用例基于用例基类定义;以及用例基类封装有线程转换方法,以在一个或多个用例被调用时,根据线程转换方法确定执行一个或多个用例的线程。
在本发明的再一个实施例中,上述控制器层集成有生命周期同步的多个控制器,该多个控制器中的每一个控制器用于控制一个或多个用例中至少一个用例的调用;多个控制器中的一个或多个控制器基于控制器基类创建。其中,控制器基类集成有多控制器兼容处理功能,以对一个或多个控制器进行统一管理。
在本发明的再一个实施例中,上述创建应用程序的操作方法还包括:创建路由层,该路由层设置有跳转接口。其中,在视觉层的状态信息为显示界面跳转状态的情况下,控制层还用于通过调用路由层的跳转接口控制视觉层,以指示视觉层跳转显示界面。
在本发明实施方式的第二方面中,提供了一种应用程序的操作方法,其中,该应用程序由上述的创建应用程序的操作方法创建,该应用程序的操作方法包括:获取视觉层在生命周期中当前阶段的状态信息;以及根据状态信息及用例层定义的一个或多个用例,控制视觉层更新显示界面。
在本发明的一个实施例中,所述应用程序还包括调用接口,所述调用接口封装有所述视觉层的生命周期;上述获取状态信息包括:通过代理类调用所述调用接口,获取所述视觉层在所述生命周期中当前阶段的状态信息。所述控制视觉层更新所述显示界面包括:根据所述状态信息,调用所述一个或多个用例中的至少一个用例,得到与所述状态信息相对应的反馈信息;以及将所述反馈信息发送给所述视觉层,以使所述视觉层根据所述反馈信息更新所述显示界面。
在本发明的另一实施例中,所述应用程序还包括用例管理层,所述用例管理层用于根据单实例、懒加载的方式管理所述用例层定义的所述一个或多个用例。调用所述至少一个用例包括:经由所述用例管理层调用所述至少一个用例。
在本发明的又一个实施例中,上述视觉层包括生命周期相同的第一页面和第二页面,上述应用程序还包括共享变量层,所述反馈信息包括所述共享变量层在所述控制层的控制下自所述第一页面/所述第二页面获取的共享变量,以将所述共享变量发送给所述第二页面/所述第一页面,实现所述共享变量在所述第一页面和所述第二页面之间的传递。
在本发明的再一个实施例中,上述视觉层基于视觉类创建;所述视觉类继承自包装类,以对所述视觉层进行包装处理。上述状态信息为经由所述包装类包装处理的视觉层的状态信息。
在本发明的再一个实施例中,上述一个或多个用例基于用例基类定义;所述用例基类封装有线程转换方法,以在所述一个或多个用例被调用时,根据所述线程转换方法确定执行所述一个或多个用例的线程。
在本发明的再一个实施例中,上述控制层集成有生命周期同步的多个控制器,所述多个控制器中的每一个控制器用于控制所述一个或多个用例中至少一个用例的调用;所述多个控制器中的一个或多个控制器基于控制器基类创建。其中,所述控制器基类集成有多控制器兼容处理功能,以对所述一个或多个控制器进行统一管理。
在本发明的再一个实施例中,上述应用程序还包括路由层,所述路由层设置有跳转接口。控制所述视觉层更新显示界面包括:在所述视觉层的状态信息为显示界面跳转状态的情况下,通过调用所述路由层的跳转接口控制所述视觉层,以指示所述视觉层跳转所述显示界面。
在本发明实施方式的第三方面中,提供了一种计算机可读存储介质,其上存储有可执行指令,该指令在被处理器执行时使处理器执行根据本发明实施方式的第一方面所提供的创建应用程序的操作方法;或者执行根据本发明实施方式的第二方面所提供的应用程序的操作方法。
在本发明实施方式的第四方面中,提供了一种计算设备。该计算设备包括存储有可执行指令的一个或多个存储器,以及一个或多个处理器。该处理器执行该可执行指令,用以实现根据本发明实施方式的第一方面所提供的创建应用程序的操作方法;或者执行根据本发明实施方式的第二方面所提供的应用程序的操作方法。
根据本发明实施方式的创建应用程序的操作方法及应用程序的操作方法,可以通过创建的控制器来获取视觉层的生命周期的状态信息,便于控制器在视觉层的生命周期的各种状态对视觉层进行控制。从而可以在一定程度上解决视觉层生命周期管理混乱的技术问题。
根据本发明的一些实施例,通过代理类调用封装有视觉层生命周期的调用接口来管理视觉层的生命周期,可以避免现有技术中视觉层生命周期管理侵入性较强,与积累代码耦合较重的缺陷。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了根据本发明实施方式的创建应用程序的操作方法和应用程序的操作方法的应用场景;
图2A示意性地示出了根据本发明示例性实施例一的创建应用程序的操作方法的流程图;
图2B示意性地示出了根据本发明实施例的应用程序的操作方法的流程图;
图3A示意性地示出了根据本发明示例性实施例二的创建应用程序的操作方法的流程图;
图3B示意性地示出了根据本发明示例性实施例的控制视觉层更新显示界面的流程图;
图4示意性地示出了根据本发明示例性实施例三的创建应用程序的操作方法的流程图;
图5示意性地示出了根据本发明示例性实施例四的创建应用程序的操作方法的流程图;
图6示意性地示出了根据本发明示例性实施例五的创建应用程序的操作方法的流程图;
图7示意性地示出了根据本发明示例性实施例的构建得到的应用程序的架构图;
图8示意性地示出了根据本发明实施方式的适于执行创建应用程序的操作方法或应用程序的操作方法的程序产品的示意图;以及
图9示意性地示出了根据本发明实施方式的适于执行创建应用程序的操作方法或应用程序的操作方法的计算设备的框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种创建应用程序的操作方法及应用程序的操作方法。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,传统的架构模式,所有视觉的生命周期都需要各个视觉层手动通知到控制层处理。在发送通知的过程中,通知信息容易被干扰信息等侵入,因此传统的架构模式存在视觉层生命周期管理侵入性较强的缺陷。若将视觉层向控制层发送通知信息的方式更改为由控制层获取视觉层的状态信息,则可以避免干扰信息的侵入,并因此可以避免视觉层生命周期管理混乱的情况。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1。
图1示意性地示出了根据本发明实施方式的创建应用程序的操作方法和应用程序的操作方法的应用场景。需要注意的是,图1所示仅为可以应用本发明实施例的应用场景的示例,以帮助本领域技术人员理解本发明的技术内容,但并不意味着本发明实施例不可以用于其他设备、系统、环境或场景。
如图1所示,该应用场景100包括终端设备111、112、113。
其中终端设备111、112、113例如具有处理功能,以根据开发架构及输入的参数,自动创建应用程序,并试运行创建得到的应用程序,实现对应用程序的测试。根据本发明的实施例,该终端设备111、112、113包括但不限于台式计算机、膝上型便携计算机、平板电脑、智能手机、智能可穿戴设备或智能家电等等。
根据本公开的实施例,开发架构例如可以为应用程序的模板,通过将输入的参数代入该模板中,可以自动创建得到应用程序的各功能层,并设定各功能层之间的交互逻辑,完成应用程序的创建。
根据本公开的实施例,终端设备111、112、113例如可以具有显示屏,以通过该显示屏实现与开发人员的交互,便于完成应用程序的开发和测试。
如图1所示,该应用场景例如还可以包括服务器120和网络130,网络130用于在终端设备111、112、113和服务器120之间提供通信链路,网络可以包括各种连接类型,例如有线、无线通信链路等等。
其中,服务器120可以为任何能够提供数据存储、数据处理功能的服务器。例如,可以通过服务器120存储创建得到的应用程序,以方便将该应用程序推送给用户。应用程序例如还可以通过服务器120创建,由终端设备111、112、113对创建得到的服务器进行测试。
需要说明的是,本发明实施例所提供的创建应用程序的操作方法可以由终端设备111、112、113执行,或者可以由服务器120执行。相应地,本发明实施例所提供的应用程序的操作方法可以由终端设备111、112、113执行。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
示例性方法
下面结合图1的应用场景,参考图2A~图2B、图3A~图3B、及图4~图7来描述根据本发明示例性实施方式的创建应用程序的操作方法和应用程序的操作方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
图2A示意性地示出了根据本发明示例性实施例一的创建应用程序的操作方法的流程图,图2B示意性地示出了根据本发明实施例的应用程序的操作方法的流程图。
如图2A所示,根据本发明实施例的创建应用程序的操作方法例如可以包括操作S210A~操作S230A。可以理解的是,该操作S210A~操作S230A的执行顺序可以任意组合,本公开对该操作S210A~操作S230A的执行顺序不作限定。
在操作S210A,创建视觉层,该视觉层用于展示显示界面。
根据本公开的实施例,该视觉层例如可以为负责展示交互界面的处理层。该视觉层例如可以暴露有控制接口,以使得控制层通过调用该控制接口实现对视觉层的控制,例如控制层还可以通过该控制接口向视觉层提供要展示的信息。
根据本公开的实施例,该视觉层例如可以基于视觉类创建,从而在一定程度上避免整个程序代码耦合过重。根据本公开的实施例,该视觉层的创建可以基于框架系统包装类,而非直接侵入基类。具体地,该视觉类可以继承自包装类,从而实现对视觉层的包装处理。该视觉层发送的信息可以为经由包装类包装处理后的信息。通过此方式可以避免过分的侵入积累代码。再者,视觉层通过包装类进行包装处理,可以便于后期架构的维护和变更,便于对视觉层进行处理。
根据本公开的实施例,封装的视觉层(View)的包装类需要传入泛型才能返回对应的控制层中控制器的类型,但是由于封装的视觉层(View)在基类的上一层,业务大多数继承自getPresenter(),因此需要重写基类getPresenter(),以将View包装类的返回类型改为控制器类型。
在操作S220A,创建用例层,所述用例层定义有一个或多个用例。
根据本公开的实施例,该用例层的创建例如可以包括:针对某个业务逻辑,创建业务用例类;通过调用该业务用例类,定义一个或多个用例。每个用例可以定义有处理业务的逻辑,以通过调用运行用例,实现对业务的处理。处理业务的逻辑例如可以包括视频展示的逻辑,通过调用运行该用例可以得到视频展示时所需的业务模型(该业务模型中例如可以规定有是否展示弹幕等)。
根据本公开的实施例,业务用例类例如可以继承自用例基类Use Case<R,P>,即用例基类为业务用例类的父类。因此,一个或多个用例实际上可以基于用例基类进行定义。其中,R为请求数据,即传入用例的原始数据。P为返回数据,即经由用例中定义的处理业务的逻辑处理原始数据后得到的处理后的数据。业务用例类可以通过execute(R request)实现父类的抽象方法,以处理请求数据,处理结束后可以将处理后的数据封装为返回数据回调给控制层,以便于控制层负责通知视觉层进行显示界面的更新。
根据本公开的实施例,为了避免单线程拥挤,处理复杂耗时数据时存在的视觉层的展示卡顿的问题,可以针对业务的处理提供工作线程异步执行机制。例如若业务处理较为简单,则可以使用当前建立的线程进行处理。若业务较复杂,则可以创建新的子线程进行业务处理。为了对线程进行灵活调度,提高代码清晰度,降低代码使用成本,例如可以在用例基类中封装线程转换方法,即将异步执行方法封装到用例基类进行处理。从而在用例层的一个或多个用例被调用时,根据调用的用例及线程转换方法来确定执行该一个或多个用例的线程。通过此种方式,开发者通过直接调用基类用例即可实现线程处理,而无需再进行单独的线程处理。其中,用例层例如也可以提供有非异步执行方法,例如回调时可以回调到UI线程进行视觉层的更新显示界面的处理。在一实施例中,能够进行线程调度的用例的实现代码例如可以如下所示:
根据本公开的实施例,该一个或多个用例例如可以通过控制层执行getInteractor().getVideoReportUseCase()来创建用例。其中,VideoReport为用例名称。
根据本公开的实施例,用例的调用运行例如可以通过控制层调用run()或runBg()方法来实现。为了便于用例的运行,还需要传入请求数据R,该请求数据R的传入例如可以通过控制层执行setRequest()来实现。在用例运行后,为了便于对视觉层的状态信息进行更新,还需要控制层执行setCallback()来回调处理后的数据P。相应地,每个用例提供有一个反馈Callback接口,包括数据处理成功和处理失败等的回调,以通过控制层的回调将处理后的数据(包括Error或处理后的数据P)返回给控制层。控制层可以根据该处理后的数据来确定视觉层的显示界面如何更新。其中,回调方式例如可以包括:getCallback().onSuccess(response),负责通知成功状态,并返回成功处理得到的处理后的数据;getCallback().onError(),负责通知失败状态。其中,Callback接口的实例例如可以由控制层在调用用例时构造并传入用例。
在操作S230A,创建控制层。该控制层用于:获取视觉层在生命周期中当前阶段的状态信息;以及根据状态信息及一个或多个用例,控制视觉层更新显示界面。
根据本公开的实施例,该创建控制层例如可以是定义控制层与视觉层之间的交互逻辑,以及定义控制层与用例层之间的交互逻辑。例如,该控制层可以定义有调用用例的逻辑,向视觉层提供显示界面信息的逻辑,根据视觉层的状态信息确定需要调用哪个用例的逻辑等。
根据本公开的实施例,该控制层例如可以集成有生命周期同步的多个控制器,即一个控制层可以容纳多个业务可复用的控制器。该多个控制器中的一个或多个控制器基于控制器基类创建,每个控制器可以用于控制一个或多个用例中至少一个用例的调用。其中,为了兼容多个控制器,可以对控制器基类增加多控制器兼容处理功能,例如可以在控制器基类中提供commit()方法,以提交多个控制器的管理。相应地,在基类的销毁方法中则可以处理全部提交的控制器。
根据本公开的实施例,为了对创建的控制器进行提交,来实现控制器对视觉层的控制,并进行应用程序中组件Activity的回调,可以在视觉层中重写基类中的OnPresenterCreate()。
根据本发明的实施例,在通过创建应用程序的操作方法创建完应用程序后,可以对创建的应用程序进行测试。例如可以使用该创建的应用程序执行显示界面的控制更新。因此,如图2B所示,通过该实施例的创建应用程序的操作方法创建得到的应用程序例如可以用于执行操作S210B~操作S220B,即应用程序的操作方法可以包括操作S210B~操作S220B。。
在操作S210B,获取视觉层在生命周期中当前阶段的状态信息。在操作S220B,根据状态信息及用例层定义的一个或多个用例,控制视觉层更新显示界面。
根据本公开的实施例,操作S210B例如可以通过监听方式获取视觉层的状态信息,或者可以通过视觉层提供的控制接口来获取状态信息。操作S220B例如可以包括:先根据状态信息确定与状态信息对应的用例,然后通过调用运行对应的用例来得到视觉层更新显示界面的数据,从而实现显示界面的更新。根据本公开的实施例,该操作S220B例如可以通过图3B描述的操作S321B~操作S322B来实现,在此不再详述。
图3A示意性地示出了根据本发明示例性实施例二的创建应用程序的操作方法的流程图。
根据本公开的实施例,为了便于控制层获得视觉层的生命周期的状态信息,在创建应用程序时,例如还可以创建封装有视觉层的生命周期的调用接口。因此,如图3A所示,本公开实施例的创建应用程序的操作方法除了操作S210A~操作S230A外,还可以包括操作S340A。该操作S340A例如可以在操作S210A之后执行。
在操作S340A,创建封装有视觉层的生命周期的调用接口。
根据本公开的实施例,该操作S340A例如可以包括:创建接口控制器,该接口控制器继承自BaseFragmentPresenter/BaseActivityPresenter,构造方法中传入视觉层的实例。后续在对视觉层进行操作时,通过在接口控制器中使用getView()进行,从而实现视觉层的状态信息的获取。
根据本公开的实施例,状态信息的获取例如可以通过代理类调用该封装有视觉层的生命周期的调用接口来实现。具体地,组件(Activity)包装类基类包括调用接口的代理类,该代理类通过该调用接口可以调用接口中定义的方法,来实现对视觉层的生命周期的管理和获取。通过对视觉层生命周期的管理和获取,可以获得视觉层当前阶段的状态信息,并将该状态信息通知给控制层,以便于控制层来控制视觉层的显示界面。
图3B示意性示出了根据本发明示例性实施例的控制视觉层更新显示界面的流程图。
如图3B所示,该实施例中控制视觉层更新显示界面的操作S220B例如可以包括操作S321B~操作S322B。
在操作S321B,根据状态信息,调用一个或多个用例中的至少一个用例,得到与状态信息相对应的反馈信息。
根据本公开的实施例,上述操作S321B例如可以包括:先确定与状态信息对应的用例。例如若状态信息为页面切换,则对应的用例为定义有页面切换逻辑的用例。然后调用执行对应的用例,得到与状态信息相对应的反馈信息。在状态信息为页面切换时,反馈信息例如可以为切换后页面中的页面信息和/或切换后页面的展示属性等。
根据本公开的实施例,用例的调用例如可以通过以下步骤实现:execute先判断网络环境,若网络环境异常则回调控制层处理Error,控制层负责控制视觉层显示Toast弹窗组件。若网络环境正常,则继续执行数据处理,通过setRequest()传入请求数据,然后对请求数据进行处理。若数据处理成功,则回调控制层成功的通知onSuccess,并将处理结果传递给视觉层。在一实施例中,调用运行视频反馈用例的实现代码例如可以如下所示:
在操作S322B,将反馈信息发送给视觉层,以使视觉层根据反馈信息更新显示界面。
根据本公开的实施例,该操作S322B例如可以由控制层通过视觉层暴露的控制接口向视觉层提供处理后的数据,从而使得视觉层根据该处理后的数据进行显示界面的渲染,得到新的显示界面,并将当前显示界面更换为新的显示界面。更具体地,控制层例如可以在调用用例时创建并传入Callback接口的实例,在监听到onSuccess和onError时,回调该Callback接口的实例,以通知视觉层进行显示界面的更新。
在一实施例中,若doReport收到用例调用运行处理后的数据回调,且回调的为控制层成功的通过onSuccess时,可以调用路由跳转ReportFragment。若回调控制层处理Error,则可以通知视觉层弹出Toast的实现代码例如可以如下所示:
根据本公开的实施例,为了便于对用例层中的一个或多个用例进行统一管理,将用例的构造和使用分离,避免控制层与用例的直接交互,例如可以创建用例管理交互层。再者,为了避免现有技术中在不调用运行用例时,因直接创建用例而导致的开销较大,在定义用例层中包括的用例时,例如可以使用懒加载的方式进行用例创建。
图4示意性地示出了根据本发明示例性实施例三的创建应用程序的操作方法的流程图。
如图4所示,本公开实施例的创建应用程序的操作方法除了操作S210A~操作S230A、操作S340A外,还可以包括操作S450A。该操作S450A例如可以在操作S220A之前执行,以通过用例管理层定义用例。
在操作S450A,创建用例管理层,该用例管理层用于根据单实例、懒加载的方式管理用例层定义的一个或多个用例。
根据本公开的实施例,该操作S450A例如可以包括:先创建业务交互器类,然后基于业务交互器类创建用例管理层。在控制层调用运行用例时,例如可以经由该用例管理层进行调用,例如控制层可以使用getInteractor()调用用例。根据本公开的实施例,为了便于控制层进行用例调用,该用例管理层例如可以暴露有用例调用接口,以使得控制层通过调用用例调用接口来实现对用例的调用运行。
根据本公开的实施例,在基于用例基类定义用例时,可以在该用例管理层中初始化用例基类,然后使用懒加载双重检查单实例的方式定义用例。在一实施例中,用例管理层定义用例的实现代码例如可以如下所示:
根据本公开的实施例,在创建的应用程序包括用例管理类的情况下,前述调用一个或多个用例中的至少一个用例的操作S321B例如可以包括:所述控制层经由所述用例管理层调用该至少一个用例。
根据本公开的实施例,对于包括多个页面的视觉层,为了使得使用相同变量的不同页面之间进行变量传递,往往需要对该使用相同变量的不同页面建立耦合关系,这无疑会不利于后续代码的维护变更。为了在保证变量传递的同时降低视觉层之间的耦合性,例如可以创建有共享变量层,通过该共享变量层实现不同页面之间的变量传递。
图5示意性地示出了根据本发明示例性实施例四的创建应用程序的操作方法的流程图。
如图5所示,该实施例的创建应用程序的操作方法除了操作S210A~操作S230A外,还可以包括操作S560A。该操作S560A的执行时机可以为操作S210A~操作S230A执行过程中的任意时机。该实施例中,视觉层例如可以包括使用相同变量、且生命周期相同的第一页面和第二页面。
在操作S560A,创建共享变量层,该共享变量层用于在控制层的控制下:自第一/第二页面获取共享变量,并将共享变量发送至第二/第一页面,实现共享变量在第一页面和所述第二页面之间的传递。
根据本公开的实施例,该共享变量层例如可以负责跨页面的变量传递,以实现页面间的解耦。再者,该共享变量层传递的数据例如可以只包含一般数据,而不应该包含视觉层相关的内容。该共享变量层可以跟随Activity等主宿主的生命周期进行变化,且该共享变量层可以绑定视觉层的生命周期,从而提高跨页面的变量传递的准确性。
根据本公开的实施例,对于同一Activity下跨Fragment(页面)的变量传递,可以考虑使用Bundle或VarScope来实现。
根据本公开的实施例,在创建的应用程序还包括共享变量层,且视觉层包括生命周期相同的第一页面和第二页面时,为了使得在该第一页面与第二页面之间进行变量传递,前述操作S321B中通过调用定义有页面切换逻辑的用例时,得到的反馈信息例如可以包括:共享变量层在控制层的控制下自第一页面/第二页面获取的共享变量,以通过操作S322B将共享变量发送给第二页面/第一页面,实现共享变量在第一页面和第二页面之间的传递。
根据本公开的实施例,在页面需要跳转时,为了实现页面跳转,还可以设置有路由层,以通过路由层实现控制层对视觉层的页面跳转的控制。
图6示意性地示出了根据本发明示例性实施例五的创建应用程序的操作方法的流程图。
如图6所示,该实施例的创建应用程序的操作方法除了操作S210A~操作S230A外,例如还可以包括操作S670A。
在操作S670A,创建路由层,该路由层可以设置有暴露的跳转接口,供控制层调用。
根据本公开的实施例,创建路由层时,该路由层继承于BaseRouter,构造方法接受的参数为Activity参数。在调用路由层时,路由层不应该再单独管理Activity参数,应直接调用BaseRouter的getActivity()进行跳转系列层不应该再单独管理Activity参数,应直接调用BaseRouter的getActivity()进行跳转系列的操作。根据本公开的实施例,在视觉层的状态信息为显示界面跳转状态的情况下,控制层在控制视觉层时,例如可以通过getRouter()调用路由层的跳转接口来实现对视觉层的控制,从而指示视觉层跳转显示界面。
根据本公开的实施例,在创建的应用程序包括路由层的情况下,控制视觉层更新显示界面的操作S220B例如可以包括:在视觉层的状态信息为显示界面跳转状态的情况下,通过调用路由层的跳转接口控制视觉层,以指示视觉层跳转显示界面。
图7示意性地示出了根据本发明示例性实施例的构建得到的应用程序的架构图。
根据本公开的实施例,综合图2A、图3A、图4~图6描述的各实施例的创建应用程序的方法,创建得到的应用程序的架构例如可以如图7所示。该架构中包括有自内而外的用例层(Use Case)701、用例管理层(Interactor)702、控制层(Presenter)703和视觉层(View)704,以及分别与控制层703连接的共享变量层(Share)705、路由层(Router)706和封装有视觉层704的生命周期的调用接口707。其中,用例层701包括有多个用例,控制层703可以通过调用接口707实现对视觉层704的状态信息的获取。控制层703可以通过用例管理层702调用运行用例层701中的多个用例。在涉及到页面跳转时,控制层703可以通过调用路由层706控制视觉层704完成页面的跳转。在涉及到不同视觉层的变量传递时,控制层703可以通过对共享变量层705的控制来实现。
根据本公开的实施例,应用程序的调用接口707例如也可以在创建应用程序之前预先创建,因此,在创建应用程序之前,例如可以先进行基础准备工作。该基础准备工作例如可以包括:先创建调用接口707,然后再重写前述的onPresenterCreate(),最后重写getPresenter()。
根据本公开的实施例,应用程序中的控制层703整体来说用于负责控制用例管理层702、视觉层704、共享变量层705和路由层706。通过在构造方法中传入该应用程序的架构中的各个层,在基类进行成员变量的管理,而无需在基类包括的子类中进行一一赋值处理。
根据本公开的实施例,在控制器基类的构造中,例如可以提供多层的构造传递赋值语句,从而无需在子类中对每个层进行赋值管理。其中,共享变量层705中共享变量的构造例如还可以由共享变量机制处理,控制层703使用该共享变量。
示例性介质
在介绍了本发明示例性实施方式的方法之后,接下来,参考图8对本发明示例性实施方式的适于执行创建应用程序的操作方法或应用程序的操作方法的程序产品进行介绍。
根据本发明的实施例,还提供了一种计算机可读存储介质,其上存储有可执行指令,所述指令在被处理器执行时使处理器执行根据本发明实施例的创建应用程序的操作方法或应用程序的操作方法。
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当该程序产品在计算设备上运行时,该程序代码用于使该计算设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的创建应用程序的操作方法中的步骤。例如,该计算设备可以执行如图2A中所示的操作S210A:创建视觉层,该视觉层用于展示显示界面;操作S220A:创建用例层,该用例层定义有一个或多个用例;以及操作S230A:创建控制层,该控制层用于:获取视觉层在生命周期中当前阶段的状态信息;以及根据状态信息及一个或多个用例,控制视觉层更新显示界面。或者,该程序代码用于使该计算设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的应用程序的操作方法中的步骤,例如,该计算设备可以执行如图2B中所示的操作S210B:获取视觉层在生命周期中当前阶段的状态信息;以及操作S220B:根据状态信息及用例层定义的一个或多个用例,控制视觉层更新显示界面。
该程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
图8示意性地示出了根据本发明实施方式的适于执行创建应用程序的操作方法或应用程序的操作方法的程序产品800的示意图。
如图8所示,描述了根据本发明的实施方式的适于执行创建应用程序的操作方法或应用程序的操作方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆,RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,该程序设计语言包括面向对象的程序设计语言——诸如Java,C++等,还包括常规的过程式程序设计语言——诸如“C”,语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)一连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
示例性计算设备
在介绍了本发明示例性实施方式的方法、装置和介质之后,接下来,参考图9对本发明示例性实施方式的适于执行创建应用程序的操作方法或应用程序的操作方法的计算设备进行说明。
本发明实施例还提供了一种计算设备。所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明的计算设备可以至少包括至少一个处理单元、以及至少一个存储单元。其中,该存储单元存储有程序代码,当该程序代码被该处理单元执行时,使得该处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的创建应用程序的操作方法中的操作。例如,该处理单元可以执行如图2A中所示的操作S210A:创建视觉层,该视觉层用于展示显示界面;操作S220A:创建用例层,该用例层定义有一个或多个用例;以及操作S230A:创建控制层,该控制层用于:获取视觉层在生命周期中当前阶段的状态信息;以及根据状态信息及一个或多个用例,控制视觉层更新显示界面。或者,该处理单元可以执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的应用程序的操作方法中的操作。例如,该处理单元可以执行如图2B中所示的操作S210B:获取视觉层在生命周期中当前阶段的状态信息;以及操作S220B:根据状态信息及用例层定义的一个或多个用例,控制视觉层更新显示界面。
图9示意性地示出了根据本发明实施方式的适于执行创建应用程序的操作方法或应用程序的操作方法的计算设备900的框图。如图9所示的计算设备900仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如9所示,计算设备900以通用计算设备的形式表现。计算设备900的组件可以包括但不限于:上述至少一个处理单元910、上述至少一个存储单元920、连接不同系统组件(包括存储单元920和处理单元910)的总线930。
总线930包括数据总线、控制总线和地址总线。
存储单元920可以包括易失性存储器,例如随机存取存储器(RAM)921和/或高速缓存存储器902,还可以进一步包括只读存储器(ROM)923。
存储单元920还可以包括具有一组(至少一个)程序模块924的程序/实用工具925,这样的程序模块924包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算设备900也可以与一个或多个外部设备940(例如键盘、指向设备、蓝牙设备等)通信,这种通信可以通过输入/输出(I/O)接口905进行。并且,计算设备900还可以通过网络适配器960与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器960通过总线930与计算设备900的其它模块通信。应当明白,尽管图中未示出,可以结合计算设备900使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (10)
1.一种创建应用程序的操作方法,包括:
创建视觉层,所述视觉层用于展示显示界面;
创建用例层,所述用例层定义有一个或多个用例;以及
创建控制层,所述控制层用于:
获取所述视觉层在生命周期中当前阶段的状态信息;以及
根据所述状态信息及所述一个或多个用例,控制所述视觉层更新所述显示界面。
2.根据权利要求1所述的方法,其中:
所述方法还包括:创建封装有所述视觉层的生命周期的调用接口;
获取所述状态信息包括:
通过代理类调用所述调用接口,获取所述视觉层在所述生命周期中当前阶段的状态信息;
所述控制所述视觉层更新所述显示界面包括:
根据所述状态信息,调用所述一个或多个用例中的至少一个用例,得到与所述状态信息相对应的反馈信息;以及
将所述反馈信息发送给所述视觉层,以使所述视觉层根据所述反馈信息更新所述显示界面。
3.根据权利要求2所述的方法,还包括:
创建用例管理层,所述用例管理层用于根据单实例、懒加载的方式管理所述用例层定义的所述一个或多个用例;以及
所述控制层用于经由所述用例管理层调用所述至少一个用例。
4.根据权利要求1所述的方法,其中:
所述视觉层包括生命周期相同的第一页面和第二页面;
所述方法还包括:创建共享变量层,所述共享变量层用于在所述控制层的控制下:
自所述第一页面/所述第二页面获取共享变量,并将所述共享变量发送至所述第二页面/所述第一页面,实现所述共享变量在所述第一页面和所述第二页面之间的传递。
5.根据权利要求1所述的方法,其中:
所述视觉层基于视觉类创建;以及
所述视觉类继承自包装类,以对所述视觉层进行包装处理,
其中,所述视觉层的状态信息为经由所述包装类包装处理的视觉层的状态信息。
6.根据权利要求1所述的方法,其中:
所述一个或多个用例基于用例基类定义;以及
所述用例基类封装有线程转换方法,以在所述一个或多个用例被调用时,根据所述线程转换方法确定执行所述一个或多个用例的线程。
7.根据权利要求1所述的方法,其中:
所述控制层集成有生命周期同步的多个控制器,所述多个控制器中的每一个控制器用于控制所述一个或多个用例中至少一个用例的调用;
所述多个控制器中的一个或多个控制器基于控制器基类创建,
其中,所述控制器基类集成有多控制器兼容处理功能,以对所述一个或多个控制器进行统一管理。
8.根据权利要求1所述的方法,还包括:
创建路由层,所述路由层设置有跳转接口,
其中,在所述视觉层的状态信息为显示界面跳转状态的情况下,所述控制层还用于通过调用所述路由层的跳转接口控制所述视觉层,以指示所述视觉层跳转所述显示界面。
9.一种应用程序的操作方法,其中,所述应用程序由权利要求1~8中任一项所述的方法创建,所述方法包括:
获取所述视觉层在生命周期中当前阶段的状态信息;以及
根据所述状态信息及用例层定义的一个或多个用例,控制所述视觉层更新显示界面。
10.一种计算机可读存储介质,其上存储有可执行指令,所述指令在被处理器执行时实现:
根据权利要求1~8中任一项所述的方法;或者
根据权利要求9所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010076657.1A CN111290818B (zh) | 2020-01-23 | 2020-01-23 | 创建应用程序的操作方法及应用程序的操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010076657.1A CN111290818B (zh) | 2020-01-23 | 2020-01-23 | 创建应用程序的操作方法及应用程序的操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111290818A true CN111290818A (zh) | 2020-06-16 |
CN111290818B CN111290818B (zh) | 2023-07-25 |
Family
ID=71029933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010076657.1A Active CN111290818B (zh) | 2020-01-23 | 2020-01-23 | 创建应用程序的操作方法及应用程序的操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111290818B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000407A (zh) * | 2020-08-13 | 2020-11-27 | 北京字节跳动网络技术有限公司 | 一种界面交互方法、装置、终端设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007146204A2 (en) * | 2006-06-09 | 2007-12-21 | Sorriso Technology, Inc. | Methods and apparatus for generating a web site from a use case |
US7761848B1 (en) * | 2005-03-15 | 2010-07-20 | Open Invention Network, Llc | Code generator tool for building software applications with reusable components |
CN105183457A (zh) * | 2015-08-13 | 2015-12-23 | 北京金山安全软件有限公司 | 一种监听界面生命周期回调的方法及装置 |
CN106970790A (zh) * | 2017-03-09 | 2017-07-21 | 腾讯科技(深圳)有限公司 | 一种应用程序创建的方法、相关设备及系统 |
CN109947442A (zh) * | 2017-12-21 | 2019-06-28 | 阿加利科公司 | 升级的Cloud Foundry平台系统 |
-
2020
- 2020-01-23 CN CN202010076657.1A patent/CN111290818B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7761848B1 (en) * | 2005-03-15 | 2010-07-20 | Open Invention Network, Llc | Code generator tool for building software applications with reusable components |
WO2007146204A2 (en) * | 2006-06-09 | 2007-12-21 | Sorriso Technology, Inc. | Methods and apparatus for generating a web site from a use case |
CN105183457A (zh) * | 2015-08-13 | 2015-12-23 | 北京金山安全软件有限公司 | 一种监听界面生命周期回调的方法及装置 |
CN106970790A (zh) * | 2017-03-09 | 2017-07-21 | 腾讯科技(深圳)有限公司 | 一种应用程序创建的方法、相关设备及系统 |
CN109947442A (zh) * | 2017-12-21 | 2019-06-28 | 阿加利科公司 | 升级的Cloud Foundry平台系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000407A (zh) * | 2020-08-13 | 2020-11-27 | 北京字节跳动网络技术有限公司 | 一种界面交互方法、装置、终端设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111290818B (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102236522B1 (ko) | 정보를 처리하기 위한 방법 및 장치 | |
US9323647B2 (en) | Request-based activation of debugging and tracing | |
US8762929B2 (en) | System and method for exclusion of inconsistent objects from lifecycle management processes | |
US8910166B2 (en) | Automatic transcoding and semantic adaptation between scripting and workflow systems | |
US10884807B2 (en) | Serverless computing and task scheduling | |
US20160226979A1 (en) | Generalized proxy architecture to provide remote access to an application framework | |
US10802954B2 (en) | Automated-application-release-management subsystem that provides efficient code-change check-in | |
US8438418B2 (en) | Simplifying automated software maintenance of data centers | |
US20150220308A1 (en) | Model-based development | |
US20170364844A1 (en) | Automated-application-release-management subsystem that supports insertion of advice-based crosscutting functionality into pipelines | |
US20110219311A1 (en) | Method and system for partitioning asset management plugins | |
US10452426B2 (en) | Methods and systems for configuration-file inheritance | |
CN109445841B (zh) | 接口文档管理方法、装置、服务器及存储介质 | |
CN109901985B (zh) | 分布式测试装置及方法、存储介质和电子设备 | |
US11531526B1 (en) | Creating portable serverless applications | |
CN111198996A (zh) | 一种页面展示的方法、装置和电子设备 | |
CN109343955B (zh) | 推荐服务调用方法、介质、装置和计算设备 | |
US11494184B1 (en) | Creation of transportability container files for serverless applications | |
CN111290818B (zh) | 创建应用程序的操作方法及应用程序的操作方法 | |
US11360801B2 (en) | Single nested multi-item workflow display | |
CN113626095A (zh) | 配置中心的切换方法、切换系统、电子设备及存储介质 | |
CN109408057B (zh) | 自动生成代码的方法、装置、介质和计算设备 | |
CN112130888A (zh) | 应用程序更新的方法、装置、设备和计算机存储介质 | |
EP3519964B1 (en) | Electronic apparatus for recording debugging information and control method thereof | |
CN112379973B (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 |