CN105988863B - 一种处理事件的方法及装置 - Google Patents
一种处理事件的方法及装置 Download PDFInfo
- Publication number
- CN105988863B CN105988863B CN201510073491.7A CN201510073491A CN105988863B CN 105988863 B CN105988863 B CN 105988863B CN 201510073491 A CN201510073491 A CN 201510073491A CN 105988863 B CN105988863 B CN 105988863B
- Authority
- CN
- China
- Prior art keywords
- event
- matching
- state machine
- machine instance
- occurred
- 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
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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2477—Temporal data queries
-
- 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/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Multimedia (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种处理事件的方法及装置,涉及数据处理技术领域,能够减少CEP系统在复杂场景中进行模式匹配时的内存开销。本发明实施例的方法包括:当第X事件出现后,状态机实例在当前匹配周期中进行匹配;当未得到匹配成功的结果时,所述状态机实例检测当前已出现的事件数量是否大于1;若所述当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在所述下一匹配周期中重新进行匹配。本发明适用于运行了具有模式匹配功能的系统的设备。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种处理事件的方法及装置。
背景技术
目前,大数据处理技术已被应用在很多领域,在需要实时分析的大数据处理场景中,常用的分析系统是CEP(Complex Event Processing,复杂事件处理)系统。模式匹配是CEP系统的重要的能力之一,主要用来在实时业务场景下根据具体事件来识别业务执行的最佳时机。在匹配的过程中,由滑动窗口或是分批窗口中的事件的状态机实例执行匹配,当窗口中出现一个事件后,CEP系统需要为出现的事件建立状态机实例,并且将新出现的事件通知给窗口中已有事件的状态机实例,以滑动窗口为例:匹配成功的判定条件为连续出现3个事件,这3个事件按照时间出现顺序为事件1,事件2和事件3,当事件3出现后,CEP系统建立事件3对应的状态机实例,并将事件3的出现分别通知给已建立的事件1的状态机实例和事件2的状态机实例,事件1的状态机实例执行匹配,并判定窗口中已出现的事件的数量为3个,匹配成功;若事件3出现后,滑动窗口发生滑动,事件1脱离了滑动窗口,则事件2的状态机实例执行匹配,并判定窗口中已出现的事件的数量不足3个,匹配失败。
由于实时业务场景的复杂程度日益增加,需要窗口的长度以便能够覆盖更多的事件,例如:使用CEP系统的模式匹配功能筛选出经常掉话的用户,在通话过程中,连续出现指定次数以上的掉话事件就判定匹配成功。由于实际应用中掉话事件的发生时间无法预知,可能分布在整个通话过程中的任意时刻,为了保证匹配过程能够覆盖通话过程中的掉话事件,就需要延长窗口的长度以提高窗口对于通话过程中掉话事件的覆盖率。但是窗口越长,可能覆盖到的事件也就越多,若在某一次匹配过程中,长窗口覆盖到了大量事件,则CEP系统所需创建的对应于事件的状态机实例大大增多,而创建一个状态机实例需要占用一部分内存资源,CEP系统需要占用大量内存资源为长匹配窗口中的事件创建状态机实例,增加了CEP系统在复杂场景中进行模式匹配时的内存开销。
发明内容
本发明实施例提供一种处理事件的方法及装置,能够减少CEP系统在复杂场景中进行模式匹配时的内存开销。
为达到上述目的,本发明实施例采用如下技术方案:
第一方面,本发明实施例提供一种处理事件的方法,所述方法包括:
当第X事件出现后,状态机实例在当前匹配周期中进行匹配,其中,所述状态机实例用于在一个匹配周期中将已出现的事件和预设的匹配规则进行匹配,并得到匹配结果,所述匹配结果为匹配成功的结果或者匹配失败的结果;
当未得到匹配成功的结果时,所述状态机实例检测当前已出现的事件数量是否大于1;
若所述当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在所述下一匹配周期中重新进行匹配,其中,已出现的事件按照出现的时间先后顺序依次排列为第1事件至所述第X+1事件。
结合第一方面,在第一方面的第一种可能的实现方式中,所述方法还包括:
若所述当前已出现的事件数量等于1,则删除当前已出现的这一个事件并结束所述状态机实例。
结合第一方面,或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述方法还包括:
当得到匹配成功的结果时,删除所述当前已出现的事件并结束所述状态机实例。
结合第一方面、第一方面的第一至第二种可能的实现方式中任意一项,在第一方面的第三种可能的实现方式中,所述未得到匹配成功的结果,包括:所述状态机实例在所述当前匹配周期中没有得到所述匹配结果。
结合第一方面、第一方面的第一至第二种可能的实现方式中任意一项,在第一方面的第四种可能的实现方式中,所述未得到匹配成功的结果,包括:所述状态机实例在所述当前匹配周期中得到所述匹配失败的结果。
结合第一方面、第一方面的第一至第四种可能的实现方式中任意一项,在第一方面的第五种可能的实现方式中,所述方法还包括:当第1事件出现时建立所述状态机实例。
结合第一方面、第一方面的第一至第五种可能的实现方式中任意一项,在第一方面的第六种可能的实现方式中,所述预设的匹配规则至少包括:在所述一个匹配周期中已出现的事件的数量达到阈值,和/或在所述一个匹配周期中已出现的事件的类型符合预设类型。
结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述预设的匹配规则为:在所述一个匹配周期中已出现的事件的类型符合预设类型;所述方法还包括:
所述状态机实例检测所述当前已出现的事件数量是否超过预设值;
若所述当前已出现的事件数量超过预设值,则删除所述状态机实例记录的事件中的至少一项。
结合第一方面、第一方面的第一至第七种可能的实现方式中任意一项,在第一方面的第八种可能的实现方式中,所述状态机实例中存在属性列表,所述属性列表中存储用于进行匹配的信息,在删除已出现的事件时,所述方法还包括:移除所述属性列表中被删除的事件对应的用于进行匹配的信息。
第二方面,本发明实施例提供一种处理事件的装置,所述装置包括:
处理模块,用于当第X事件出现后,在当前匹配周期中进行匹配,其中,所述处理模块,还用于在一个匹配周期中将已出现的事件和预设的匹配规则进行匹配,并得到匹配结果,所述匹配结果为匹配成功的结果或者匹配失败的结果;
判断模块,用于当未得到匹配成功的结果时,检测当前已出现的事件数量是否大于1;
所述处理模块,还用于若所述当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在所述下一匹配周期中重新进行匹配,其中,已出现的事件按照出现的时间先后顺序依次排列为第1事件至所述第X+1事件。
结合第二方面,在第二方面的第一种可能的实现方式中,所述处理模块,还用于若所述当前已出现的事件数量等于1,则删除当前已出现的这一个事件并结束状态机实例。
结合第二方面,或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述处理模块,还用于当得到匹配成功的结果时,删除所述当前已出现的事件并结束所述状态机实例。
结合第二方面、第二方面的第一至第二种可能的实现方式中任意一项,在第二方面的第三种可能的实现方式中,所述未得到匹配成功的结果,包括:所述状态机实例在所述当前匹配周期中没有得到所述匹配结果。
结合第二方面、第二方面的第一至第二种可能的实现方式中任意一项,在第二方面的第四种可能的实现方式中,所述未得到匹配成功的结果,包括:所述状态机实例在所述当前匹配周期中得到所述匹配失败的结果。
结合第二方面、第二方面的第一至第四种可能的实现方式中任意一项,在第二方面的第五种可能的实现方式中,所述装置还包括:建立模块,用于当第1事件出现时建立所述状态机实例。
结合第二方面、第二方面的第一至第五种可能的实现方式中任意一项,在第二方面的第六种可能的实现方式中,所述预设的匹配规则至少包括:在所述一个匹配周期中已出现的事件的数量达到阈值,和/或在所述一个匹配周期中已出现的事件的类型符合预设类型。
结合第二方面的第六种可能的实现方式,在第二方面的第七种可能的实现方式中,所述预设的匹配规则为:在所述一个匹配周期中已出现的事件的类型符合预设类型;所述装置还包括:
检测模块,用于检测所述当前已出现的事件数量是否超过预设值;
所述处理模块,还用于若所述当前已出现的事件数量超过预设值,则删除所述状态机实例记录的事件中的至少一项。
结合第二方面、第二方面的第一至第七种可能的实现方式中任意一项,在第二方面的第八种可能的实现方式中,所述状态机实例中存在属性列表,所述属性列表中存储用于进行匹配的信息,在删除已出现的事件时,所述处理模块,还用于移除所述属性列表中被删除的事件对应的用于进行匹配的信息。
本发明实施例提供的一种处理事件的方法及装置,当第X事件出现后,状态机实例在当前匹配周期中进行匹配,当未得到匹配成功的结果时,若状态机实例检测当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配。相比较于现有技术,本发明实施例在状态机实例进行匹配的过程中,能够以后一个事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配,通过重复执行匹配过程,实现了只通过一个状态机实例就能够对滑动窗口中所有的事件进行匹配。并且由于每一个匹配周期的起始时刻都是各个事件的起始时刻,使得滑动窗口基于各个已出现的事件的起始时刻进行滑动,避免了在复杂场景中滑动窗口在滑动的过程中遗漏事件的问题。从而在复杂场景中进行模式匹配时,CEP系统不必为每一个事件创建一个状态机实例,仅需要一个状态机实例就可以进行匹配,并且避免了复杂场景中的事件遗漏,减少了因创建多个状态机实例而占用的内存资源,从而减少了CEP系统在复杂场景中进行模式匹配时的内存开销。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种具体应用场景的结构示意图;
图2为本发明实施例提供的一种处理事件的方法流程图;
图3为本发明实施例提供的另一种处理事件的方法流程图;
图4为本发明实施例提供的一种具体应用场景示意图;
图5为本发明实施例提供的另一种处理事件的方法流程图;
图6为本发明实施例提供的另一种具体应用场景的结构示意图;
图7为本发明实施例提供的另一种具体应用场景示意图;
图8为本发明实施例提供的另一种具体应用场景的结构示意图;
图9为本发明实施例提供的另一种具体应用场景示意图;
图10为本发明实施例提供的另一种处理事件的方法流程图;
图11为本发明实施例提供的另一种处理事件的方法流程图;
图12为本发明实施例提供的一种处理事件的装置的结构示意图;
图13为本发明实施例提供的一种处理事件的设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,“删除”在本领域技术人员之间也常被认为“消费”,即“删除一个事件”的含义应该与“消费一个事件”的含义相同。
本发明实施例具体可以实现在运行了具有模式匹配功能的系统的设备上,运行了具有模式匹配功能的系统的设备的具体类型并不限定,例如:运行了具有模式匹配功能的系统的设备可以包括输入单元、处理器单元、输出单元、通信单元、存储单元等组件。这些组件通过一条或多条总线进行通信。本领域技术人员可以理解,运行了具有模式匹配功能的系统的设备的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施方式中,运行了具有模式匹配功能的系统的设备可以是任何具备数据存储、处理、传输功能的设备,包括但不限于刀片式服务器、塔式服务器、机柜式服务器、移动工作站、个人电脑,以及上述两项或两项以上的组合等。
如图1所示,具有模式匹配功能的系统可以包括PostgreSQL(关系数据库管理服务器)定义、代数表达式编译器、模式优化、状态机实例编译、元数据分发服务、路由和状态机引擎,客户端通过对PostgreSQL定义,从而在PostgreSQL的策略类别中增加关键字支持(SLIDING DISMATCH),并从模式匹配语法中识别该关键字;通过代数表达式编译器将策略类别设置到代数表达式的属性中;经过模式优化之后或直接根据策略,以及代数表达式中的策略由状态机实例编译;元数据分发服务将编译结果分发至路由和状态机引擎,其中,状态机引擎模块主要用于管理基本的状态机的运行;当事件输入之后,通过路由转存再经过状态机引擎输出事件至业务系统。
例如:用户通过客户端对需要识别的业务模式进行定义,PostgreSQL定义、代数表达式编译器、模式优化和状态机实例编译将用户定义的业务模式编译为状态机实例元数据,并由元数据分发服务部署到路由和状态机引擎模块上,在运行过程中,路由接收到输入事件再发送至状态机引擎模块,将事件分发给与事件对应的状态机实例,在状态机实例中实时判断是否满足用户定义的业务模式,若满足则输出新的事件给第三方的业务系统。其中,具体的编译过程至少包括以下流程:
通过在PostgreSQL的策略类别中增加关键字支持来增强PostgreSQL;经过解析转换之后,从模式匹配语法中识别关键字;经过再一次转换之后,将策略类别设置到代数表达式的属性中;之后经过编译,使状态机实例根据策略以及代数表达式中的策略执行匹配窗口滑动。需要说明的是,对于不同的策略,需要通过不同的状态机实例来实现。
本发明实施例提供一种处理事件的方法,如图2所示,可以包括:
101、当第X事件出现后,状态机实例在当前匹配周期中进行匹配。
其中,所述状态机实例用于在一个匹配周期中将已出现的事件和预设的匹配规则进行匹配,并得到匹配结果,所述匹配结果为匹配成功的结果或者匹配失败的结果。
在本实施例中,具有模式匹配功能的系统的设备开始执行匹配过程的触发条件可以有多种,比如在基于时间的应用场景中,当达到指定时刻建立对应于基于时间的匹配窗口的状态机实例,并开始执行匹配过程;再比如在基于事件的应用场景中,当第一个事件出现时建立对应于基于事件的匹配窗口的状态机实例,并开始执行匹配过程。当每一个事件出现时,在具有模式匹配功能的系统的设备上运行的状态机实例记录出现的事件,并将出现的事件的相关信息记录在状态机实例中,例如:具有模式匹配功能的系统的设备上运行的状态机实例将出现的事件的类型记录在属性列表中。在状态机实例中设置有计数器,用于统计已出现的事件的数量,当新的一个事件出现后计数器的数量加1。
匹配周期作为匹配过程中的对时间周期的限定,当达到匹配周期,则认为匹配过程的时间已达到限定的时间周期。需要说明的是,匹配周期可以在设计业务的时候设定,并将所设定的匹配周期的具体数值作为与业务有关的信息,在状态机实例建立时读取,并作为触发状态机实例执行检测过程的触发条件之一,例如在102中,触发状态机实例执行检测过程的触发条件为未得到匹配成功的结果。
102、当未得到匹配成功的结果时,所述状态机实例检测当前已出现的事件数量是否大于1。
在本次匹配过程开始后出现的第一个事件出现的时刻作为匹配周期的起始时刻来检测在匹配周期内,窗口中的事件是否匹配成功。需要说明的是,当匹配窗口中的事件满足预设的匹配规则时,则认为匹配成功。在本发明实施例中,并不限定具体的匹配规则,匹配规则可以根据不同的业务需求进行预先设定,例如:预设的匹配规则至少包括:在所述一个匹配周期中已出现的事件的数量达到阈值,和/或在所述一个匹配周期中已出现的事件的类型符合预设类型。
103、若所述当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在所述下一匹配周期中重新进行匹配。
其中,已出现的事件按照出现的时间先后顺序依次排列为第1事件至所述第X+1事件。
例如:用户开始打电话,打电话的总时长为30分钟,在30分钟内总共出现了3次掉话事件,分别出现在第10分钟、第11分钟和第15分钟,则出现在第10分钟的掉话事件可以称为当前已出现的事件,出现在第11分钟的掉话事件可以称为第X+1事件。需要说明的是,当滑动后的匹配窗口中已出现的事件和预设的匹配规则进行匹配时的匹配周期,可以与滑动前的匹配窗口中已出现的事件和预设的匹配规则进行匹配时的匹配周期相同,或者根据业务场景的需求针对滑动后的匹配窗口中已出现的事件和预设的匹配规则在匹配过程中重新设定下一匹配周期。比如:业务场景为在任意一个5分钟窗口内满足预设的匹配规则就将掉话事件上报,其中,为了避免频繁上报掉话事件,因此将匹配规则设置为在5分钟窗口内出现3次或3次以上掉话事件则上报。在窗口中已出现的事件和预设的匹配规则进行匹配时,即匹配过程开始之后,将第一个掉话事件出现的时刻作为匹配周期的起始时刻,检测在匹配周期内5分钟窗口中的掉话事件是否出现3次或3次以上,若5分钟窗口中的掉话事件仅出现1次、2次,或未出现掉话事件,则将该5分钟窗口滑动到第二个掉话事件,并将第二个掉话事件出现的时刻作为下一匹配周期的起始时刻,对滑动后的5分钟窗口重新进行匹配。
本发明实施例提供的一种处理事件的方法,当第X事件出现后,状态机实例在当前匹配周期中进行匹配,当未得到匹配成功的结果时,若状态机实例检测当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配。相比较于现有技术,本发明实施例在状态机实例进行匹配的过程中,能够以后一个事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配,通过重复执行匹配过程,实现了只通过一个状态机实例就能够对滑动窗口中所有的事件进行匹配。并且由于每一个匹配周期的起始时刻都是各个事件的起始时刻,使得滑动窗口基于各个已出现的事件的起始时刻进行滑动,避免了在复杂场景中滑动窗口在滑动的过程中遗漏事件的问题。从而在复杂场景中进行模式匹配时,CEP系统不必为每一个事件创建一个状态机实例,仅需要一个状态机实例就可以进行匹配,并且避免了复杂场景中的事件遗漏,减少了因创建多个状态机实例而占用的内存资源,从而减少了CEP系统在复杂场景中进行模式匹配时的内存开销。
本发明实施例中,在如图2所示的实现方式的基础上,还可以实现为如图3所示的实现方式:
104、若所述当前已出现的事件数量等于1,则删除当前已出现的这一个事件并结束所述状态机实例。
若当前已出现的事件满足相应的匹配规则,则认为匹配周期中的已出现的事件和预设的匹配规则进行匹配,并得到匹配成功的结果,删除匹配周期内的匹配窗口中出现的全部事件并结束匹配窗口对应的状态机实例,当出现新的事件或重新开始一个新的匹配窗口中的事件和预设的匹配规则进行匹配时,再创建新的匹配窗口和对应新的匹配窗口的状态机实例。
例如:如图4所示,预设的匹配规则为出现2次或2次以上事件,在匹配周期内,窗口1中出现1个事件,则窗口1不满足预设的匹配规则,未完成匹配;窗口2中出现3个事件,则窗口2满足预设的匹配规则,删除窗口2中出现的全部事件,即事件1、事件2和事件3,并结束窗口2对应的状态机实例。
本发明实施例提供的一种处理事件的方法,当第X事件出现后,状态机实例在当前匹配周期中进行匹配,当未得到匹配成功的结果时,若状态机实例检测当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配;若当前已出现的事件数量等于1,则删除当前已出现的这一个事件并结束所述状态机实例。相比较于现有技术,本发明实施例在状态机实例进行匹配的过程中,能够以后一个事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配,通过重复执行匹配过程,实现了只通过一个状态机实例就能够对滑动窗口中所有的事件进行匹配。并且由于每一个匹配周期的起始时刻都是各个事件的起始时刻,使得滑动窗口基于各个已出现的事件的起始时刻进行滑动,避免了在复杂场景中滑动窗口在滑动的过程中遗漏事件的问题。从而在复杂场景中进行模式匹配时,CEP系统不必为每一个事件创建一个状态机实例,仅需要一个状态机实例就可以进行匹配,并且避免了复杂场景中的事件遗漏,减少了因创建多个状态机实例而占用的内存资源,从而减少了CEP系统在复杂场景中进行模式匹配时的内存开销。
本发明实施例中,在如图2或图3所示的实现方式的基础上,还可以实现为如图5所示的实现方式:
105、当得到匹配成功的结果时,删除所述当前已出现的事件并结束所述状态机实例。
当未得到匹配成功的结果时,执行上述102。
本发明实施例提供的一种处理事件的方法,当第X事件出现后,状态机实例在当前匹配周期中进行匹配,当未得到匹配成功的结果时,若状态机实例检测当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配;当得到匹配成功的结果时,删除当前已出现的事件并结束所述状态机实例。相比较于现有技术,本发明实施例在状态机实例进行匹配的过程中,能够以后一个事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配,通过重复执行匹配过程,实现了只通过一个状态机实例就能够对滑动窗口中所有的事件进行匹配。并且由于每一个匹配周期的起始时刻都是各个事件的起始时刻,使得滑动窗口基于各个已出现的事件的起始时刻进行滑动,避免了在复杂场景中滑动窗口在滑动的过程中遗漏事件的问题。从而在复杂场景中进行模式匹配时,CEP系统不必为每一个事件创建一个状态机实例,仅需要一个状态机实例就可以进行匹配,并且避免了复杂场景中的事件遗漏,减少了因创建多个状态机实例而占用的内存资源,从而减少了CEP系统在复杂场景中进行模式匹配时的内存开销。
本发明实施例中,所述未得到匹配成功的结果,包括:所述状态机实例在所述当前匹配周期中没有得到所述匹配结果。
例如:如图6所示,基于事件的匹配窗口滑动在状态机实例中的实现流程具体如下:
当事件发生之后,将初始化事件数量,即当前事件数量为1,判断匹配周期内的匹配窗口中的事件和预设的匹配规则进行匹配是否得到匹配成功的结果,若匹配成功,则删除当前已出现的事件并结束状态机实例,若匹配失败,则在重置状态机实例之后进入等待状态;当达到匹配周期,则状态机实例检测事件数量,若事件数量等于1,则删除事件并结束状态机实例,若事件数量大于1,则重置状态机实例并进入等待状态,同时将下一个发生的事件的起始时刻作为下一匹配周期的起始时刻,再进行事件迭代,即当前事件数量值增加1,之后再进行匹配。
需要说明的是,状态机实例重置是指将状态机中的状态性的参数进行重置,其中,状态性的参数可以是当匹配窗口中出现事件之后,状态机执行如图6所示流程这一过程中所产生的参数,状态机实例中存在的属性列表不需要进行重置。
例如:如图7所示,若窗口中的事件和预设的匹配规则进行匹配,得到匹配失败的结果,且达到匹配周期,删除窗口中出现的时刻最早的事件,即事件1,且窗口滑动到下一个事件,即事件2。
本发明实施例提供的一种处理事件的方法,当第X事件出现后,状态机实例在当前匹配周期中进行匹配,当状态机实例在当前匹配周期中没有得到匹配结果时,若状态机实例检测当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配。相比较于现有技术,本发明实施例在状态机实例进行匹配的过程中,能够以后一个事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配,通过重复执行匹配过程,实现了只通过一个状态机实例就能够对滑动窗口中所有的事件进行匹配。并且由于每一个匹配周期的起始时刻都是各个事件的起始时刻,使得滑动窗口基于各个已出现的事件的起始时刻进行滑动,避免了在复杂场景中滑动窗口在滑动的过程中遗漏事件的问题。从而在复杂场景中进行模式匹配时,CEP系统不必为每一个事件创建一个状态机实例,仅需要一个状态机实例就可以进行匹配,并且避免了复杂场景中的事件遗漏,减少了因创建多个状态机实例而占用的内存资源,从而减少了CEP系统在复杂场景中进行模式匹配时的内存开销。
本发明实施例中,所述未得到匹配成功的结果,包括:所述状态机实例在所述当前匹配周期中得到所述匹配失败的结果。
例如:如图8所示,基于时间的匹配窗口滑动在状态机实例中的实现流程具体如下:
当事件发生之后,将初始化事件数量,即当前事件数量为1,当达到匹配周期,判断匹配窗口中的事件和预设的匹配规则进行匹配是否得到匹配成功的结果,若匹配成功,则删除当前已出现的事件并结束状态机实例;若匹配失败,则状态机实例检测事件数量,若事件数量等于1,则删除事件并结束状态机实例,若事件数量大于1,则重置状态机实例并进入等待状态,同时将下一个发生的事件的起始时刻作为下一匹配周期的起始时刻,再进行事件迭代,即当前事件数量加1。
再例如:如图9所示,预设的匹配规则为出现3次或3次以上超时事件,在匹配周期内,窗口中出现2个事件,则窗口不满足匹配规则,匹配失败,将窗口滑动到第2个事件,即事件2,并以事件2出现的时刻作为匹配周期的起始时刻。
本发明实施例提供的一种处理事件的方法,当第X事件出现后,状态机实例在当前匹配周期中进行匹配,当状态机实例在当前匹配周期中得到匹配失败的结果时,若状态机实例检测当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配。相比较于现有技术,本发明实施例在状态机实例进行匹配的过程中,能够以后一个事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配,通过重复执行匹配过程,实现了只通过一个状态机实例就能够对滑动窗口中所有的事件进行匹配。并且由于每一个匹配周期的起始时刻都是各个事件的起始时刻,使得滑动窗口基于各个已出现的事件的起始时刻进行滑动,避免了在复杂场景中滑动窗口在滑动的过程中遗漏事件的问题。从而在复杂场景中进行模式匹配时,CEP系统不必为每一个事件创建一个状态机实例,仅需要一个状态机实例就可以进行匹配,并且避免了复杂场景中的事件遗漏,减少了因创建多个状态机实例而占用的内存资源,从而减少了CEP系统在复杂场景中进行模式匹配时的内存开销。
本发明实施例中,在如图2或图3所示的实现方式的基础上,还可以实现为如图10所示的实现方式:
106、当第1事件出现时建立所述状态机实例。
需要说明的是,当第X事件为第1事件时,先建立状态机实例,再通过建立的状态机在各个匹配周期中执行匹配过程。
本发明实施例提供的一种处理事件的方法,当第1事件出现时建立所述状态机实例,当第X事件出现后,状态机实例在当前匹配周期中进行匹配,当未得到匹配成功的结果时,若状态机实例检测当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配。相比较于现有技术,本发明实施例可以在第1事件出现时建立所述状态机实例,并在状态机实例进行匹配的过程中,能够以后一个事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配,通过重复执行匹配过程,实现了只通过一个状态机实例就能够对滑动窗口中所有的事件进行匹配。并且由于每一个匹配周期的起始时刻都是各个事件的起始时刻,使得滑动窗口基于各个已出现的事件的起始时刻进行滑动,避免了在复杂场景中滑动窗口在滑动的过程中遗漏事件的问题。从而在复杂场景中进行模式匹配时,CEP系统不必为每一个事件创建一个状态机实例,仅需要一个状态机实例就可以进行匹配,并且避免了复杂场景中的事件遗漏,减少了因创建多个状态机实例而占用的内存资源,从而减少了CEP系统在复杂场景中进行模式匹配时的内存开销。
在本发明实施例中,所述预设的匹配规则至少包括:在所述一个匹配周期中已出现的事件的数量达到阈值,和/或在所述一个匹配周期中已出现的事件的类型符合预设类型。
本发明实施例中,当预设的匹配规则不需要用到和事件数量相关的参数时,可以在当前已出现的事件数量超过预设值时,且保证状态机实例中存在至少一个事件的情况下,删除状态机实例中的事件,例如:所述预设的匹配规则为:在所述一个匹配周期中已出现的事件的类型符合预设类型;在如图10所示的实现方式的基础上,还包括如图11所示的实现方式:
107、所述状态机实例检测所述当前已出现的事件数量是否超过预设值。
108、若所述当前已出现的事件数量超过预设值,则删除所述状态机实例记录的事件中的至少一项。
若当前已出现的事件数量超过预设值,可以删除状态机实例记录的事件中最早的一个事件,即事件中第一个发生的事件,并将状态机实例的执行事件的数量减1,将匹配周期的起始时刻从第一个事件发生的起始时刻修改为第二个事件发生的起始时刻,并将匹配窗口中存在的事件数量值增加1;或者,删除状态机实例记录的事件中的任意一个或多个事件,且在删除任意一个或多个事件之后,状态机实例中至少还包括一个事件。需要说明的是,当预设的匹配规则为在一个匹配周期中已出现的事件的类型符合预设类型时,由于事件的数量不会影响判定事件的类型是否符合预设类型的匹配结果,因此可以删除状态机实例记录的至少一个事件。
109、若所述当前已出现的事件数量未超过预设值,则所述状态机实例不对记录的事件做删除处理。
需要说明的是,用户可以根据当前业务需求预先设定匹配周期内的匹配窗口中所能容纳的事件数量,即根据当前业务需求预先设定的当前已出现的事件数量的预设值,在匹配周期内的匹配窗口中的事件和预设的匹配规则进行匹配过程时,当前已出现的事件数量超过预设值,则删除状态机实例记录的事件,比如:事件数量的预设值为2,当前已出现的事件数量大于2,则可以删除状态机实例记录的事件中最早的事件,即第一个出现在状态机实例记录的事件。
本发明实施例提供的一种处理事件的方法,当第X事件出现后,状态机实例在当前匹配周期中进行匹配,当未得到匹配成功的结果时,若状态机实例检测当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配;当预设的匹配规则不需要用到和事件数量相关的参数时,可以在当前已出现的事件数量超过预设值时,且保证状态机实例中存在至少一个事件的情况下,删除状态机实例中的事件。相比较于现有技术,本发明实施例在状态机实例进行匹配的过程中,能够以后一个事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配,通过重复执行匹配过程,实现了只通过一个状态机实例就能够对滑动窗口中所有的事件进行匹配。并且由于每一个匹配周期的起始时刻都是各个事件的起始时刻,使得滑动窗口基于各个已出现的事件的起始时刻进行滑动,避免了在复杂场景中滑动窗口在滑动的过程中遗漏事件的问题。从而在复杂场景中进行模式匹配时,CEP系统不必为每一个事件创建一个状态机实例,仅需要一个状态机实例就可以进行匹配,并且避免了复杂场景中的事件遗漏,减少了因创建多个状态机实例而占用的内存资源;当预设的匹配规则不需要用到和事件数量相关的参数时,可以在当前已出现的事件数量超过预设值时,且保证状态机实例中存在至少一个事件的情况下,删除状态机实例中的事件,减少了事件占用的内存资源,从而减少了CEP系统在复杂场景中进行模式匹配时的内存开销。
本发明实施例中,所述状态机实例中存在属性列表,所述属性列表中存储用于进行匹配的信息,在删除已出现的事件时,所述方法还包括:移除所述属性列表中被删除的事件对应的用于进行匹配的信息。
需要说明的是,属性列表中最早的一个事件对应了属性列表中的最后一个属性,在删除了事件中最早的一个事件且对状态机实例的执行事件数量减1的操作的同时,移除属性列表中最后一个属性。
本发明实施例提供的一种处理事件的方法,当第X事件出现后,状态机实例在当前匹配周期中进行匹配,当未得到匹配成功的结果时,若状态机实例检测当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配,此外,在删除已出现的事件时,可以移除属性列表中被删除的事件对应的用于进行匹配的信息。相比较于现有技术,本发明实施例在状态机实例进行匹配的过程中,能够以后一个事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配,通过重复执行匹配过程,实现了只通过一个状态机实例就能够对滑动窗口中所有的事件进行匹配。并且由于每一个匹配周期的起始时刻都是各个事件的起始时刻,使得滑动窗口基于各个已出现的事件的起始时刻进行滑动,避免了在复杂场景中滑动窗口在滑动的过程中遗漏事件的问题。从而在复杂场景中进行模式匹配时,CEP系统不必为每一个事件创建一个状态机实例,仅需要一个状态机实例就可以进行匹配,并且避免了复杂场景中的事件遗漏,减少了因创建多个状态机实例而占用的内存资源;在删除已出现的事件时,可以移除属性列表中被删除的事件对应的用于进行匹配的信息,减少了属性列表所占用的内存资源,从而减少了CEP系统在复杂场景中进行模式匹配时的内存开销。
本发明实施例提供一种处理事件的装置20,如图12所示,所述装置20可以包括:
处理模块21,用于当第X事件出现后,在当前匹配周期中进行匹配,其中,所述处理模块21,还用于在一个匹配周期中将已出现的事件和预设的匹配规则进行匹配,并得到匹配结果,所述匹配结果为匹配成功的结果或者匹配失败的结果。
判断模块22,用于当未得到匹配成功的结果时,检测当前已出现的事件数量是否大于1。
所述处理模块21,还用于若所述当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在所述下一匹配周期中重新进行匹配,其中,已出现的事件按照出现的时间先后顺序依次排列为第1事件至所述第X+1事件。
在本发明实施例中,所述处理模块21,还用于若所述当前已出现的事件数量等于1,则删除当前已出现的这一个事件并结束状态机实例。
在本发明实施例中,所述处理模块21,还用于当得到匹配成功的结果时,删除所述当前已出现的事件并结束所述状态机实例。
在本发明实施例中,所述未得到匹配成功的结果,包括:所述状态机实例在所述当前匹配周期中没有得到所述匹配结果。
在本发明实施例中,所述未得到匹配成功的结果,包括:所述状态机实例在所述当前匹配周期中得到所述匹配失败的结果。
在本发明实施例中,所述装置20还包括:建立模块23,用于当第1事件出现时建立所述状态机实例。
在本发明实施例中,所述预设的匹配规则至少包括:在所述一个匹配周期中已出现的事件的数量达到阈值,和/或在所述一个匹配周期中已出现的事件的类型符合预设类型。
在本发明实施例中,所述预设的匹配规则为:在所述一个匹配周期中已出现的事件的类型符合预设类型;所述装置20还包括:
检测模块24,用于检测所述当前已出现的事件数量是否超过预设值。
所述处理模块21,还用于若所述当前已出现的事件数量超过预设值,则删除所述状态机实例记录的事件中的至少一项。
在本发明实施例中,所述状态机实例中存在属性列表,所述属性列表中存储用于进行匹配的信息,在删除已出现的事件时,所述处理模块21,还用于移除所述属性列表中被删除的事件对应的用于进行匹配的信息。
本发明实施例提供的一种处理事件的装置,当第X事件出现后,状态机实例在当前匹配周期中进行匹配,当未得到匹配成功的结果时,若状态机实例检测当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配。相比较于现有技术,本发明实施例在状态机实例进行匹配的过程中,能够以后一个事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配,通过重复执行匹配过程,实现了只通过一个状态机实例就能够对滑动窗口中所有的事件进行匹配。并且由于每一个匹配周期的起始时刻都是各个事件的起始时刻,使得滑动窗口基于各个已出现的事件的起始时刻进行滑动,避免了在复杂场景中滑动窗口在滑动的过程中遗漏事件的问题。从而在复杂场景中进行模式匹配时,CEP系统不必为每一个事件创建一个状态机实例,仅需要一个状态机实例就可以进行匹配,并且避免了复杂场景中的事件遗漏,减少了因创建多个状态机实例而占用的内存资源,从而减少了CEP系统在复杂场景中进行模式匹配时的内存开销。
本发明实施例提供一种处理事件的设备30,所述设备30可以用于运行了具有模式匹配功能的系统的设备;如图13所示,为所述设备30的一种可能的具体实施方式,包括输入单元31、处理器单元32、输出单元33、通信单元34、存储单元35等组件。这些组件通过一条或多条总线进行通信。本领域技术人员可以理解,图中示出的设备30的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施方式中,所述设备30可以是任何具备数据存储、处理、传输功能的设备,包括但不限于刀片式服务器、塔式服务器、机柜式服务器、移动工作站、个人电脑,以及上述两项或两项以上的组合等。
其中,输入单元31用于实现操作人员与设备30的交互和/或信息输入到设备30中。例如,输入单元31可以接收操作人员输入的数字或字符信息,以产生与操作人员或功能控制有关的信号输入。在本发明具体实施方式中,输入单元31可以是触控面板,也可以是其他人机交互界面,例如实体输入键。在本发明的其他实施方式中,输入单元31所采用的实体输入键可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
处理器单元32为设备30的控制中心,利用各种接口和线路连接整个设备30的各个部分,通过运行或执行存储在存储单元35内的软件程序和/或模块,以及调用存储在存储单元35内的数据,以执行设备30的各种功能和/或处理数据。所述处理器单元32可以由集成电路(Integrated Circuit,IC)组成,例如可以由单颗封装的IC所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器单元32可以仅包括中央处理器(Central Processing Unit,CPU),也可以是GPU、数字信号处理器(Digital SignalProcessor,DSP)、及通信单元中的控制芯片(例如基带芯片)的组合。在本发明实施方式中,CPU可以是单运算核心,也可以包括多运算核心。
通信单元34用于建立通信信道,使设备30通过所述通信信道以连接至其他设备。其中,设备30具体可以是远程服务器。所述通信单元34可以包括有线局域网模块、无线局域网(Wireless Local Area Network,wireless LAN)模块、蓝牙模块、基带(Base Band)模块等通信模块。所述通信模块用于控制设备30中的各组件的通信,并且可以支持直接内存存取(Direct Memory Access)。
在本发明的不同实施方式中,所述通信单元34中的各种通信模块一般以集成电路芯片(Integrated Circuit Chip)的形式出现,并可进行选择性组合,而不必包括所有通信模块及对应的物理线缆、天线组。在本发明的一些可选实施方式中,所述通信单元34中的通信模块,例如基带模块可以集成到处理器单元32中,典型的如高通(Qualcomm)公司提供的APQ+MDM系列平台。
输出单元33包括但不限于影像输出单元和声音输出单元。影像输出单元用于输出文字、图片和/或视频。所述影像输出单元可包括显示面板,例如采用LCD(Liquid CrystalDisplay,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)、场发射显示器(field emission display,FED)等形式来配置的显示面板。或者所述影像输出单元可以包括反射式显示器,例如电泳式(electrophoretic)显示器,或利用光干涉调变技术(Interferometric Modulation of Light)的显示器。所述影像输出单元可以包括单个显示器或不同尺寸的多个显示器。在本发明的具体实施方式中,上述输入单元31所采用的触控面板亦可同时作为输出单元33的显示面板。例如,当触控面板检测到在其上的触摸或接近的手势操作后,传送给处理器单元32以确定触摸事件的类型,随后处理器单元32根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图13中,输入单元31与输出单元33是作为两个独立的部件来实现设备30的输入和输出功能,但是在某些实施例中,可以将触控面板与显示面板集成一体而实现设备30的输入和输出功能。例如,所述影像输出单元可以显示各种图形化用户接口(Graphical User Interface,GUI)以作为虚拟控制组件,包括但不限于窗口、卷动轴、图标及剪贴簿,以供用户通过触控方式进行操作。在本发明具体实施方式中,影像输出单元包括滤波器及放大器,用来将处理器单元32所输出的视频滤波及放大。音频输出单元包括数字模拟转换器,用来将处理器单元32所输出的音频信号从数字格式转换为模拟格式。
存储单元35可用于存储软件程序以及模块,处理器单元32通过运行存储在存储单元35的软件程序以及模块,从而执行设备30的各种功能应用以及实现数据处理。存储单元55主要包括程序存储区和数据存储区,其中,程序存储区可存储操作系统、至少一个功能所需的应用程序,比如声音播放程序、图像播放程序等;数据存储区可存储根据设备30的使用所创建的数据(比如音频数据、电话本等)等。在本发明具体实施方式中,存储单元35可以包括易失性存储器,例如非挥发性动态随机存取内存(Nonvolatile Random Access Memory,NVRAM)、相变化随机存取内存(Phase Change RAM,PRAM)、磁阻式随机存取内存(Magetoresistive RAM,MRAM)等,还可以包括非易失性存储器,例如至少一个磁盘存储器件、电子可擦除可编程只读存储器(Electrically Erasable Programmable Read-OnlyMemory,EEPROM)、闪存器件,例如反或闪存(NOR flash memory)或是反及闪存(NAND flashmemory)。非易失存储器储存处理器单元32所执行的操作系统及应用程序。所述处理器单元32从所述非易失存储器加载运行程序与数据到内存并将数字内容储存于大量储存装置中。所述操作系统包括用于控制和管理常规系统任务,例如内存管理、存储设备控制、电源管理等,以及有助于各种软硬件之间通信的各种组件和/或驱动器。在本发明实施方式中,所述操作系统可以是Linux系统、Apple公司开发的iOS系统或Microsoft公司开发的Windows操作系统等,或者是Vxworks这类的嵌入式操作系统。所述应用程序包括安装在设备30上的任何应用,包括但不限于浏览器、电子邮件、即时消息服务、文字处理、键盘虚拟、窗口小部件(Widget)、加密、数字版权管理、语音识别、语音复制、定位(例如由全球定位系统提供的功能)、音乐播放等。
电源36用于给设备30的不同部件进行供电以维持其运行。作为一般性理解,所述电源36可以是直接向设备30供电的外接电源,例如AC适配器等,也包括内置的电池,例如常见的锂离子电池、镍氢电池等。在本发明的一些实施方式中,所述电源36还可以作更为广泛的定义,例如还可以包括电源管理系统、充电系统、电源故障检测电路、电源转换器或逆变器、电源状态指示器(如发光二极管),以及与设备30的电能生成、管理及分布相关联的其他任何组件。
在本发明实施例中,所述处理器单元32,用于当第X事件出现后,状态机实例在当前匹配周期中进行匹配,其中,所述状态机实例用于在一个匹配周期中将已出现的事件和预设的匹配规则进行匹配,并得到匹配结果,所述匹配结果为匹配成功的结果或者匹配失败的结果;
当未得到匹配成功的结果时,所述状态机实例检测当前已出现的事件数量是否大于1;
若所述当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在所述下一匹配周期中重新进行匹配,其中,已出现的事件按照出现的时间先后顺序依次排列为第1事件至所述第X+1事件。
在本发明实施例中,所述处理器单元32,还用于若所述当前已出现的事件数量等于1,则删除当前已出现的这一个事件并结束所述状态机实例。
在本发明实施例中,所述处理器单元32,还用于当得到匹配成功的结果时,删除所述当前已出现的事件并结束所述状态机实例。
在本发明实施例中,所述未得到匹配成功的结果,包括:所述状态机实例在所述当前匹配周期中没有得到所述匹配结果。
在本发明实施例中,所述未得到匹配成功的结果,包括:所述状态机实例在所述当前匹配周期中得到所述匹配失败的结果。
在本发明实施例中,所述处理器单元32,还用于当第1事件出现时建立所述状态机实例。
在本发明实施例中,所述预设的匹配规则至少包括:在所述一个匹配周期中已出现的事件的数量达到阈值,和/或在所述一个匹配周期中已出现的事件的类型符合预设类型。
在本发明实施例中,所述预设的匹配规则为:在所述一个匹配周期中已出现的事件的类型符合预设类型;所述处理器单元32,还用于所述状态机实例检测所述当前已出现的事件数量是否超过预设值;
若所述当前已出现的事件数量超过预设值,则删除所述状态机实例记录的事件中的至少一项。
在本发明实施例中,所述状态机实例中存在属性列表,所述属性列表中存储用于进行匹配的信息,在删除已出现的事件时,所述方法还包括:移除所述属性列表中被删除的事件对应的用于进行匹配的信息。
本发明实施例提供的一种处理事件的设备,当第X事件出现后,状态机实例在当前匹配周期中进行匹配,当未得到匹配成功的结果时,若状态机实例检测当前已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配。相比较于现有技术,本发明实施例在状态机实例进行匹配的过程中,能够以后一个事件出现的时刻作为下一匹配周期的起始时刻,并在下一匹配周期中重新进行匹配,通过重复执行匹配过程,实现了只通过一个状态机实例就能够对滑动窗口中所有的事件进行匹配。并且由于每一个匹配周期的起始时刻都是各个事件的起始时刻,使得滑动窗口基于各个已出现的事件的起始时刻进行滑动,避免了在复杂场景中滑动窗口在滑动的过程中遗漏事件的问题。从而在复杂场景中进行模式匹配时,CEP系统不必为每一个事件创建一个状态机实例,仅需要一个状态机实例就可以进行匹配,并且避免了复杂场景中的事件遗漏,减少了因创建多个状态机实例而占用的内存资源,从而减少了CEP系统在复杂场景中进行模式匹配时的内存开销。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (16)
1.一种处理事件的方法,其特征在于,所述方法包括:
当第X事件出现后,状态机实例在当前匹配周期中进行匹配,其中,所述状态机实例用于在一个匹配周期中将已出现的事件和预设的匹配规则进行匹配,并得到匹配结果,所述匹配结果为匹配成功的结果或者匹配失败的结果;
当未得到匹配成功的结果时,所述状态机实例检测所述当前匹配周期中已出现的事件数量是否大于1;
若所述当前匹配周期中已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在所述下一匹配周期中重新进行匹配,其中,已出现的事件按照出现的时间先后顺序依次排列为第1事件至所述第X+1事件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述当前匹配周期中已出现的事件数量等于1,则删除当前已出现的这一个事件并结束所述状态机实例。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当得到匹配成功的结果时,删除所述当前匹配周期中已出现的事件并结束所述状态机实例。
4.根据权利要求1或2所述的方法,其特征在于,所述未得到匹配成功的结果,包括:所述状态机实例在所述当前匹配周期中没有得到所述匹配结果或者所述状态机实例在所述当前匹配周期中得到所述匹配失败的结果。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:当第1事件出现时建立所述状态机实例。
6.根据权利要求1或2所述的方法,其特征在于,所述预设的匹配规则至少包括:在所述一个匹配周期中已出现的事件的数量达到阈值,和/或在所述一个匹配周期中已出现的事件的类型符合预设类型。
7.根据权利要求6所述的方法,其特征在于,所述预设的匹配规则为:在所述一个匹配周期中已出现的事件的类型符合预设类型;所述方法还包括:
所述状态机实例检测所述当前匹配周期中已出现的事件数量是否超过预设值;
若所述当前匹配周期中已出现的事件数量超过预设值,则删除所述状态机实例记录的事件中的至少一项。
8.根据权利要求1或2或7所述的方法,其特征在于,所述状态机实例中存在属性列表,所述属性列表中存储用于进行匹配的信息,在删除已出现的事件时,所述方法还包括:移除所述属性列表中被删除的事件对应的用于进行匹配的信息。
9.一种处理事件的装置,其特征在于,所述装置包括:
处理模块,用于当第X事件出现后,执行状态机实例在当前匹配周期中进行匹配,其中,所述处理模块,还用于在一个匹配周期中将已出现的事件和预设的匹配规则进行匹配,并得到匹配结果,所述匹配结果为匹配成功的结果或者匹配失败的结果;
判断模块,用于当未得到匹配成功的结果时,执行所述状态机实例检测所述当前匹配周期中已出现的事件数量是否大于1;
所述处理模块,还用于若所述当前匹配周期中已出现的事件数量大于1,则以第X+1事件出现的时刻作为下一匹配周期的起始时刻,并在所述下一匹配周期中重新进行匹配,其中,已出现的事件按照出现的时间先后顺序依次排列为第1事件至所述第X+1事件。
10.根据权利要求9所述的装置,其特征在于,所述处理模块,还用于若所述当前匹配周期中已出现的事件数量等于1,则删除当前已出现的这一个事件并结束所述状态机实例。
11.根据权利要求9或10所述的装置,其特征在于,所述处理模块,还用于当得到匹配成功的结果时,删除所述当前匹配周期中已出现的事件并结束所述状态机实例。
12.根据权利要求9或10所述的装置,其特征在于,所述未得到匹配成功的结果,包括:所述状态机实例在所述当前匹配周期中没有得到所述匹配结果或者所述状态机实例在所述当前匹配周期中得到所述匹配失败的结果。
13.根据权利要求9或10所述的装置,其特征在于,所述装置还包括:建立模块,用于当第1事件出现时建立所述状态机实例。
14.根据权利要求9或10所述的装置,其特征在于,所述预设的匹配规则至少包括:在所述一个匹配周期中已出现的事件的数量达到阈值,和/或在所述一个匹配周期中已出现的事件的类型符合预设类型。
15.根据权利要求14所述的装置,其特征在于,所述预设的匹配规则为:在所述一个匹配周期中已出现的事件的类型符合预设类型;所述装置还包括:
检测模块,用于执行所述状态机实例检测所述当前匹配周期中已出现的事件数量是否超过预设值;
所述处理模块,还用于若所述当前匹配周期中已出现的事件数量超过预设值,则删除所述状态机实例记录的事件中的至少一项。
16.根据权利要求9或10或15所述的装置,其特征在于,所述状态机实例中存在属性列表,所述属性列表中存储用于进行匹配的信息,在删除已出现的事件时,所述处理模块,还用于移除所述属性列表中被删除的事件对应的用于进行匹配的信息。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510073491.7A CN105988863B (zh) | 2015-02-11 | 2015-02-11 | 一种处理事件的方法及装置 |
EP15881737.9A EP3121715B1 (en) | 2015-02-11 | 2015-07-20 | Event processing method and apparatus |
PCT/CN2015/084477 WO2016127577A1 (zh) | 2015-02-11 | 2015-07-20 | 一种处理事件的方法及装置 |
US15/336,194 US9658903B2 (en) | 2015-02-11 | 2016-10-27 | Event processing method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510073491.7A CN105988863B (zh) | 2015-02-11 | 2015-02-11 | 一种处理事件的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105988863A CN105988863A (zh) | 2016-10-05 |
CN105988863B true CN105988863B (zh) | 2019-06-21 |
Family
ID=56614120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510073491.7A Active CN105988863B (zh) | 2015-02-11 | 2015-02-11 | 一种处理事件的方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9658903B2 (zh) |
EP (1) | EP3121715B1 (zh) |
CN (1) | CN105988863B (zh) |
WO (1) | WO2016127577A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628884B (zh) * | 2017-03-20 | 2022-03-25 | 华为技术有限公司 | 一种复杂事件处理方法、系统及其装置 |
US11693862B2 (en) | 2018-10-29 | 2023-07-04 | Technion Research & Development Foundation Limited | Efficient adaptive detection of complex event patterns |
US20210103577A1 (en) * | 2019-10-07 | 2021-04-08 | Microsoft Technology Licensing, Llc | Reliable detection of deleted assets in data stores |
CN113297888B (zh) * | 2020-09-18 | 2024-06-07 | 阿里巴巴集团控股有限公司 | 一种图像内容检测结果核查方法及装置 |
CN112650607A (zh) * | 2020-12-30 | 2021-04-13 | 中国农业银行股份有限公司 | 一种动态cep模式实现方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102214187A (zh) * | 2010-04-12 | 2011-10-12 | 阿里巴巴集团控股有限公司 | 复合事件处理方法及装置 |
CN102467414A (zh) * | 2010-11-19 | 2012-05-23 | 阿里巴巴集团控股有限公司 | 一种状态机控制方法、装置及状态机系统 |
CN104199889A (zh) * | 2014-08-25 | 2014-12-10 | 山东瀚天信息技术有限公司 | 基于CEP技术的RTLogic大数据处理系统及方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7403866B2 (en) * | 2004-10-06 | 2008-07-22 | Telefonaktiebolaget L M Ericsson (Publ) | High-resolution, timer-efficient sliding window |
US20060274703A1 (en) * | 2005-06-07 | 2006-12-07 | Connelly Stephen P | Method and apparatus of filtering and viewing real-time detail records based upon user specific criteria |
US7945540B2 (en) * | 2007-05-04 | 2011-05-17 | Oracle International Corporation | Method to create a partition-by time/tuple-based window in an event processing service |
US9307038B2 (en) * | 2009-12-29 | 2016-04-05 | Motorola Solutions, Inc. | Method for presence notification based on a sequence of events |
US20110202999A1 (en) * | 2010-02-12 | 2011-08-18 | Research In Motion Limited | System and method for controlling event entries |
US20120030194A1 (en) * | 2010-07-29 | 2012-02-02 | Research In Motion Limited | Identification and scheduling of events on a communication device |
US8832716B2 (en) * | 2012-08-10 | 2014-09-09 | Honeywell International Inc. | Systems and methods for limiting user customization of task workflow in a condition based health maintenance system |
US9864837B2 (en) * | 2013-02-28 | 2018-01-09 | Accenture Global Services Limited | Clinical quality analytics system with recursive, time sensitive event-based protocol matching |
CN103455611A (zh) * | 2013-09-06 | 2013-12-18 | 北京邮电大学 | Rfid中间件的数据处理方法 |
-
2015
- 2015-02-11 CN CN201510073491.7A patent/CN105988863B/zh active Active
- 2015-07-20 EP EP15881737.9A patent/EP3121715B1/en active Active
- 2015-07-20 WO PCT/CN2015/084477 patent/WO2016127577A1/zh active Application Filing
-
2016
- 2016-10-27 US US15/336,194 patent/US9658903B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102214187A (zh) * | 2010-04-12 | 2011-10-12 | 阿里巴巴集团控股有限公司 | 复合事件处理方法及装置 |
CN102467414A (zh) * | 2010-11-19 | 2012-05-23 | 阿里巴巴集团控股有限公司 | 一种状态机控制方法、装置及状态机系统 |
CN104199889A (zh) * | 2014-08-25 | 2014-12-10 | 山东瀚天信息技术有限公司 | 基于CEP技术的RTLogic大数据处理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105988863A (zh) | 2016-10-05 |
EP3121715A4 (en) | 2017-05-17 |
US20170046209A1 (en) | 2017-02-16 |
WO2016127577A1 (zh) | 2016-08-18 |
EP3121715A1 (en) | 2017-01-25 |
EP3121715B1 (en) | 2019-01-30 |
US9658903B2 (en) | 2017-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105988863B (zh) | 一种处理事件的方法及装置 | |
CN108196759B (zh) | 控制图标的方法和终端 | |
CN105580024B (zh) | 一种截屏方法及装置 | |
JP2011070669A5 (zh) | ||
CN110187875A (zh) | 一种组件可视化开发方法 | |
KR20130092847A (ko) | 애플리케이션의 정보 제공 방법과 이를 수행하는 기기 및 기록 매체 | |
CN107515702A (zh) | 一种页面交互方法及装置 | |
CN103218706A (zh) | 工作流文件生成方法及设备、生成执行方法及系统 | |
CN111736818A (zh) | 基于容器云的应用创建方法、装置及电子设备和存储介质 | |
CN106528156B (zh) | 一种页面数据处理方法和装置 | |
CN108733459A (zh) | 一种分布式定时的方法、服务器以及系统 | |
FR2959090B1 (fr) | Outil de gestion de ressources et d'infrastructures informatiques et reseaux | |
CN102930082B (zh) | 一种基于分布资源的产品设计系统 | |
CN103414750A (zh) | Web可视化编辑ANDROID的客户端应用的系统及方法 | |
CN104239178A (zh) | 监控系统及其方法 | |
CN105260085A (zh) | 一种应用设置方法及应用该方法的终端 | |
CN102999371B (zh) | 基于Lua脚本的人机界面开发方法及系统 | |
CN105138107B (zh) | 移动终端下载方法、装置及移动终端 | |
CN106462352B (zh) | 一种指纹事件的处理方法、装置及终端 | |
US9547423B1 (en) | Systems and methods for generating message sequence diagrams from graphical programs | |
CN106066874B (zh) | 对象处理方法及终端 | |
CN104427131A (zh) | 充电屏保信息显示方法、装置、终端及存储介质 | |
CN106201464A (zh) | 一种冻结应用的应用图标处理方法及移动终端 | |
CN106648304A (zh) | 智能设备桌面的归类方法及装置 | |
CN103414749A (zh) | Web可视化编辑iOS的客户端应用的系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |