想要利用CEP技术解决遇到的问题,首先需要知道什么是事件,什么是复杂事件,如何构建复杂事件,事件之间的关系是什么,下面将对什么是事件,以及事件之间的时间与因果关系进行介绍。
1.什么是事件
在日常生活中,一个“事件”表示事情的发生,在CEP中,“事件”是一个指向计算机处理的对象,它标志或者记录某个发生的活动。简言之,事件是系统中某一活动记录 的对象。事件标志着活动,一个事件可能和其他事件间存在关联。
一个事件包含了三个方面。
形式:事件的形式是一个对象,它由特定属性和数据组成。一个形式可以是简单的一个字符串或者更经常是一个多种数据组成的逻辑元组。一个事件的数据组成可以包含对该事件意义和关系的描述,比如活动的时间、地点、执行人员等。
意义:一个事件标志着一项活动,把这个活动称之为事件的意义。一个事件的形式中,经常包含描述该事件所标志的活动的数据。
相对性:一个活动可以通过时间、因果关系和集合与其他事件关联。事件和其他事件之间和他们所指的活动一样,也存在着联系,一个事件和其他事件之间的关系合起来称为事件的相对性。一个事件的形式中经常包含事件关系的编码,也就是包含了可以被调用的函数,用以重构该事件与其他事件的关系集合。
如以下事件:
Class InputEvent{
Name NewOrder;
Event_Id E_Id;
Customer Id;
OrderNo O_Id;
Order (CD x,Book.....);
Timer T;
Causality (Id1,Id2,...);
}
每一个事件都有一个唯一的标示域,即Event_Id。时间域是时间戳或者大多数情况下是时间间隔,当活动发生时通过读取系统时钟获取。因果关系属性提供了跟踪事件因果历史的方法。这个例子中,我们认为是直接导致本事件发生的其他事件Id的链表。当引起本事件的其他事件不知道的时候,这个链表可以为空。在本例中,Name域描述了本事件指向的活动。结合其他的数据域,如时间域可以确定实际的活动。其他的数据元素是消息中的数据。
2.时序、因果和聚合
事件之间有事件、因果和聚合三个最普遍最基础最重要的关系。
1)时间:时间是事件之间的顺序关系。例如事件A发生在事件B之前。事件之间的关系依赖于时钟。一般来说,当一个事件的活动发生时,这个事件就会产生并且从时钟读取信息作为该事件的时间戳。
2)因果:如果A事件所指向的活动发生之后B事件发生,那么A导致了B。这里定义的因果关系是系统中活动的依赖关系。如果一个活动发生仅以别的其它活动发生为条件,该活动便依赖于这些活动。在这个意义上,我们说如果活动B依赖活动A,那么A导致了B,相反,如果A和B互不影响,那么A和B是独立的。
3)聚合:如果事件A指向的活动包含了一系列事件B1,B2,B3,...的活动,那么A就是所有事件Bi的一个聚合,相反地,事件Bi是事件A的成员。聚合是一种抽象的关系。一般来说,当事件集合{Bi}发生的时候,事件A产生。事件A是一个高级别的事件,它对应着一个复杂的活动,这个活动包含了系统中聚合事件所指向的所有活动,称A为复杂事件,它的成员{Bi}导致了事件 A的发生,A事件是一个和Bi事件都不相同的事件。
3.事件中最基础的参数
子CEP中,一个事件和其他事件的关系被编码成事件中的数据。特殊的数据参数被添加到事件中用于编码事件的时间和与其他事件的关系。这些参数称为遗传参数,因为它们包含了事件的时间信息和因果历史,也就是事件是什么时间产生的,是由哪些事件导致的。
遗传参数:
1)时间戳:给出了事件的开始和结束的时间间隔。一般的,只有一个时间戳给出了活动发生的时候,时间上的一个单一的点。
2)因果向量:它是一个事件的集合,包含了导致本事件的所有事件。