主权项 |
1.一种基于优先级的模式匹配中间结果管理方法,其特征在于包括下述步骤:1)初始化模式匹配每个事件类型对应的实例堆栈空间,给中间结果缓冲MaxBuffer分配内存空间,并将实例堆栈和缓冲区设置为空;给优先级树T分配空间,并置为空;2)从滑动窗口W内按时间顺序读取一个事件e<sub>i</sub>,并进行如下条件的判断:(1)如在缓冲区MaxBuffer中不存在与e<sub>i</sub>标识相同的中间结果,则用e<sub>i</sub>建立一个中间结果PM<sub>Ei</sub>并存储于MaxBuffer中;(2)如在缓冲区MaxBuffer中存在与e<sub>i</sub>标识相同的中间匹配结果PM<sub>Ei</sub>,则将e<sub>i</sub>的状态信息添加到中间结果PM<sub>Ei</sub>的状态列表中,如果状态列表的状态数目达到模式E中定义的事件类型个数n,则输出事件,删除对应的中间结果,如果状态列表的状态数目未达到n,计算e<sub>i</sub>的优先级W(e<sub>i</sub>)=t.e<sub>i</sub>+(t.E<sub>i+1</sub>-t.E<sub>i</sub>)*P(E<sub>i</sub>,E<sub>i+1</sub>),其中P(E<sub>i</sub>,E<sub>i+1</sub>)是一个随机变量,表示事件发生在E<sub>i</sub>和E<sub>i+1</sub>两个地方的概率,将W(e<sub>i</sub>)插入到优先级树T上;E<sub>i</sub>为复杂事件E的第i个类型的子事件,1≤i≤n,<img file="FDA0000422625860000011.GIF" wi="585" he="73" />其中<img file="FDA0000422625860000012.GIF" wi="57" he="58" />为事件算子,1≤i≤j,叫做E的中间匹配结果;t.e<sub>i</sub>为事件e<sub>i</sub>的发生的时间,t.E<sub>i+1</sub>-t.E<sub>i</sub>为两个相邻的事件类型的简单事件间的时间差;3)如果在缓冲区MaxBuffer中不存在与e<sub>i</sub>标识相同的中间结果PM<sub>Ei</sub>,但外存中存在ei对应的中间结果PM<sub>Ei</sub>:如果MaxBuffer中的中间结果需要进行归档操作,则先将用户定义的归档区间长为R的MaxBuffer中的中间结果进行归档,归档方式为将优先级树上长度为R的优先级最低的中间结果归档到外部空间,其中R为中间结果归档区间,在MaxBuffer中预留出从数据库需要加载的中间结果的空间;将e<sub>i</sub>对应的中间结果PM<sub>Ei</sub>从数据库或文件系统中加载到MaxBuffer,并与e<sub>i</sub>进行模式匹配,将e<sub>i</sub>的状态信息更新到中间结果PM<sub>Ei</sub>,判断是否达到输出状态,如达到输出状态,则输出事件,否则计算ei的优先级W(e<sub>i</sub>)=t.e<sub>i</sub>+(t.E<sub>i+1</sub>-t.E<sub>i</sub>)*P(E<sub>i</sub>,E<sub>i+1</sub>)并将W(e<sub>i</sub>)插入到优先级树T上;4)如果在缓冲区MaxBuffer与外存中都不存在e<sub>i</sub>对应的中间结果PM<sub>Ei</sub>:(1)如果e<sub>i</sub>是待检测复杂事件的第一个类型的事件,则在中间结果集中新建一个PM<sub>Ei</sub>,将e<sub>i</sub>的信息记录到PM<sub>Ei</sub>中,计算e<sub>i</sub>的优先级,并将W(e<sub>i</sub>)插入到优先级树T上;(2)否则,可判断不存在与e<sub>i</sub>匹配的复杂事件,删除e<sub>i</sub>;5)进行下一个原始事件的中间结果的处理,直到当前滑动窗口内的原始事件都被处理完毕。 |