面向 RFID 的复杂事件描述语言研究及应用
作者:RFID世界网 收编
来源:维库电子市场网
日期:2009-10-28 09:47:26
摘要:复杂事件描述语言是复杂事件处理研究中的重要组成部分,目前面向无线射频识别(Radio Frequency Identification, RFID)的复杂事件处理技术得到了广泛的关注和研究,但是复杂事件描述语言并没有得到人们的深刻认识,相关的研究和应用也较少。本文在分析已有相关研究的基础上,提出一种复杂事件描述语言CDL(Complex-Event Description Language),并给出其形式化定义。同时,结合供应链RFID系统,详细描述了CDL的具体应用。
1 简介
随着电子商务和信息技术的发展以及无线射频识别技术(Radio Frequency Identification,RFID)[1]应用的普及,越来越多的应用系统以事件流处理为核心,如企业资源计划系统(EnterpriseResource Planning,ERP)供应链管理系统(Supply Chain Management,SCM)等。RFID 应用系统中,标签卡通过特定的读卡器,发生数据库操作或其它如温度,湿度状态的改变等称为事件。在应用过程中会产生原始事件流,特定的原始事件可以触发更高一级的复杂事件。为了准确描述事件间的关系,充分挖掘事件流背后蕴含着真正的商业逻辑,需要一种规范的,专门的描述语言。复杂事件描述语言是对原始事件流中事件间逻辑关系的一种表达方式,对挖掘事件流背后的商业逻辑有重要的意义。
目前国内外学者对复杂事件处理机制的研究有很多[3][4],但对复杂事件描述语言的研究很少,而且成果并不多,目前复杂事件描述语言没有统一的标准,文献[5]提出的SASE 事件描述语言(SASE Event Language)是一个相对成熟的复杂事件描述语言,本文在其基础上进行了优化,提出一种复杂事件描述语言CDL,并给出其形式化定义。同时结合供应链RFID 系统,详细描述了CDL 的具体应用。
2 CDL 描述语言定义
2.1 CDL 描述语言句型定义
现有成熟的复杂事件描述语言并不多,SASE 事件描述语言(SASE Event Language)是一个相对成熟,开放的基于事件流的复杂事件描述语言,本文在其基础上提出了CDL 描述语言(Complex-Event Description Language),它更接于近数学表达式,并且可以对事件流进行准确的描述,匹配,过滤与转换,可以匹配原始事件流中基于时间和条件因素形成的各种复杂事件,并且定义匹配成功后将触发的动作和事件,其语法结构如下所示:
其语义为:当事件表达式exp 在时间表达式t 规定的时间范围里,满足条件表达式q 描述的条件约束时,触发动作表达式a 描述的内容。
2.2 事件表达式定义
事件表达式是复杂事件描述语言的重要组成部分,体现了业务逻辑的匹配,文献[5]中定义了事件类型和事件实例的概念,在这个基础上我们提出了一些相关的补充:
事件类型是一类事件的统称,用大写字母表示,如A;事件实例是一个具体的事件,用小写字母表示,如a。一个事件实例属于并且只属于一个事件类型。
定义 1 事件表达式:利用事件类型,事件实例和各种连接符表达业务系统中发生的事件的表达式称为事件表达式,形如(A a)的是最简单的事件表达式。
定义 2 连接符&&(逻辑与):当&& 连接的两个事件都发生时,表达式值为真。形式化定义如下所示:Exp1&& Exp2 ≡ Exp1 ∧ Exp2。例如(A a)&&(B b)表示事件类型为A 和B 的两个事件实例a, b 均发生。
定义 3 连接符||(逻辑或):当|| 连接的两个事件之一发生时,表达式值即为真。形式化定义如下所示:Exp1|| Exp2 ≡ Exp1 ∨ Exp2。例如(A a) || (B b)表示事件类型为A 和B 的两个事件实例a, b 至少一个发生。
定义4 连接符!(否定):起到否定的作用,加在事件类型前表示该事件类型不发生。带有!
连接符的事件称为否定事件。形式化定义如下所示:!( Exp1) ≡ ? Exp1,例如!(A a) 表示事件类型为A 的事件实例a 不发生。
定义 5 运算符优先级:按从大到小依次为!,&&,||。
性质 1 如果Exp1 是事件表达式,则!( Exp1)也是事件表达式。
性质 2 如果Exp1, Exp2 都是事件表达式,则(Exp1&& Exp2)也是事件表达式。
性质 3 如果Exp1, Exp2 都是事件表达式,则(Exp1|| Exp2)也是事件表达式。
根据以上的定义和性质,存在逻辑关系的事件均可用事件表达式描述,而事件间除了逻辑关系,还有发生时间的先后次序,所以定义次序表达式。
定义 6 肯定ORDER 表达式,表示多个事件按顺序发生,如:
有了事件表达式的形式化定义,我们来对条件表达式进行定义。
2.3 条件表达式定义
事件表达式中出现的每一个事件实例都是有属性的,条件表达式对事件实例的属性间关系加以测试,对事件表达式中的事件实例加以逻辑限制。
条件表达式可以用事件实例的属性和常量进行比较,这种测试称为常量测试;也可以用事件表达式中的事件实例的属性作为变量互相比较,这种测试称为变量参数测试;当两种测试都出现时,称为混合测试。下面三个条件表达式分别是常量测试,变量参数测试和混合测试的例子。
(1)WHERE a.id=”021903” ∨ a.type_id=”039”
(2)WHERE a.id=b.id ∧ c.weight < d.weight
(3)WHERE a.vendor=”021903” ∧ a.id=b.id
在WHERE 表达式中( ∧ )符号表示并且关系,( ∨ )符号表示或者关系。
2.4 时间表达式定义
时间表达式用于限定事件发生的时间范围。
当表示一个时间点发生的事件,用关键字AT,后接一个参数表示某一时刻。当表示在一个时间段内发生的事件,用关键字WITHIN,后接一个表示时间段大小的参数。当表示一个时间段内发生的事件,用关键字BETWEEN,后面接开始时间和结束时间两个参数。下面三个时间表达式分别是三种关键字的例子:
(1)AT 7:30am 表示事件在上午7:30 分发生。
(2)WITHIN 10hours 表示事件在连续的10 个小时内发生。
(3)BETWEEN (10:00am,8:00pm)表示事件在上午10:00 和下午8:00 之间发生。
2.5 动作表达式
当在原始事件流上,事件表达式,条件表达式,时间表达式的限定全部满足时,触发动作表达式规定的内容。动作表达式由业务系统定义,如例1 中的alert 表示报警,业务系统中的其它动作也可以定义相应的表达式。
3 CDL 描述语言举例
CDL 描述语言可以应用在ERP 和SCM 的RFID 系统中,下面以供应链RFID 系统为例,介绍CDL 语言的具体应用。在供应链RFID 系统中,厂房和仓库的入口门禁读写器,出口门禁读写器,货架上安装的读写器,以及一定数量的手持读写器构成了一个RFID 读写器网络。RFID 标签粘贴在托盘、包装箱或元器件上,可以将信息传递给一定范围内的读卡器,使得配送,质检,入库,盘点,出库实现了自动化管理。在供应链日常业务过程中,各个读写器产生的RFID 数据,系统状态改变或者是用户产生的输入与输出形成了原始事件。
下面举例用CDL 描述语言来描述供应链RFID 系统的日常业务。
例 1:EVENT (SHELF-READING x) && (OVER-TEMPERATURE y)
WHERE x.id =’070301’ ∧ x.shelf_id=y.shelf_id
WITHIN 1 minute
TODO alert
SHELF-READING 表示货架读写器读取到的事件,OVER-TEMPERATURE 表示温度传感器发生的事件。例1 表示了在短时间内如果编号为070301 的产品所在货架的温度过高,则触发报警事件。
例 2:EVENT ORDER (ENTRANCE-READING x, !(CHECK-READING y), EXIT-READING z)
WHERE x.id =y.id ∧ x.id = z.id
WITHIN 12hours
TODO report_to_manager
例2 中的ENTRANCE-READING 表示仓库入口处的读卡器产生的入库事件,CHECK-READING 表示质检事件, EXIT-READING 表示出库事件,x,y,z 分别是三个事件实例。描述的意义是监测符合以下条件的产品:在12 个小时内完成入库操作,但没有经过质检,就通过了仓库出口。如检测到结果说明有产品发生了漏检,向管理员发送报告。
通过以上举例说明CDL 语言可以准确的描述供应链RFID 系统的日常业务,以及在规定的时间内满足条件时触发的动作。CDL 也可以较好的描述其它RFID 系统的日常业务,在此不做举例说明。
4 结论
本文改进并提出了一套基于RFID 的复杂事件描述语言CDL,它比其它描述语言更接近数学表达式,并且可以更准确的描述事件间的逻辑关系与时间关系。目前在国内,复杂事件描述语言没有得到人们的深刻认识,也没有得到广泛应用,但随着大规模通讯系统的发展,复杂事件描述语言很快会得到应用,并且会有更广阔的应用空间。
随着电子商务和信息技术的发展以及无线射频识别技术(Radio Frequency Identification,RFID)[1]应用的普及,越来越多的应用系统以事件流处理为核心,如企业资源计划系统(EnterpriseResource Planning,ERP)供应链管理系统(Supply Chain Management,SCM)等。RFID 应用系统中,标签卡通过特定的读卡器,发生数据库操作或其它如温度,湿度状态的改变等称为事件。在应用过程中会产生原始事件流,特定的原始事件可以触发更高一级的复杂事件。为了准确描述事件间的关系,充分挖掘事件流背后蕴含着真正的商业逻辑,需要一种规范的,专门的描述语言。复杂事件描述语言是对原始事件流中事件间逻辑关系的一种表达方式,对挖掘事件流背后的商业逻辑有重要的意义。
图1:RFID 的信息系统体系结构
目前国内外学者对复杂事件处理机制的研究有很多[3][4],但对复杂事件描述语言的研究很少,而且成果并不多,目前复杂事件描述语言没有统一的标准,文献[5]提出的SASE 事件描述语言(SASE Event Language)是一个相对成熟的复杂事件描述语言,本文在其基础上进行了优化,提出一种复杂事件描述语言CDL,并给出其形式化定义。同时结合供应链RFID 系统,详细描述了CDL 的具体应用。
2 CDL 描述语言定义
2.1 CDL 描述语言句型定义
现有成熟的复杂事件描述语言并不多,SASE 事件描述语言(SASE Event Language)是一个相对成熟,开放的基于事件流的复杂事件描述语言,本文在其基础上提出了CDL 描述语言(Complex-Event Description Language),它更接于近数学表达式,并且可以对事件流进行准确的描述,匹配,过滤与转换,可以匹配原始事件流中基于时间和条件因素形成的各种复杂事件,并且定义匹配成功后将触发的动作和事件,其语法结构如下所示:
其语义为:当事件表达式exp 在时间表达式t 规定的时间范围里,满足条件表达式q 描述的条件约束时,触发动作表达式a 描述的内容。
2.2 事件表达式定义
事件表达式是复杂事件描述语言的重要组成部分,体现了业务逻辑的匹配,文献[5]中定义了事件类型和事件实例的概念,在这个基础上我们提出了一些相关的补充:
事件类型是一类事件的统称,用大写字母表示,如A;事件实例是一个具体的事件,用小写字母表示,如a。一个事件实例属于并且只属于一个事件类型。
定义 1 事件表达式:利用事件类型,事件实例和各种连接符表达业务系统中发生的事件的表达式称为事件表达式,形如(A a)的是最简单的事件表达式。
定义 2 连接符&&(逻辑与):当&& 连接的两个事件都发生时,表达式值为真。形式化定义如下所示:Exp1&& Exp2 ≡ Exp1 ∧ Exp2。例如(A a)&&(B b)表示事件类型为A 和B 的两个事件实例a, b 均发生。
定义 3 连接符||(逻辑或):当|| 连接的两个事件之一发生时,表达式值即为真。形式化定义如下所示:Exp1|| Exp2 ≡ Exp1 ∨ Exp2。例如(A a) || (B b)表示事件类型为A 和B 的两个事件实例a, b 至少一个发生。
定义4 连接符!(否定):起到否定的作用,加在事件类型前表示该事件类型不发生。带有!
连接符的事件称为否定事件。形式化定义如下所示:!( Exp1) ≡ ? Exp1,例如!(A a) 表示事件类型为A 的事件实例a 不发生。
定义 5 运算符优先级:按从大到小依次为!,&&,||。
性质 1 如果Exp1 是事件表达式,则!( Exp1)也是事件表达式。
性质 2 如果Exp1, Exp2 都是事件表达式,则(Exp1&& Exp2)也是事件表达式。
性质 3 如果Exp1, Exp2 都是事件表达式,则(Exp1|| Exp2)也是事件表达式。
根据以上的定义和性质,存在逻辑关系的事件均可用事件表达式描述,而事件间除了逻辑关系,还有发生时间的先后次序,所以定义次序表达式。
定义 6 肯定ORDER 表达式,表示多个事件按顺序发生,如:
有了事件表达式的形式化定义,我们来对条件表达式进行定义。
2.3 条件表达式定义
事件表达式中出现的每一个事件实例都是有属性的,条件表达式对事件实例的属性间关系加以测试,对事件表达式中的事件实例加以逻辑限制。
条件表达式可以用事件实例的属性和常量进行比较,这种测试称为常量测试;也可以用事件表达式中的事件实例的属性作为变量互相比较,这种测试称为变量参数测试;当两种测试都出现时,称为混合测试。下面三个条件表达式分别是常量测试,变量参数测试和混合测试的例子。
(1)WHERE a.id=”021903” ∨ a.type_id=”039”
(2)WHERE a.id=b.id ∧ c.weight < d.weight
(3)WHERE a.vendor=”021903” ∧ a.id=b.id
在WHERE 表达式中( ∧ )符号表示并且关系,( ∨ )符号表示或者关系。
2.4 时间表达式定义
时间表达式用于限定事件发生的时间范围。
当表示一个时间点发生的事件,用关键字AT,后接一个参数表示某一时刻。当表示在一个时间段内发生的事件,用关键字WITHIN,后接一个表示时间段大小的参数。当表示一个时间段内发生的事件,用关键字BETWEEN,后面接开始时间和结束时间两个参数。下面三个时间表达式分别是三种关键字的例子:
(1)AT 7:30am 表示事件在上午7:30 分发生。
(2)WITHIN 10hours 表示事件在连续的10 个小时内发生。
(3)BETWEEN (10:00am,8:00pm)表示事件在上午10:00 和下午8:00 之间发生。
2.5 动作表达式
当在原始事件流上,事件表达式,条件表达式,时间表达式的限定全部满足时,触发动作表达式规定的内容。动作表达式由业务系统定义,如例1 中的alert 表示报警,业务系统中的其它动作也可以定义相应的表达式。
3 CDL 描述语言举例
CDL 描述语言可以应用在ERP 和SCM 的RFID 系统中,下面以供应链RFID 系统为例,介绍CDL 语言的具体应用。在供应链RFID 系统中,厂房和仓库的入口门禁读写器,出口门禁读写器,货架上安装的读写器,以及一定数量的手持读写器构成了一个RFID 读写器网络。RFID 标签粘贴在托盘、包装箱或元器件上,可以将信息传递给一定范围内的读卡器,使得配送,质检,入库,盘点,出库实现了自动化管理。在供应链日常业务过程中,各个读写器产生的RFID 数据,系统状态改变或者是用户产生的输入与输出形成了原始事件。
下面举例用CDL 描述语言来描述供应链RFID 系统的日常业务。
例 1:EVENT (SHELF-READING x) && (OVER-TEMPERATURE y)
WHERE x.id =’070301’ ∧ x.shelf_id=y.shelf_id
WITHIN 1 minute
TODO alert
SHELF-READING 表示货架读写器读取到的事件,OVER-TEMPERATURE 表示温度传感器发生的事件。例1 表示了在短时间内如果编号为070301 的产品所在货架的温度过高,则触发报警事件。
例 2:EVENT ORDER (ENTRANCE-READING x, !(CHECK-READING y), EXIT-READING z)
WHERE x.id =y.id ∧ x.id = z.id
WITHIN 12hours
TODO report_to_manager
例2 中的ENTRANCE-READING 表示仓库入口处的读卡器产生的入库事件,CHECK-READING 表示质检事件, EXIT-READING 表示出库事件,x,y,z 分别是三个事件实例。描述的意义是监测符合以下条件的产品:在12 个小时内完成入库操作,但没有经过质检,就通过了仓库出口。如检测到结果说明有产品发生了漏检,向管理员发送报告。
通过以上举例说明CDL 语言可以准确的描述供应链RFID 系统的日常业务,以及在规定的时间内满足条件时触发的动作。CDL 也可以较好的描述其它RFID 系统的日常业务,在此不做举例说明。
4 结论
本文改进并提出了一套基于RFID 的复杂事件描述语言CDL,它比其它描述语言更接近数学表达式,并且可以更准确的描述事件间的逻辑关系与时间关系。目前在国内,复杂事件描述语言没有得到人们的深刻认识,也没有得到广泛应用,但随着大规模通讯系统的发展,复杂事件描述语言很快会得到应用,并且会有更广阔的应用空间。