一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

生命周期消息的分发方法、系统、设备、介质与流程

2022-06-05 07:52:12 来源:中国专利 TAG:


1.本公开涉及信息技术领域,具体地涉及一种生命周期消息的分发方法、系统、设备、介质和程序产品。


背景技术:

2.生命周期是指从应用启动到应用退出的全生命周期过程。在ios操作系统中,对生命周期消息的分发主要是通过通知机制实现的,在通知机制中,消息发出者与消息接收者通过通知中心建立关系,消息发出者与消息接收者之间互相不知道对方的存在,通知中心在接收到消息发出者的消息时,自动根据注册信息向感兴趣的消息接收者转发消息。这种方式需要主工程作为消息发出者向通知中心发送消息,主工程和接收消息的业务模块都需要继承通知中心的基类,因此,这种通知机制下的消息分发,对主工程和接收消息的业务模块都有代码入侵。


技术实现要素:

3.鉴于上述问题,本公开提供了一种生命周期消息的分发方法、系统、设备、介质和程序产品,解决了相关技术中在通知机制下进行的生命周期消息的分发,对主工程和接收消息的业务模块都有代码入侵的问题。
4.根据本公开的一个方面,提供了一种生命周期的分发方法,包括:
5.通过消息处理模块调用与消息分发中心中的处理类对应的目标函数,以便接收由应用系统发出的生命周期消息;其中,目标函数是利用钩子函数将目标参数修改为消息分发中心得到的;目标参数用于表征消息分发执行主体,目标参数为应用程序中的生命周期消息处理类对应的函数中的参数;
6.通过消息处理模块向消息分发中心发送生命周期消息;
7.通过消息分发中心向目标业务模块发送生命周期消息。
8.根据本公开的实施例,其中,通过消息分发中心向目标业务模块发送生命周期消息,包括:
9.根据业务模块订阅信息,确定目标业务模块,其中,业务模块订阅信息是目标业务模块,通过在消息分发中心注册订阅信息得到的;
10.通过消息分发中心向目标业务模块发送生命周期消息。
11.根据本公开的实施例,其中,业务模块订阅信息包括优先级信息,通过消息分发中心向目标业务模块发送生命周期消息,包括:
12.在目标业务模块包括多个业务模块的情况下,根据优先级信息,确定用于表征发送生命周期消息的顺序信息;
13.通过消息分发中心,按照顺序信息,向目标业务模块发送生命周期消息。
14.根据本公开的实施例,其中,业务模块订阅信息包括系统版本信息,通过消息分发中心向目标业务模块发送生命周期消息,包括:
15.匹配系统版本信息与应用系统的版本信息,得到匹配结果,应用系统的版本信息是利用消息分发中心从应用系统的配置信息中得到的;
16.根据匹配结果,确定目标生命周期消息;
17.通过消息分发中心向目标业务模块发送目标生命周期消息。
18.根据本公开的实施例,其中,根据匹配结果,确定目标生命周期消息,包括:
19.在匹配结果为版本信息匹配的情况下,将生命周期消息确定为目标生命周期消息;
20.在匹配结果为版本信息不匹配的情况下,将生命周期消息删除。
21.根据本公开的实施例,上述生命周期消息的分发方法,还包括:
22.通过消息处理模块向应用系统的代理模块发送生命周期消息,用于兼容代理模块中的工程代码。
23.根据本公开的实施例,上述生命周期消息的分发方法,还包括:
24.识别第一生命周期消息和第二生命周期消息;
25.在第一生命周期消息和第二生命周期消息相同的情况下,合并第一生命周期消息和第二生命周期消息。
26.本公开的另一方面提供了一种生命周期消息的分发系统,包括:消息处理模块和消息分发中心。消息处理模块,用于调用与消息分发中心中的处理类对应的目标函数,以便接收由应用系统发出的生命周期消息;其中,目标函数是利用钩子函数将目标参数修改为消息分发中心得到的;目标参数用于表征消息分发执行主体,目标参数为应用程序中的生命周期消息处理类对应的函数中的参数,并向消息分发中心发送生命周期消息。消息分发中心,用于向目标业务模块发送生命周期消息。
27.根据本公开的实施例,消息分发中心包括第一确定单元和第一发送单元。其中,第一确定单元,用于根据业务模块订阅信息,确定目标业务模块,其中,业务模块订阅信息是目标业务模块,通过在消息分发中心注册订阅信息得到的。第一发送单元,用于通过消息分发中心向目标业务模块发送生命周期消息。
28.根据本公开的实施例,消息分发中心包括第二确定单元和第二发送单元,其中,第二确定单元,用于在目标业务模块包括多个业务模块的情况下,根据优先级信息,确定用于表征发送生命周期消息的顺序信息。第二发送单元,用于通过消息分发中心,按照顺序信息,向目标业务模块发送生命周期消息。
29.根据本公开的实施例,消息分发中心包括匹配单元,第三确定单元和第三发送单元。匹配单元,用于匹配系统版本信息与应用系统的版本信息,得到匹配结果,应用系统的版本信息是利用消息分发中心从应用系统的配置信息中得到的。第三确定单元,用于根据匹配结果,确定目标生命周期消息。第三发送单元,用于通过消息分发中心向目标业务模块发送目标生命周期消息。
30.根据本公开的实施例,第三确定单元包括第一确定子单元和第二确定子单元。第一确定子单元,用于在匹配结果为版本信息匹配的情况下,将生命周期消息确定为目标生命周期消息。第二确定子单元,用于在匹配结果为版本信息不匹配的情况下,将生命周期消息删除。
31.根据本公开的实施例,上述消息处理模块,用于向应用系统的代理模块发送生命
周期消息,用于兼容代理模块中的工程代码。
32.根据本公开的实施例,上述生命周期消息的分发系统,还包括识别模块和合并模块。识别模块,用于识别第一生命周期消息和第二生命周期消息。合并模块,用于在第一生命周期消息和第二生命周期消息相同的情况下,合并第一生命周期消息和第二生命周期消息。
33.本公开的另一方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述生命周期消息的分发方法。
34.本公开的另一方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述生命周期消息的分发方法。
35.本公开的另一方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述生命周期消息的分发方法。根据本公开的实施例,通过利用钩子函数将应用程序中的生命周期消息处理类对应的函数中的目标参数修改为消息分发中心,将生命周期消息分发的执行主体由主工程变更为消息分发中心,由消息分发中心进行生命周期消息的分发,从而避免了对主工程的代码入侵。由于消息的分发不再依赖于系统中的通知机制,而是由消息分发中心向目标业务模块发送生命周期消息,因此,目标业务模块也不需要继承通知中心的基类,从而避免了对业务模块的代码入侵。
附图说明
36.通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
37.图1示意性示出了根据本公开实施例的生命周期消息分发的方法、系统、设备、介质和程序产品的应用示例性框架图;
38.图2示意性示出了根据本公开实施例的生命周期消息分发的方法的流程图;
39.图3示意性示出了根据本公开一些实施例的通过消息分发中心向目标业务模块发送生命周期消息的方法流程图;
40.图4示意性示出了根据本公开另一些实施例的通过消息分发中心向目标业务模块发送生命周期消息的方法流程图;
41.图5示意性示出了根据本公开实施例的生命周期消息的分发方法逻辑框图;
42.图6示意性示出了根据本公开实施例的生命周期消息分发的系统的结构框图;以及
43.图7示意性示出了根据本公开实施例的适于实现生命周期消息分发的方法的电子设备的方框图。
具体实施方式
44.以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免
不必要地混淆本公开的概念。
45.在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
46.在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
47.在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。
48.需要说明的是,本公开生命周期消息的分发方法和系统可用于信息技术领域和金融领域,也可用于除金融领域之外的任意领域,本公开生命周期消息的分发方法和系统的应用领域不做限定。
49.在现有的ios项目工程中,提供了通知机制(notification),可以在对象间传递和接收信息。传递和接收信息的对象间甚至不需要知道对方的存在。究其本质来说,其实是设计模式中的观察者模式的应用。
50.通知机制的流程包括:消息发出者(sender)与消息接收者(observer)通过通知中心建立关系,消息发出者和消息接收者之间互相不知道对方的存在。消息接收者向通知中心注册感兴趣的消息(同一个消息可以被多次注册,这样消息接收者会多次得到相同的消息通知)。然后,消息发出者向通知中心发送消息。通知中心接收到来自消息发出者的消息,自动根据注册信息向感兴趣的消息接收者转发消息。消息接收者获得来自通知中心的消息处理。
51.现有的ios的项目工程对生命周期的分发主要是通过通知机制去实现的,这种方式需要在主工程文件中去作为一个消息发出者向通知中心发送消息,对需要进行消息订阅的业务模块代码作为一个消息接收者向通知中心注册感兴趣的消息。这种方式主工程和子工程都需要继承自通知中心。
52.但现有的ios的项目工程都是通过代码侵入式的方式进行消息分发,这种方式需要在主工程文件里进行消息广播代码的添加,对具体的业务模块现的代码也有侵入性,需要继承消息订阅的类,不能做到无侵入式的消息分发。同时,基于ios系统的消息广播和消息订阅方式,无法实现进行消息分发的统一自定义控制管理,如消息过滤、消息转发的优先级控制等等,消息分发缺乏处理的灵活性。
53.有鉴于此,本公开的实施例提供了一种生命周期消息的分发方法,通过利用钩子函数将应用程序中的生命周期消息处理类对应的函数中的目标参数修改为消息分发中心,将生命周期消息分发的执行主体由主工程变更为消息分发中心,由消息分发中心进行生命周期消息的分发,从而避免了对主工程的代码入侵。由于消息的分发不再依赖于系统中的通知机制,而是由消息分发中心向目标业务模块发送生命周期消息,因此,目标业务模块也不需要进行通知中心的基类,从而避免了对业务模块的代码入侵。
54.图1示意性示出了根据本公开实施例的生命周期消息的分发方法的应用示例性框
架图。
55.如图1所示,根据该实施例的应用示例性框架100可以包括应用程序模块101、消息处理模块102、消息分发中心103、业务模块104、主工程105。
56.消息处理模块102,在应用程序模块101中的应用程序启动的动态连接阶段,即未执行应用程序中的生命周期消息处理类对应的函数之前,通过钩子函数动态运行的方式动态修改生命周期消息处理类对应的函数中的目标参数,将目标参数修改为消息分发中心,即由消息分发中心103进行生命周期消息的转发。
57.消息处理模块102在接收到生命周期消息之后,向消息分发中心103发送生命周期消息的同时,将生命周期消息发送至主工程105,用于兼容主工程中的原始工程代码,以便于开发人员在主工程中编写业务模块执行逻辑。
58.消息处理中心103由消息处理模块102发送的生命周期消息之后,将生命周期消息转发给业务模块104。
59.应该理解,图1中的应用程序模块、消息处理模块、消息分发中心模块、业务模块的数目仅仅是示意性的。根据实现需要,可以具有任意数目的应用程序模块、消息处理模块、消息分发中心模块、业务模块。
60.以下将基于图1描述的场景,通过图2~图4对公开实施例的生命周期消息的分发方法进行详细描述。
61.图2示意性示出了根据本公开实施例的生命周期消息的分发方法的流程图。
62.如图2所示,该实施例的生命周期消息的分发方法包括操作s210~操作s230。
63.在操作s210,通过消息处理模块调用与消息分发中心中的处理类对应的目标函数,以便接收由应用系统发出的生命周期消息;其中,目标函数是利用钩子函数将目标参数修改为消息分发中心得到的;目标参数用于表征消息分发执行主体,目标参数为应用程序中的生命周期消息处理类对应的函数中的参数。
64.根据本公开的实施例,生命周期消息可以包括在应用的生命周期的不同时间节点下,应用系统发出的系统消息,时间节点可以包括应用启动、应用即将转入后台运行、应用已经转入后台运行、应用即将转入前台运行、引用已经转入前台运行、应用已关闭等等。例如:播放音乐的应用a,当该应用已转入后台时,应用系统发出的生命周期消息可以为“应用a已转入后台”。
65.根据本公开的实施例,应用中生命周期消息处理类对应的函数一般是应用系统的入口函数,会通过入口函数为当前进程指定代理,指定的代理一般是系统默认的主工程文件(appdegate)。例如:应用中生命周期消息处理类对应的函数可以为:int main(int argc,char*argv[]){@autoreleasepool{return uiapplicationmain(argc,argv,nil,nsstringfromclass([appdelegate class]))}。主工程文件中一般包括主工程各个生命周期节点将执行的方法,例如:willfinishlaunchingwithoptions:、didfinishlaunchingwithoptions:、applicationwillenterforeground:、applicationdidenterbackground:等等。
[0066]
根据本公开的实施例,可以通过钩子函数将当前进程指定的代理变更为消息分发中心,例如:钩子函数可以为: (void)load{static dispatch_once_t oncetoken;dispatch_once(&oncetoken,^{xxswizzle instancemethod(self,@selector
(setdelegate:),self,@selector(xx_setdelegate:))。
[0067]
根据本公开的实施例,例如:应用a中生命周期消息处理类对应的函数中的参数为xx,例如:main(set delegate:xx)通过消息处理模块,利用钩子函数将参数xx修改为消息分发中心,例如:main(set delegate:“消息分发中心”)消息处理模块接收到“应用a已转入后台”的生命周期消息。
[0068]
在操作s220,通过消息处理模块向消息分发中心发送生命周期消息。
[0069]
根据本公开的实施例,由于消息处理模块是通过调用消息中心的处理类对应的函数接收到的生命周期消息,此时,当前进程的指定代理已经由主工程变更为消息分发中心,需将生命周期消息“应用a已转入后台”向消息分发中心发送。
[0070]
在操作s230,通过消息分发中心向目标业务模块发送生命周期消息。
[0071]
根据本公开的实施例,通过消息分发中心向目标业务模块发送“应用a已转入后台”的生命周期消息。以便于目标业务模块在接收到该生命周期消息时,执行相应的业务逻辑,例如:关闭应用a,即停止应用a的音乐播放。
[0072]
根据本公开的实施例,侵入式开发的做法一般是要求用户代码“知道”框架的代码,表现为用户代码需要继承框架提供的类。无侵入式开发则不需要用户代码引入框架代码的信息,从类的编写者角度来看,察觉不到框架的存在。由于通过钩子函数将当前进程指定的代理由主工程变更为消息分发中心,使得主工程不需要再进行生命周期消息的分发,因此,可以避免生命周期消息的分发对主工程的代码入侵,实现对主工程的无侵入式开发。
[0073]
根据本公开的实施例,通过利用钩子函数将应用程序中的生命周期消息处理类对应的函数中的目标参数修改为消息分发中心,将生命周期消息分发的执行主体由主工程变更为消息分发中心,由消息分发中心进行生命周期消息的分发,从而避免了对主工程的代码入侵。由于消息的分发不再依赖于系统中的通知机制,而是由消息分发中心向目标业务模块发送生命周期消息,因此,目标业务模块也不需要继承通知中心的基类,从而避免了对业务模块的代码入侵。
[0074]
由于传统的生命周期消息分发采用通知机制,业务模块若想接收生命周期消息,需要继承通知中心的基类,因此,在开发过程中,需要对业务模块进行代码侵入。
[0075]
根据本公开的实施例,通过消息分发中心向目标业务模块发送生命周期消息,包括:
[0076]
通过消息分发中心,根据业务模块订阅信息,确定目标业务模块,其中,业务模块订阅信息是目标业务模块,通过在消息分发中心注册订阅信息得到的;
[0077]
通过消息分发中心向目标业务模块发送生命周期消息。
[0078]
根据本公开的实施例,业务模块订阅消息可以存储在消息分发中心的注册表。当业务模块在消息分发中信息注册时,消息分发中心则在注册表中记录业务模块的订阅信息,以便于消息分发中心通过业务模块的订阅信息确定生命周期消息的转发目标业务模块。
[0079]
根据本公开的实施例,例如:消息分发中心的注册表中记录的订阅信息包括业务模块a订阅信息、业务模块b订阅信息、业务模块c订阅信息。通过消息分发中心可以根据业务模块订阅信息,确定目标业务模块为业务模块a、业务模块b、业务模块c。通过消息分发中心向业务模块a、业务模块b、业务模块c发送生命周期消息。
[0080]
根据本公开的实施例,由于是通过消息分发中心的注册表中的订阅信息,确定生命周期消息分发的目标业务模块的,因此,不需要在开发过程中,对业务模块进行代码侵入,从而实现基于消息分发中心的无侵入式地生命周期消息的分发。
[0081]
图3示意性示出了根据本公开一些实施例的通过消息分发中心向目标业务模块发送生命周期消息的方法流程图。
[0082]
如图3所示,该实施例包括操作s310~s320。
[0083]
在操作s310,在目标业务模块包括多个业务模块的情况下,根据优先级信息,确定用于表征发送生命周期消息的顺序信息。
[0084]
根据本公开的实施例,例如:目标业务模块包括业务模块a、业务模块b、业务模块c,业务模块a的优先级信息为i级优先级,业务模块b的优先级信息为iii级优先级,业务模块c的优先级信息为ii级优先级。根据优先级信息,确定的用于表征发送生命周期消息的顺序信息可以为i级优先级的业务模块、ii级优先级的业务模块、iii级优先级的业务模块。
[0085]
在操作s320,通过消息分发中心,按照顺序信息,向目标业务模块发送生命周期消息。
[0086]
根据本公开的实施例,通过消息分发中心,可以按照优先级的顺序信息,依次向业务模块a、业务模块c、业务模块b发送生命周期消息。
[0087]
根据本公开的实施例,消息处理中心可以灵活对业务模块的消息分发进行自定义控制,提供设置modulepriority参数来设置对某个业务模块订阅消息的订阅优先级,例如:“[module1:setmodulepriority:highlevel]”,则该业务模块的订阅优先级为“高”。
[0088]
根据本公开的实施例,通过消息处理中心可以按照业务模块订阅的优先级信息,实现多个同时订阅某个消息的业务模块在生命周期到来时,可以有序地向目标业务模块发送生命周期消息,以便于业务模块有序执行业务任务。
[0089]
图4示意性示出了根据本公开另一些实施例的通过消息分发中心向目标业务模块发送生命周期消息的方法流程图。
[0090]
如图4所示,该实施例包括操作s410~s430。
[0091]
在操作s410,匹配系统版本信息与应用系统的版本信息,得到匹配结果,应用系统的版本信息是利用消息分发中心从应用系统的配置信息中得到的。
[0092]
根据本公开的实施例,例如:业务模块订阅信息中的系统版本信息为v1.0,利用消息分发中心从应用系统的配置信息中得到的应用系统的版本信息为v1.0。
[0093]
在操作s420,根据匹配结果,确定目标生命周期消息。
[0094]
根据本公开的实施例,在业务模块的系统版本信息与发生生命周期消息的应用系统的版本信息匹配的情况下,将该生命周期消息确定为目标生命周期消息。例如:生命周期消息a是应用系统a发出的,应用系统a的版本信息为v1.0。生命周期消息b是应用系统b发出的,应用系统b的版本信息为v1.1。业务模块a的业务模块订阅信息中的系统版本信息为v1.1,则生命周期消息b的系统版本信息与业务模块a系统版本信息匹配,可以确定生命周期消息b为目标生命周期消息。
[0095]
在操作是s430,通过消息分发中心向目标业务模块发送目标生命周期消息。
[0096]
根据本公开的实施例,通过消息分发中心,将生命周期消息b发送至业务模块a。
[0097]
根据本公开的实施例,通过系统版本信息的匹配,实现生命周期消息的过滤,可以
有效避免生命周期消息的无效转发。
[0098]
根据本公开的实施例,根据匹配结果,确定目标生命周期消息,包括:
[0099]
在匹配结果为版本信息匹配的情况下,将生命周期消息确定为目标生命周期消息;
[0100]
在匹配结果为版本信息不匹配的情况下,将生命周期消息删除。
[0101]
根据本公开的实施例,例如:生命周期消息a是应用系统a发出的,应用系统a的版本信息为v1.0。生命周期消息b是应用系统b发出的,应用系统b的版本信息为v1.1。业务模块订阅信息中的系统版本信息为v1.1,则生命周期消息b的系统版本信息与业务模块的系统版本信息匹配,可以确定生命周期消息b为目标生命周期消息。
[0102]
根据本公开的实施例,消息分发中心中可以同时接收到不同应用程序的多条生命周期消息,多条生命周期消息在消息分发中心中等到生命周期节点到达时,通过消息分发中心向目标业务模块进行发送。当生命周期消息a的系统版本信息v1.0与业务模块的系统版本信息v1.1不匹配时,可以将生命周期消息a从消息分发中心的消息队列中删除。
[0103]
根据本公开的实施例,通过系统版本信息的匹配,将系统版本信息匹配的生命周期消息及时发送至目标业务模块,将系统版本信息不匹配的生命周期消息及时从消息队列中删除,实现生命周期消息的过滤。
[0104]
根据本公开的实施例,上述生命周期消息的分发方法还包括:通过消息处理模块向应用系统的代理模块发送生命周期消息,用于兼容代理模块中的工程代码。
[0105]
根据本公开的实施例,由于应用程序的消息分发默认由应用系统的代理模块(即主工程)进行,在开发的过程中,业务模块的业务执行逻辑也时在主工程中编写的,因此,通过消息处理模块向应用系统的代理模块发送生命周期消息,以便于兼容代理模块(主工程)中的工程代码。
[0106]
根据本公开的实施例,例如:生命周期消息为播放音乐的应用a已转入后台,在主工程中编写的工程代码可以是当播放音乐的应用a转入后台时,执行暂停播放音乐的处理逻辑。当业务模块接收到该生命周期消息时,就可以按照主工程中编写的业务处理逻辑,暂停播放应用a的音乐。
[0107]
根据本公开的实施例,,通过消息处理模块向应用系统的代理模块发送生命周期消息,可以兼容代理模块(主工程)中的工程代码,以便于在开发过程中,在主工程中编写相应的业务处理逻辑。
[0108]
根据本公开的实施例,上述生命周期消息的分发方法,还包括:
[0109]
识别第一生命周期消息和第二生命周期消息;
[0110]
在第一生命周期消息和第二生命周期消息相同的情况下,合并第一生命周期消息和第二生命周期消息。
[0111]
根据本公开的实施例,例如:第一生命周期消息为播放音乐的应用a启动,第二生命周期消息为播放音乐的应用a启动,通过识别第一生命周期消息和第二生命周期消息,可以确定第一生命周期消息和第二生命周期消息相同。可以将第一生命周期消息和第二生命周期消息合并处理。
[0112]
根据本公开的实施例,通过将相同的生命周期消息的合并,再通过消息分发中心向目标业务模块发送,可以避免重复发送相同的生命周期消息。
[0113]
图5示意性示出了根据本公开实施例的生命周期消息的分发方法逻辑框图。
[0114]
如图5所示,该实施例包括操作s510~s580。
[0115]
在操作s510,通过消息处理模块调用与消息分发中心中的处理类对应的目标函数,以便接收由应用系统发出的生命周期消息;其中,目标函数是利用钩子函数将目标参数修改为消息分发中心得到的;目标参数用于表征消息分发执行主体,目标参数为应用程序中的生命周期消息处理类对应的函数中的参数。
[0116]
在操作s520,匹配系统版本信息与应用系统的版本信息,得到匹配结果,应用系统的版本信息是利用消息分发中心从应用系统的配置信息中得到的。
[0117]
在操作s530,确定系统版本信息与应用系统的版本信息是否匹配,若不匹配则执行s540,若匹配则执行s550。
[0118]
在操作s540,将生命周期消息删除。
[0119]
在操作s550,将生命周期消息确定为目标生命周期消息。
[0120]
在操作s560,根据业务模块订阅信息,确定多个目标业务模块,其中,业务模块订阅信息是目标业务模块,通过在消息分发中心注册订阅信息得到的;
[0121]
在操作s570,根据优先级信息,确定用于表征发送生命周期消息的顺序信息;
[0122]
在操作s580,通过消息分发中心,按照顺序信息,向目标业务模块发送生命周期消息。
[0123]
基于上述生命周期的分发方法,本公开还提供了一种生命周期的分发装置。以下将结合图6对该装置进行详细描述。
[0124]
图6示意性示出了根据本公开实施例的生命周期消息的分发系统的结构框图。
[0125]
如图6所示,该实施例的生命周期消息的分发系统系统600包括消息处理模块610和消息分发中心620。
[0126]
消息处理模块610用于调用与消息分发中心中的处理类对应的目标函数,以便接收由应用系统发出的生命周期消息;其中,目标函数是利用钩子函数将目标参数修改为消息分发中心得到的;目标参数用于表征消息分发执行主体,目标参数为应用程序中的生命周期消息处理类对应的函数中的参数,并向消息分发中心发送生命周期消息。在一实施例中,消息处理模块610可以用于执行前文描述的操作s210,在此不再赘述。
[0127]
消息分发中心620用于向目标业务模块发送生命周期消息。在一实施例中,消息分发中心620可以用于执行前文描述的操作s220,在此不再赘述。
[0128]
根据本公开的实施例,消息分发中心包括第一确定单元和第一发送单元。其中,第一确定单元,用于根据业务模块订阅信息,确定目标业务模块,其中,业务模块订阅信息是目标业务模块,通过在消息分发中心注册订阅信息得到的。第一发送单元,用于通过消息分发中心向目标业务模块发送生命周期消息。
[0129]
根据本公开的实施例,消息分发中心包括第二确定单元和第二发送单元,其中,第二确定单元,用于在目标业务模块包括多个业务模块的情况下,根据优先级信息,确定用于表征发送生命周期消息的顺序信息。第二发送单元,用于通过消息分发中心,按照顺序信息,向目标业务模块发送生命周期消息。
[0130]
根据本公开的实施例,消息分发中心包括匹配单元,第三确定单元和第三发送单元。匹配单元,用于匹配系统版本信息与应用系统的版本信息,得到匹配结果,应用系统的
版本信息是利用消息分发中心从应用系统的配置信息中得到的。第三确定单元,用于根据匹配结果,确定目标生命周期消息。第三发送单元,用于通过消息分发中心向目标业务模块发送目标生命周期消息。
[0131]
根据本公开的实施例,第三确定单元包括第一确定子单元和第二确定子单元。第一确定子单元,用于在匹配结果为版本信息匹配的情况下,将生命周期消息确定为目标生命周期消息。第二确定子单元,用于在匹配结果为版本信息不匹配的情况下,将生命周期消息删除。
[0132]
根据本公开的实施例,上述消息处理模块,用于向应用系统的代理模块发送生命周期消息,用于兼容代理模块中的工程代码。
[0133]
根据本公开的实施例,上述生命周期消息的分发系统,还包括识别模块和合并模块。识别模块,用于识别第一生命周期消息和第二生命周期消息。合并模块,用于在第一生命周期消息和第二生命周期消息相同的情况下,合并第一生命周期消息和第二生命周期消息。。
[0134]
根据本公开的实施例,消息处理模块610和消息分发中心620中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,消息处理模块610和消息分发中心620中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,消息处理模块610和消息分发中心620中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0135]
图7示意性示出了根据本公开实施例的适于实现生命周期消息的分发方法的电子设备的方框图。
[0136]
如图7所示,根据本公开实施例的电子设备700包括处理器701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。处理器701例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic))等等。处理器701还可以包括用于缓存用途的板载存储器。处理器701可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
[0137]
在ram 703中,存储有电子设备700操作所需的各种程序和数据。处理器701、rom 702以及ram 703通过总线704彼此相连。处理器701通过执行rom 702和/或ram 703中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除rom 702和ram 703以外的一个或多个存储器中。处理器701也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
[0138]
根据本公开的实施例,电子设备700还可以包括输入/输出(i/o)接口705,输入/输出(i/o)接口705也连接至总线704。电子设备700还可以包括连接至i/o接口705的以下部件中的一项或多项:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(crt)、液晶显示
器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
[0139]
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
[0140]
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的rom 702和/或ram 703和/或rom 702和ram 703以外的一个或多个存储器。
[0141]
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的生命周期消息的分发方法。
[0142]
在该计算机程序被处理器701执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
[0143]
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分709被下载和安装,和/或从可拆卸介质711被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0144]
在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被处理器701执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
[0145]
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如java,c ,python,“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0146]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0147]
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
[0148]
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献