2.2 空间复合事件检测算法
构造完成CCPN模型后,本节给出全局模式下复合事件的检测算法和CCPN中标记触发并递归寻找授权变迁的算法。
算法(1)——设原子事件由数据库内核检测,则全局模式下的复合事件检测算法描述如下:
输入:原子事件
输出:检测结果链表
for all CPU whICh contains primitive event PEas input place insert PE to detected list;
PE.i:=input place of PE in CPN;
for every broadcast in FindAndFire(PE.i);
for all output place of CPN
insert CE to detected list
detected list中维护当前检测到的事件链表。
算法终止性分析:首先复合事件集是有限的,并且复合事件的组件事件也是有限的,那么
(1)如果没有任何变迁触发,FindAndFire过程将终止,具体见算法(2);
(2)FindAndFire算法递归次数有限,那么广播事件次数有限;
(3)整个算法当FindAndFire算法终止后终止。
算法(2)——CCPN事件检测算法
findAndFire(mplace)
For each transition k
For input places of transitions k
i:1;
Find first input place;
IF (m.t≠0){
Hold the latest information or compute cumulative operator due to N[i,k]}
WHILE firing AND i i:=i+1; Search other input place and t:m; IF t.t=0{{firing:=FALSE;}ELSE {IF t.t>m[1].t{1:i;}}}} IF firing{ t:=m{1}; Fire the transition; For each output places j of transitions k{ Broadcast for global detection or computer spatial operator due to N[i,k]; FindAndFire(j);}} 其中SpatialOperate(mplace)为空间算子计算算法,输入为变迁位置,输出布尔型。对于二元SO,输入库所只保留最近的参考事件,如果变迁所有输入库所中的事件满足空间算子,则返回TRUE,否则返回FLASE。本文不详细列出。 2.3 应用实例 本实验过程包括:用户使用事件规范语言定义复合事件,经过复事事件编程器编译成功后存入数据库,并由CCPN构造器构造检测复事事件的组合着色Petri网存入数据库。当数据库内核中的原子事件检测器检测到原子事件发生后,通知CCPN检测器进行复合事件检测,检测结果通知应用程序,应用程序根据复合事件的发生调用ECA规则执行器执行下一步操作,用户也可以在应用程序中对数据库中的复合事件进行查询、更新等维护操作。图2为复合事件E4=OR(E,NE(E2,E3))的全局模式检测实例。首先将该复合事件编译,然后构成CCPN,如图2(a)所示。最后进行复合事件检测。使用原子事件生成器按时间顺序产生事件类型为0~10的随机事件,事件的位置信息也是随机的,为了演示方便,将位置范围控制在地图可见区域。原子事件中构成复合事件的组合事件插入到组件事件列表中,每次插入则调用基于CCPN的复合事件检测器检测。由于采用Recent事件消耗策略,对于检测到的组件事件E2,如果多次出现,则只保留最后的,用于复合事件E4的检测。检测到NE(E2,E3)后,也消耗掉E2,E3,为了更清楚地演示,只在删除E2时置Eid为“D”标识。对于检测到的组件事件和复合事件的空间位置信息,在地图上进行了显示,图2(b)是针对实验数据的运行界面。 需要指出的是,实验假定时间轴等距离。实现情况中事件的发生并非按照等距离时间间隔,因此可以设定一个时间间隔阈值,根据事件发生的最小间隔来调整该阀值,这样就可以转换成等距离时间间隔的情况。另外实验中也没有考虑事件检测本身所要消耗的计算时间延迟。同时联接变迁和联接弧也可能在事件检测时间中造成一定的延迟。 针对现有的主动数据库事件检测机制难以满足空间事件检测的需求,本文建立了空间事件模型,顺该模型基础上定义了基于空间关系的事件复合算子及其语义,并证明该定义对于复合运行是封闭的;为了简化构造复合事件检测Petri网,本文采用组合着色Petri网构造了复合事件检测模型,充分利用复合事件公共表达式,简化Petri网的构造;提出基于CCPN的检测算法;通过应用实例验证该检测模型是一个简洁、有效的复合事件检测机制。 本文没有考虑分布式环境下的空间事件检测机制,分布式环境下要考虑原子事件的并发性。全局模式下的事件采用链表简单结构管理,下一步将引入更好的数据结构以提高检测效率。同时空间算子的描述能力还不够强,不能满足更多用户的需求。将CCPN检测系统与空间数据库相结合,充分利用空间数据库的查询处理机制还需要做大量的工作。