CN1878206B - 事件订阅的方法及系统 - Google Patents
事件订阅的方法及系统 Download PDFInfo
- Publication number
- CN1878206B CN1878206B CN2006101012302A CN200610101230A CN1878206B CN 1878206 B CN1878206 B CN 1878206B CN 2006101012302 A CN2006101012302 A CN 2006101012302A CN 200610101230 A CN200610101230 A CN 200610101230A CN 1878206 B CN1878206 B CN 1878206B
- Authority
- CN
- China
- Prior art keywords
- event
- incident
- subscription
- event subscription
- center
- 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
Landscapes
- Information Transfer Between Computers (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了事件订阅的方法及系统,其中,所述方法包括以下步骤A)事件订阅者向事件中心发送含有事件之间逻辑关系的事件订阅;系统模块检测到自身状态发生改变,向事件中心发布事件;B)所述事件触发布尔逻辑运算主体将该事件在布尔逻辑运算中的值置为True,未收到事件的值置为false,对所述逻辑关系执行布尔逻辑运算,如果运算结果为True,则触发所述事件订阅者执行相应的操作。使用该方法,能够处理各种不同的逻辑关系,还能够在运行中动态修改运算逻辑,同时布尔逻辑处理在事件中心进行,减少了系统的处理代码,便于系统扩展和升级。
Description
技术领域
本发明涉及通信技术领域,尤其涉及事件订阅的方法及系统。
背景技术
随着电信业务的飞速发展,电信系统中模块数量越来越多,并且各个模块间的相互关系也越来越紧密,当电信系统中的一个模块关心系统中的另一个或一组模块的状态时,可以通过订阅相关的事件来实时获取相应的状态变化通知,这样也促使事件订阅在电信系统中使用频繁。
目前主要有两种事件订阅的方法,一种是单独订阅,即一个模块在订阅事件时仅能独立订阅事件,当该事件发生时,这个模块接收到事件中心发送的事件通知。
此方案只能订阅单独的一个事件,但是在电信系统中,事件订阅者往往同时关注多个事件,比如一个模块接收到事件E1和E2时,将发起动作A1,但是在该技术方案中由于E1和E2分别到达该模块,则该模块必须缓存之前发生的事件,并且对其是否失效进行判断,当E1和E2同时有效时触发动作A1,这就导致该模块的相应处理逻辑复杂化,而且系统中类似的情况比较多,重复的处理逻辑在同一个系统中多次出现,就直接导致系统的开发效率和运行可靠性受影响。
现有另一种方法是简单的组合订阅,其思想是:一个模块可以同时订阅一组事件,当这组事件同时有效时,这个模块接收到事件中心的通知,则触发相应的后续动作。参见图1所示,图1为所述方法的处理流程图:步骤101、事件订阅者向事件中心订阅一组事件;步骤102、系统模块检查到自身状态改变,发布事件;步骤103、事件中心收到事件,判断得到事件订阅列表中某一模块订阅的一组事件同时有效,发送事件通知给该事件订阅者;步骤104、事件订阅者收到事件通知,执行相应操作。
使用这种方法,虽然能够处理订阅一组事件时的情况,但不能处理逻辑关系为“或”的情况,更不能处理复杂逻辑的情况;在实现事件订阅过程中,需要为每个逻辑关系设计处理代码,即要求处理代码与逻辑关系紧耦合,因而不利于系统扩展,而且系统中逻辑类似的情况比较多,重复的逻辑关系在同一个系统中多次出现,需要分别对每个逻辑关系提供代码,就直接导致系统的开发效率低;如果某个事件订阅的逻辑关系需要改变,就需要重新编写处理代码,并且在系统停止运行时才能更新,使系统不能连续运行。
发明内容
本发明要解决的技术问题是提供事件订阅的方法及系统,能够实现复杂逻辑关系的事件订阅。
为解决上述技术问题,本发明的目的是通过以下技术方案实现的:
一种事件订阅的方法,该方法包括以下步骤:
A、事件订阅者向事件中心发送含有事件逻辑关系的事件订阅;系统模块检测到自身状态发生改变,向事件中心发布事件;
B、所述事件触发布尔逻辑运算主体将该事件在布尔逻辑运算中的值置为True,未收到事件的值置为false,对所述事件逻辑关系执行布尔逻辑运算,如果运算结果为True,则触发所述事件订阅者执行相应的操作。
优选的,该方法还包括:
布尔逻辑运算主体维护活动事件列表,并将所有处在所述列表中的事件在布尔逻辑运算中的值置为True,未置于所述列表中的事件在布尔逻辑运算中的值置为false;
布尔逻辑运算主体将发布的事件置于所述活动事件列表;
布尔逻辑运算主体从所述活动事件列表中删除无效的事件。
优选的,该方法进一步包括:
布尔逻辑运算主体维护事件订阅列表,将事件订阅者的事件订阅置于所述事件订阅列表;
并在所述事件订阅列表中对保存的事件订阅进行修改或删除。
优选的,步骤A中事件订阅者向事件中心发送事件订阅后进一步包括:
事件中心判断所述事件订阅中的事件是否在预置的事件列表中,如果否,向所述事件订阅者返回订阅失败,结束本流程;
步骤A中系统模块向事件中心发布事件后进一步包括:
事件中心判断所述事件是否在预置的事件列表中,如果否,结束本流程。
优选的,步骤A中事件订阅者向事件中心发送事件订阅后进一步包括:
事件中心判断所述事件订阅中的事件是否在预置的事件列表中,如果否,获取所述事件的信息,在所述事件列表中增加该事件;
步骤A中系统模块向事件中心发布事件后进一步包括:
事件中心判断所述事件是否在预置的事件列表中,如果否,获取所述事件的信息,在所述事件列表中增加该事件。
优选的,所述布尔逻辑运算主体为事件中心;
步骤A中事件订阅者向事件中心发送事件订阅后进一步包括:
事件中心检查所述事件逻辑关系的语法是否正确,如果否,向事件订阅者返回订阅失败,结束本流程。
优选的,所述布尔逻辑运算主体为事件中心,步骤B具体为:
B11、所述事件被事件中心收到后,事件中心将该事件在布尔逻辑运算中的值置为True,未收到事件在布尔逻辑运算中的值置为false,对所述事件逻辑关系执行布尔逻辑运算,如果运算结果为True,则向事件订阅者发事件通知;
B12、事件订阅者收到所述事件通知后,执行相应的操作。
优选的,所述布尔逻辑运算主体为事件订阅者,步骤B具体为:
B21、所述事件被事件中心收到后,事件中心将该事件发送给事件订阅者;
B22、事件订阅者收到事件中心转发的所述事件后,将该事件在布尔逻辑运算中的值置为True,未收到事件在布尔逻辑运算中的值置为false,对所述事件逻辑关系执行布尔逻辑运算,如果运算结果为True,则执行相应的操作。
优选的,所述事件订阅者为系统中任一关注系统中事件的模块。
一种事件订阅系统,该系统包括:事件订阅者、事件中心和系统模块,其中:
事件订阅者用于向事件中心发送含有事件之间逻辑关系的事件订阅,接收事件中心的事件通知,并在接到所述通知后执行相应的操作;
系统模块用于检查自身状态,如果状态发生改变,向事件中心发布事件;
事件中心用于向事件订阅者提供事件订阅接口,向系统模块提供事件发布接口,接收事件订阅者的事件订阅请求,接收系统模块发布的事件,当事件发布时,将该事件在布尔逻辑运算中的值置为True,未收到事件在布尔逻辑运算中的值置为false,对事件逻辑关系执行布尔逻辑运算,如果布尔逻辑运算结果为True,给事件订阅者发事件通知。
优选的,事件中心还用于维护活动事件列表,如果系统模块发布一个事件,将该事件加入活动事件列表,将所有置于所述列表中的事件在布尔逻辑运算中的值置为True,未置于所述列表中的事件在布尔逻辑运算中的值置为false,并删除所述列表中无效的事件。
优选的,所述事件中心还用于检查逻辑关系的语法是否正确,如果否,给事件订阅者返回订阅失败消息。
优选的,所述事件中心还用于检查事件订阅中的事件是否在预置的事件列表中,如果否,获取事件信息,在所述列表中增加该事件;还用于检查发布的事件是否在预置的事件列表中,如果否,还用于获取事件信息,在所述列表中增加该事件。
优选的,事件中心还用于维护订阅列表,如果事件订阅者订阅事件,事件中心将该订阅加入订阅列表,并在所述列表中修改或删除事件订阅。
一种事件订阅系统,该系统包括:事件订阅者、事件中心和系统模块,其中:
事件订阅者用于向事件中心发送含事件之间逻辑关系的事件订阅,当接收到事件中心的事件通知时,将该事件在布尔逻辑运算中的值置为True,未收到事件在布尔逻辑运算中的值置为false,对事件订阅的事件逻辑关系执行布尔逻辑运算,如果运算结果为True,则执行相应的操作;
系统模块用于检查自身状态,当状态改变时向事件中心发布事件;
事件中心用于向事件订阅者提供事件订阅接口,向系统模块提供事件发布接口,接收事件订阅者的事件订阅请求,接收系统模块发布的事件,并将该事件转发给事件订阅者。
优选的,事件订阅者还用于维护活动事件列表,如果接收到事件中心的事件通知,事件订阅者将该事件加入活动事件列表,将所有置于所述列表中的事件在布尔逻辑运算中的值置为True,未置于所述列表中的事件在布尔逻辑运算中的值置为false,并删除所述列表中无效的事件。
优选的,事件中心还用于检查事件订阅中的事件是否在预置的事件列表中,如果否,获取事件信息,在所述列表中增加该事件;还用于检查发布的事件是否在预置的事件列表中,如果否,还用于获取事件信息,在所述列表中增加该事件。
优选的,事件订阅者还用于维护订阅列表,如果事件订阅者订阅事件,事件订阅者将该订阅加入订阅列表,并在所述列表中修改或删除事件订阅。
从以上技术方案可以看出,本发明对事件逻辑关系执行布尔逻辑运算,所以能够处理各种不同的逻辑关系;所有逻辑关系都由布尔逻辑运算主体进行处理,而且布尔逻辑运算主体能对所有的逻辑关系进行处理,所以不需要为每个逻辑关系设计处理代码,使处理代码与逻辑关系间的耦合性不强,不需要为每个逻辑关系单独设计处理代码,减少了系统的处理代码,提高了系统的开发效率,而且代码数量少就减少了系统出错的可能;当系统需要进行扩展和升级时,事件中心只需要为新的模块提供接口,而不需要对处理代码进行大量的修改,减少了系统维护或升级的工作量;当事件订阅者订阅的事件的逻辑关系改变时,不用停止系统的运行来修改逻辑关系,只需要向事件中心重新订阅事件,将新的逻辑关系交由布尔逻辑处理单元进行处理,就可以在运行中动态修改逻辑关系;事件中心还对系统事件进行注册,在布尔逻辑运算中只对注册的事件进行处理,使系统的运行可靠性更高,并且还可以对未注册的事件进行注册,便于系统的扩展和升级;执行布尔逻辑运算的主体还维护活动事件列表,定期删除其中无效的事件,在执行布尔逻辑运算时,只有在活动事件列表中的事件取值才为True,布尔逻辑运算得到的结果更加可信,进一步提高了系统的运行可靠性。
附图说明
图1为现有技术二的处理流程图;
图2为本发明一系统的结构图;
图3为本发明方法第一实施例的具体流程图;
图4为本发明方法第二实施例的具体流程图;
图5为本发明方法第三实施例的具体流程图;
图6为本发明方法第四实施例的具体流程图;
图7为本发明方法第五实施例的具体流程图;
图8为本发明另一系统的结构图;
图9为本发明方法第六实施例的具体流程图;
图10为本发明方法第七实施例的具体流程图;
图11为本发明方法第八实施例的具体流程图;
图12为本发明方法第九实施例的具体流程图。
具体实施方式
本发明为事件订阅的方法及系统,为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
先介绍一下本发明提供的系统,参见图2所示,图2为本发明一系统的结构图,该系统主要由三部分组成:事件订阅者,事件中心和系统模块。
其中,事件订阅者是系统中的模块,当它关注系统中事件时用于向事件中心订阅事件,接收事件中心发送的事件通知;系统模块可以为系统中任意一个模块,也可以为事件订阅者本身,它用于检查自身状态,如果自身状态发生转变,向事件中心发布事件。
其中,事件中心按功能可以分为四个功能单元:事件管理单元,事件订阅单元,事件发布单元和布尔逻辑处理单元,其中:
事件管理单元用于事件的注册、事件列表的维护;如系统初始化时注册事件E1、E2和E3事件;
事件订阅单元用于向设备中其他模块提供事件订阅接口;如图2中的事件订阅者由事件订阅模块提供的接口向事件中心订阅事件“(E1&E2)|E3”;
事件发布单元用于向设备中其他模块提供事件发布接口;如图2中的系统模块检查到器件1出现故障状态则通过事件发布单元提供的接口发布E1事件,系统模块检查到器件2出现故障状态则通过事件发布单元提供的接口发布E2事件,系统模块检查到器件3出现故障状态则通过事件发布单元提供的接口发布E3事件;
布尔逻辑处理单元用于当事件中心接收到发布的事件后,在当前事件订阅列表中,执行订阅逻辑,如果事件为活动状态,则其布尔值为true,否则为false;如图2中事件订阅者订阅了“(E1&E2)|E3”而当前活动事件列表中的E1=false,E2=false,E3=false,则当系统模块发布事件E1后,布尔值分别为E1=true,E2=false,E3=false,则运算结果为false,不将该结果通知事件订阅者;如果紧接着系统模块发布E3事件,则测试运算结果为true,则将该结果通知事件订阅者。
以上对本发明提供的系统进行了详细描述,其中事件中心划分为四个功能模块只是为了描述方便而这样划分,在实际应用中,本领域技术人员可以根据系统和环境的需要对事件中心的功能单元进行不同的划分,本发明并不对事件中心功能单元的划分进行限定。
下面介绍本发明提供的方法的实施例,参见图3,图3为本发明方法第一实施例的具体流程图:
步骤301、事件订阅者向事件中心发送含有事件之间逻辑关系的事件订阅;该事件可以是一个单独的事件,也可以是一组需要执行布尔逻辑运算的事件;如系统中模块A向事件中心订阅事件“(E1&E2)|E3”,就将所述事件及其之间的逻辑关系发送给事件中心;
步骤302、系统模块检查到自身状态改变,向事件中心发布事件;
步骤303、事件中心收到事件,将该事件在布尔逻辑运算中的值置为True,未收到事件的值置为false,对事件逻辑关系执行布尔逻辑运算,如果计算结果为True则发送通知给对应的事件订阅者;如一个订阅为(E1&E2)|E3,事件中心只收到E1事件,则只有E1为True,E2和E3都为false,对该订阅执行布尔逻辑运算的结果为false,则不通知A模块;如果只收到E3事件,虽然只有E3为True,但执行布尔逻辑运算的结果为True,这时就通知A模块;
步骤304、事件订阅者收到事件通知,执行相应操作。例如一个模块是另一个模块的备用模块,所以它向事件中心订阅另一模块失效事件,当事件中心通知该模块另一模块失效事件发生时,该模块就执行另一模块相应的工作。
从以上步骤可以看出,本发明在事件中心对事件进行布尔逻辑运算,所以不仅能够处理“与”的情况,还能处理“或”的情况,所以能够处理复杂逻辑的情况;因为事件中心提供专门的布尔逻辑处理功能,所以不需要对每一个订阅提供对应的处理代码,降低了处理代码与逻辑关系的耦合性,有利于系统扩展;当事件订阅者的事件订阅的逻辑关系改变时可以随时向事件中心提出更改,而不需要重新修改代码,这样就能在运行中动态修改运算逻辑,例如一个模块订阅的事件为“(E1&E2)|E3”,当事件发生变化,该订阅需要更改为“(E1&E2)|(E3&E4)”时,只需要向事件中心重新发送一个订阅请求。
参见图4,图4为本发明方法第二实施例的具体流程图,本实施例与第一实施例相比增加了对事件订阅的逻辑关系的语法进行检查的功能。
步骤401、事件订阅者向事件中心提供的订阅接口发送事件订阅请求;
步骤402、事件中心判断事件订阅的事件逻辑关系的语法是否正确?如果是,事件中心将该订阅加入订阅列表,进入步骤404;如果否,进入步骤403;
布尔逻辑处理单元提供一个语法解析器对事件订阅的语法进行检查,例如一个事件订阅者订阅的是“E1&(E2|E3”,语法检查时发现缺少与“(”对应的“)”,这个逻辑关系就是语法不正确的,事件中心增加了对事件订阅者的订阅进行逻辑检查,防止事件发布后对语法错误的逻辑关系执行布尔逻辑运算而导致的系统负荷增加。
步骤403、向事件订阅者返回订阅失败消息,结束本流程;
步骤404、系统模块检查到自身状态改变,向事件中心发布事件;
步骤405、事件中心收到发布的事件,将该事件在布尔逻辑运算中的值置为True,未收到事件的值置为false,对事件逻辑关系执行布尔逻辑运算,如果计算结果为True则发送通知给对应的事件订阅者;
步骤406、事件订阅者收到事件通知,执行相应操作。
参见图5,图5为本发明方法第三实施例的具体流程图,本实施例与第二实施例相比事件中心增加了维护事件列表的功能。
步骤501、事件中心维护一个事件列表,统一注册全系统事件;注册事件就是在列表中增加事件,记录事件信息,包括事件的名称或编号以及其它相关信息,如事件有效期,事件类型等。
步骤502、事件订阅者向事件中心发送含有事件之间逻辑关系的事件订阅;
步骤503、事件中心判断订阅请求中的事件是否置于事件列表?如果是,事件中心将该订阅加入订阅列表,进入步骤505;如果否,进入步骤504; 判断是否置于事件列表中就是看是否能在事件列表中找到该事件;
步骤504、向事件订阅者返回订阅失败消息,结束本流程;
步骤505、事件中心判断订阅请求的语法是否正确?如果是,进入步骤506;如果否,进入步骤504;
步骤506、事件中心将该事件订阅加入订阅列表;事件中心维护订阅列表,当有多个订阅请求时能够同时处理,而且也有利于对事件订阅进行修改;
步骤507、系统模块检查到自身状态改变,向事件中心发布事件;
步骤508、事件中心收到事件,判断发布的事件是否置于事件列表?如果是,进入步骤510;如果否,进入步骤509;
步骤509、对该事件不进行处理,结束本流程;
步骤510、事件中心将该事件在布尔逻辑运算中的值置为True,未收到事件的值置为false,对事件逻辑关系执行布尔逻辑运算,如果计算结果为True则发送通知给对应的事件订阅者;
步骤511、事件订阅者收到事件通知,执行相应操作。
本实施例中事件中心维护了一个事件列表,这样执行布尔逻辑运算时的事件都在该事件列表中,防止对错误事件进行处理,使系统的运行可靠性更高。
参见图6所示,图6为本发明方法第四实施例的具体流程图,本实施例与第三实施例相比事件中心增加了将没有置于事件列表中的事件加入事件列表的功能。
步骤601、事件中心维护一个事件列表,统一注册全系统事件;
步骤602、事件订阅者向事件中心发送含有事件之间逻辑关系的事件订阅;
步骤603、事件中心判断订阅请求的语法是否正确?如果是,将该事件订阅加入订阅列表,进入步骤605;如果否,进入步骤604;
步骤604、事件中心向事件订阅者返回订阅失败消息,结束本流程;
步骤605、事件中心判断订阅请求中的事件是否在事件列表中?如果是,事件中心将该订阅加入订阅列表,直接进入步骤607;如果否,进入步骤606;
步骤606、事件中心从事件订阅者处获取该事件相关信息,将该事件加入事件列表;如事件订阅中有一个事件E1,该事件不在表中,则事件中心从事件订阅者获取该事件的信息,如有效期、事件类型等信息,在事件列表中增加该事件,保存该事件的相关信息;因为事件订阅者需要订阅一个新的事件,它就有该事件的相关信息,所以事件中心要从事件订阅者处获取该事件的相关信息;
步骤607、系统模块检查到自身状态改变,向事件中心发布事件;
步骤608、事件中心收到事件,判断该事件是否在事件列表中?如果是,直接进入步骤610;如果否,进入步骤609;
步骤609、事件中心从系统模块处获取事件相关信息,将该事件加入事件列表;因为系统模块发布一个新的事件,它就有该事件的相关信息,所以此处事件中心要从系统模块获取该事件的相关信息;
步骤610、事件中心将该事件在布尔逻辑运算中的值置为True,未收到事件的值置为false,对事件逻辑关系执行布尔逻辑运算,如果计算结果为True则发送通知给对应的事件订阅者;
步骤611、事件订阅者收到事件通知,执行相应操作。
本实施例中事件中心将没有置于事件列表中的事件加入事件列表,因为在系统扩展或升级中,会有许多新的事件出现,或者修改事件逻辑时也会使事件属性发生变化,这样做有利于系统的扩展或者升级;而且本实施例中先检查事件订阅的语法是否正确,然后再判断事件是否置于事件列表,这两个步骤的先后并不影响本发明的实现,本领域技术人员可以根据环境和系统的变化对步骤的顺序做出调整,本发明并不限定这两个步骤的执行先后顺序。
参见图7,图7为本发明第五实施例的具体流程图,本实施例与第四实施例相比事件中心增加了维护活动事件列表的步骤。
对比图6,本实施例与第四实施例的不同仅在于:
步骤710、事件中心将该事件加入活动事件列表,将所有处在活动事件列表的事件在布尔逻辑运算中的值置为True,不在事件列表中的事件的值置为false,对事件逻辑关系执行布尔逻辑运算,如果计算结果为True则发送通知给对应的事件订阅者。
本实施例中,系统模块向事件中心发布有效事件后,事件中心都要将该事件加入活动事件列表,这样在进行布尔处理时,只有在活动事件列表中的事件的取值才为True,不存在的则取值为false,例如活动列表中有E1、E2和E3这三个活动事件,E4和E5两个事件都发布过,但是因为转为无效而从活动事件列表中删除,而一个订阅为“(E1&E2&E3&E4)|E5”,因为只有E1、E2和E3三个取值为True,所以计算结果还是为false;并且事件中心还要定期的删除活动事件列表中无效的事件,这是因为系统中的事件的有效期都是有限的,只有在有效期内的事件才是有效的,并且一个事件在有效期内也不一定是有效的,例如一个事件E6还在有效期内,系统模块又发布一个事件E7,E7代表的模块状态和E6代表的模块状态刚好是该模块的两种不同的状态,而且该模块只有这两种状态,这时尽管E6还在有效期内也是无效的,所以要删除,这样布尔计算得到的结果更为可信,系统的运行可靠性就更高。
参见图8,图8为本发明提供的另一系统的结构图,该系统与上一系统相比,布尔逻辑处理模块置于事件订阅者中,该系统主要由三部分组成:事件订阅者,事件中心和系统模块。
其中,事件订阅者为系统中的模块,当它关注系统中的事件时用于向事件中心订阅事件,接收事件中心发送的事件通知,还用于当接收到事件中心的事件通知后,维护活动事件列表,在当前事件订阅列表中,执行订阅逻辑,如果事件为活动状态,则其布尔值为true,否则为false;如图7中事件订阅者订阅了“(E1&E2)|E3”而当前活动事件列表中的E1=false,E2=false,E3=false,则当系统模块发布事件E1后,布尔值分别为E1=true,E2=false,E3=false,则运算结果为false,不执行事件发生对应的操作;如果紧接着系统模块发布E3事件,则测试运算结果为true,则执行事件发生对应的操作,还用于定期删除活动事件列表中无效的事件。
系统模块可以为系统中的任一模块,也可以为事件订阅者本身,用于检查自身状态,如果自身状态发生转变,向事件中心发布事件。
其中,事件中心按功能可以分为三个功能单元:事件管理单元,事件订阅单元,事件发布单元,其中:
事件管理单元用于事件列表的维护;如系统初始化时在事件列表中增加事件E1、E2和E3;
事件订阅单元用于向设备中其他模块提供订阅接口;如图2中的事件订阅者由事件订阅模块提供的接口订阅事件“(E1&E2)|E3”;
事件发布单元用于向设备中其他模块提供事件发布接口;如图7中的系统模块检查到器件1出现故障状态则通过事件发布单元提供的接口发布E1事件,系统模块检查到器件2出现故障状态则通过事件发布单元提供的接口发布E2事件,系统模块检查到器件3出现故障状态则通过事件发布单元提供的接口发布E3事件;
以上对本发明提供的另一系统进行了详细描述,其中事件中心划分为三个功能单元只是为了描述方便而这样划分,在实际应用中,本领域技术人员可以根据系统和环境的需要对事件中心的功能单元进行不同的划分,本发明并不对事件中心功能单元的划分进行限定,只要事件中心完成的功能相同都应该在本发明的保护范围内。
参见图9,图9为本发明方法第六实施例的具体流程图,该实施例是在图8所描述的系统的基础上实现的。
步骤901、事件订阅者向事件中心发所述事件的订阅请求,事件中心将该事件加入自身维护的事件订阅列表;
步骤902、系统模块检查到自身状态改变,向事件中心发布事件;
步骤903、事件中心检查事件订阅列表,向订阅逻辑中含有该事件的事件订阅者发送事件通知;
步骤904、事件订阅者收到事件通知,将该事件在布尔逻辑运算中的值置为True,未收到事件的值置为false,对订阅列表中事件订阅的事件逻辑关系执行布尔逻辑运算,如果结果为true,执行发生该事件对应的操作。
本实施例中,布尔逻辑运算是在事件订阅者内进行的,因为能执行布尔逻辑运算,所以能处理复杂逻辑的情况,不需要对事件订阅者的每一个订阅提供对应的处理代码,降低了处理代码与逻辑关系的耦合性。
参见图10,图10为本发明方法第七实施例的具体流程图,本实施例与第五实施例相比事件中心增加了维护事件列表的功能。
步骤1001、事件中心维护一个事件列表,统一注册全系统事件;
步骤1002、事件订阅者向事件中心发送含有事件之间逻辑关系的事件订阅;
步骤1003、事件中心判断订阅请求中的事件是否置于事件列表中?如果否,进入步骤1004,如果是进入步骤1005;
步骤1004、向事件订阅者返回订阅失败消息,结束本流程;
步骤1005、系统模块检查到自身状态改变,向事件中心发布事件;
步骤1006、事件中心判断发布的事件是否置于事件列表中,如果否,进入步骤1007,如果是进入步骤1008;
步骤1007、事件中心对该事件不做处理,结束本流程;
步骤1008、事件中心检查事件订阅列表,向订阅逻辑中含有该事件的所有事件订阅者发送事件通知;
步骤1009、事件订阅者收到事件通知,将该事件的值置为True,未收到事件的值置为false,对订阅列表中事件订阅的事件逻辑关系执行布尔逻辑运算,如果结果为true,执行发生该事件对应的操作。
本实施例中事件中心维护了一个事件列表,这样执行布尔逻辑运算时的事件都在该事件列表中,防止对错误事件进行处理,使系统的运行可靠性更高。
参见图11,图11为本发明方法第八实施例的具体流程图,本实施例与第六实施例相比事件中心增加了将没有置于事件列表中的事件加入事件列表的功能。
步骤1101、事件中心维护一个事件列表,统一注册全系统事件;
步骤1102、事件订阅者向事件中心发送含有事件之间逻辑关系的事件订阅;
步骤1103、事件中心判断订阅请求中的事件是否置于事件列表?如果否,进入步骤1104,如果是进入步骤1105;
步骤1104、事件中心从系统模块处获取该事件的相关信息,对事件进行注册;
步骤1105、系统模块检查到自身状态改变,向事件中心发布事件;
步骤1106、事件中心判断发布的事件是否置于事件列表,如果否,进入步骤1107,如果是进入步骤1108;
步骤1107、事件中心对该事件不做处理,结束本流程;
步骤1108、事件中心检查事件订阅列表,向订阅逻辑中含有该事件的所有事件订阅者发送事件通知;
步骤1109、事件订阅者收到事件通知,将该事件在布尔逻辑运算中的值置为True,未收到事件的值置为false,对订阅列表中事件订阅的事件逻辑关系执行布尔逻辑运算,如果结果为true,执行发生该事件对应的操作。
本实施例中事件中心将没有置于事件列表中的事件加入事件列表,因为在系统扩展或升级中,会有许多新的事件出现,或者修改事件逻辑时也会使事件属性发生变化,这样做有利于系统的扩展或者升级。
参见图12,图12为本发明方法第九实施例的具体流程图,与第八实施例相比本实施例事件订阅者增加了维护活动事件列表的功能。
对比图11,本实施例与第八实施例的不同仅在于:
步骤1209、事件订阅者收到事件通知,将该事件加入活动事件列表,对所有在活动事件列表中的事件在布尔逻辑运算中的值置为True,未置于表中的事件的值置为false,对事件逻辑关系执行布尔逻辑运算,如果结果为true,执行发生该事件对应的操作。
本实施例中,事件订阅者收到事件后将该事件加入活动事件列表,并且还要定期的删除活动事件列表中无效的事件;这样在进行布尔处理时,只有在活动事件列表中的事件在布尔逻辑运算中的值才为True,不存在的则取值为false,并且事件中心还要定期的删除活动事件列表中无效的事件,这样布尔计算得到的结果更为可信,系统的运行可靠性就更高。
以上对本发明所提供的事件订阅的方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (18)
1.一种事件订阅的方法,其特征在于,该方法包括以下步骤:
A、事件订阅者向事件中心发送含有事件逻辑关系的事件订阅;系统模块检测到自身状态发生改变,向事件中心发布事件;
B、所述事件触发布尔逻辑运算主体将该事件在布尔逻辑运算中的值置为True,未收到事件的值置为false,对所述事件逻辑关系执行布尔逻辑运算,如果运算结果为True,则触发所述事件订阅者执行相应的操作。
2.根据权利要求1所述的事件订阅的方法,其特征在于,该方法还包括:
布尔逻辑运算主体维护活动事件列表,并将所有处在所述列表中的事件在布尔逻辑运算中的值置为True,未置于所述列表中的事件在布尔逻辑运算中的值置为false;
布尔逻辑运算主体将发布的事件置于所述活动事件列表;
布尔逻辑运算主体从所述活动事件列表中删除无效的事件。
3.根据权利要求1所述的事件订阅的方法,其特征在于,该方法进一步包括:
布尔逻辑运算主体维护事件订阅列表,将事件订阅者的事件订阅置于所述事件订阅列表;
并在所述事件订阅列表中对保存的事件订阅进行修改或删除。
4.根据权利要求1所述的事件订阅的方法,其特征在于,步骤A中事件订阅者向事件中心发送事件订阅后进一步包括:
事件中心判断所述事件订阅中的事件是否在预置的事件列表中,如果否,向所述事件订阅者返回订阅失败,结束本流程;
步骤A中系统模块向事件中心发布事件后进一步包括:
事件中心判断所述事件是否在预置的事件列表中,如果否,结束本流程。
5.根据权利要求1所述的事件订阅的方法,其特征在于,步骤A中事件订阅者向事件中心发送事件订阅后进一步包括:
事件中心判断所述事件订阅中的事件是否在预置的事件列表中,如果否,获取所述事件的信息,在所述事件列表中增加该事件;
步骤A中系统模块向事件中心发布事件后进一步包括:
事件中心判断所述事件是否在预置的事件列表中,如果否,获取所述事件的信息,在所述事件列表中增加该事件。
6.根据权利要求1所述的事件订阅的方法,其特征在于,所述布尔逻辑运算主体为事件中心;
步骤A中事件订阅者向事件中心发送事件订阅后进一步包括:
事件中心检查所述事件逻辑关系的语法是否正确,如果否,向事件订阅者返回订阅失败,结束本流程。
7.根据权利要求1所述的事件订阅的方法,其特征在于,所述布尔逻辑运算主体为事件中心,步骤B具体为:
B11、所述事件被事件中心收到后,事件中心将该事件在布尔逻辑运算中的值置为True,未收到事件在布尔逻辑运算中的值置为false,对所述事件逻辑关系执行布尔逻辑运算,如果运算结果为True,则向事件订阅者发事件通知;
B12、事件订阅者收到所述事件通知后,执行相应的操作。
8.根据权利要求1所述的事件订阅的方法,其特征在于,所述布尔逻辑运算主体为事件订阅者,步骤B具体为:
B21、所述事件被事件中心收到后,事件中心将该事件发送给事件订阅者;
B22、事件订阅者收到所述事件后,将该事件在布尔逻辑运算中的值置为True,未收到事件在布尔逻辑运算中的值置为false,对所述事件逻辑关系执行布尔逻辑运算,如果运算结果为True,则执行相应的操作。
9.根据权利要求1至8任一所述的事件订阅的方法,其特征在于,所述事件订阅者为系统中任一关注系统中事件的模块。
10.一种事件订阅系统,其特征在于,该系统包括:事件订阅者、事件中心和系统模块,其中:
事件订阅者用于向事件中心发送含有事件之间逻辑关系的事件订阅,接收事件中心的事件通知,并在接到所述通知后执行相应的操作;
系统模块用于检查自身状态,如果状态发生改变,向事件中心发布事件;
事件中心用于向事件订阅者提供事件订阅接口,向系统模块提供事件发布接口,接收事件订阅者的事件订阅请求,接收系统模块发布的事件,当事件发布时,将该事件在布尔逻辑运算中的值置为True,未收到事件在布尔逻辑运算中的值置为false,对事件逻辑关系执行布尔逻辑运算,如果布尔逻辑运算结果为True,给事件订阅者发事件通知。
11.根据权利要求10所述的事件订阅系统,其特征在于,事件中心还用于维护活动事件列表,如果系统模块发布一个事件,将该事件加入活动事件列表,并删除所述列表中无效的事件。
12.根据权利要求10所述的事件订阅系统,其特征在于,所述事件中心还用于检查逻辑关系的语法是否正确,如果否,给事件订阅者返回订阅失败消息。
13.根据权利要求10所述的事件订阅系统,其特征在于,所述事件中心还用于检查事件订阅中的事件是否在预置的事件列表中,如果否,获取事件信息,在所述列表中增加该事件;还用于检查发布的事件是否在预置的事件列表中,如果否,还用于获取事件信息,在所述列表中增加该事件。
14.根据权利要求10所述的事件订阅系统,其特征在于,事件中心还用于维护订阅列表,如果事件订阅者订阅事件,事件中心将该订阅加入订阅列表,并在所述列表中修改或删除事件订阅。
15.一种事件订阅系统,其特征在于,该系统包括:事件订阅者、事件中心和系统模块,其中:
事件订阅者用于向事件中心发送含事件之间逻辑关系的事件订阅,当接收到事件中心的事件通知时,将该事件在布尔逻辑运算中的值置为True,未收到事件在布尔逻辑运算中的值置为false,对事件订阅的事件逻辑关系执行布尔逻辑运算,如果运算结果为True,则执行相应的操作;
系统模块用于检查自身状态,当状态改变时向事件中心发布事件;
事件中心用于向事件订阅者提供事件订阅接口,向系统模块提供事件发布接口,接收事件订阅者的事件订阅请求,接收系统模块发布的事件,并将该事件转发给事件订阅者。
16.根据权利要求15所述的事件订阅系统,其特征在于,事件订阅者还用于维护活动事件列表,如果接收到事件中心的事件通知,事件订阅者将该事件加入活动事件列表,并删除所述列表中无效的事件。
17.根据权利要求15所述的事件订阅系统,其特征在于,事件中心还用于检查事件订阅中的事件是否在预置的事件列表中,如果否,获取事件信息,在所述列表中增加该事件;还用于检查发布的事件是否在预置的事件列表中,如果否,还用于获取事件信息,在所述列表中增加该事件。
18.根据权利要求15所述的事件订阅系统,其特征在于,事件订阅者还用于维护订阅列表,如果事件订阅者订阅事件,事件订阅者将该订阅加入订阅列表,并在所述列表中修改或删除事件订阅。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006101012302A CN1878206B (zh) | 2006-07-07 | 2006-07-07 | 事件订阅的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006101012302A CN1878206B (zh) | 2006-07-07 | 2006-07-07 | 事件订阅的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1878206A CN1878206A (zh) | 2006-12-13 |
CN1878206B true CN1878206B (zh) | 2010-11-10 |
Family
ID=37510493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006101012302A Active CN1878206B (zh) | 2006-07-07 | 2006-07-07 | 事件订阅的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1878206B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103268567B (zh) * | 2013-03-25 | 2016-12-28 | 中国科学院沈阳自动化研究所 | 面向制造行业管理系统的高效大规模事件侦测与处理方法 |
CN110166983B (zh) * | 2018-02-11 | 2021-11-19 | 中国移动通信有限公司研究院 | 一种事件订阅方法及网元设备 |
CN109697658B (zh) * | 2018-12-29 | 2021-03-23 | 拉扎斯网络科技(上海)有限公司 | 订单管理方法、装置、电子设备及计算机可读存储介质 |
CN112218272A (zh) * | 2019-07-10 | 2021-01-12 | 大唐移动通信设备有限公司 | 一种事件订阅方法、装置及设备 |
CN113553157A (zh) * | 2021-07-28 | 2021-10-26 | 厦门南讯股份有限公司 | 事件驱动的作业调度系统及方法 |
CN117411930A (zh) * | 2022-07-06 | 2024-01-16 | 中国电信股份有限公司 | 信息传输方法及装置、网络设备、通信系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1259813A (zh) * | 1998-11-27 | 2000-07-12 | 深圳市中兴通讯股份有限公司 | 可远程下载运行软件的智能数据监控通讯设备及方法 |
CN1260538A (zh) * | 1999-12-22 | 2000-07-19 | 杭州南望电力科技有限公司 | 远程图像监控服务器 |
CN1547346A (zh) * | 2003-12-15 | 2004-11-17 | 浙江大学 | 一种开放式的超远距离工业监控信息集成方法及系统 |
CN2729801Y (zh) * | 2004-10-11 | 2005-09-28 | 上海爱瑞科技发展有限公司 | 工业现场用计算机风扇监控器 |
-
2006
- 2006-07-07 CN CN2006101012302A patent/CN1878206B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1259813A (zh) * | 1998-11-27 | 2000-07-12 | 深圳市中兴通讯股份有限公司 | 可远程下载运行软件的智能数据监控通讯设备及方法 |
CN1260538A (zh) * | 1999-12-22 | 2000-07-19 | 杭州南望电力科技有限公司 | 远程图像监控服务器 |
CN1547346A (zh) * | 2003-12-15 | 2004-11-17 | 浙江大学 | 一种开放式的超远距离工业监控信息集成方法及系统 |
CN2729801Y (zh) * | 2004-10-11 | 2005-09-28 | 上海爱瑞科技发展有限公司 | 工业现场用计算机风扇监控器 |
Also Published As
Publication number | Publication date |
---|---|
CN1878206A (zh) | 2006-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1878206B (zh) | 事件订阅的方法及系统 | |
CN100359481C (zh) | 多任务系统的异常监控装置及其方法 | |
CN101378334B (zh) | 基于双网冗余通用网络模型的通讯方法 | |
CN100499576C (zh) | 在消息传递中间件环境中定义替换信道路由机制的系统 | |
WO2017181872A1 (zh) | 数据处理系统以及方法 | |
CN105760240A (zh) | 分布式任务处理方法及装置 | |
CN113452607B (zh) | 分布式链路采集的方法、装置、计算设备和存储介质 | |
CN109597837B (zh) | 时序数据的存储方法、查询方法及相关设备 | |
CN101267345A (zh) | 业务节点备份方法及分布式系统 | |
US20220334911A1 (en) | Method, electronic device, and computer product for storage management | |
CN101192192B (zh) | 用于实时操作系统的任务异常诊断方法及系统 | |
CN112015815A (zh) | 数据同步方法、装置及计算机可读存储介质 | |
CN106648858A (zh) | 一种c#接口数据交互管理系统 | |
KR20150077474A (ko) | 룰 분배 서버, 이벤트 처리 시스템, 방법 및 프로그램 | |
CN103019848B (zh) | 一种pci总线非向量中断实现方法 | |
US20160164719A1 (en) | Fault tolerance method for distributed stream processing system | |
JP4313978B2 (ja) | 計算機監視方式、計算機監視方法および計算機監視用プログラム | |
CN105700859A (zh) | 一种基于网络处理器实现硬件表遍历的方法及装置 | |
US8108736B2 (en) | Multi-partition computer system, failure handling method and program therefor | |
CN100562850C (zh) | 多处理器负载分配调整方法 | |
Verma et al. | Reliability-based optimal task-allocation in distributed-database management systems | |
EP2770447B1 (en) | Data processing method, computational node and system | |
CN111061576B (zh) | 一种实体对象的创建方法及系统 | |
US20030005175A1 (en) | Method and apparatus for providing a state machine operating on a real-time operating system | |
CN111782489A (zh) | 数据表监控方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |