基于语义协作的RFID应用集成框架
1 引言
在对RFID 的应用中,我们首先要对业务的过程进行分析,然后构建基于RFID事件的业务模型,通过各事件活动之间的迭代,最终完成此业务过程。我们采用XML作为语义事件的定义语言,封装了底层的RFID事件的实现,允许开发者以一种直接的方式来细化语义事件。通过详细的设计,语义事件包含了一整套的基本事件活动,简化了RFID应用的规格定义 语义事件基于简单的RFID事件,它描述了在业务过程中与RFID事件相关的一些活动,因而与简单的RFID事件相比,它是一种更可用的业务级事件。语义事件协作组件负责处理一连串的活动。以下便来分析语义事件的协作框架。
2 RFID事件的概念
事件可以定义为系统中的一个活动记录对象,事件有特定的数据,事件的数据可以包含活动的执行时间,活动的发生地,活动的执行者,或其他数据。我们根据不同事件的定义将RFID系统中的事件进行分类。
2.1 原始RFID事件
图一1是现有RFID系统中的架构,分层体系以及事件(包括读写器事件和RFID事件)。RFID系统一般可以分为三层,读写器层,RFID中间件层,和应用层。RFID中间件从一个或多个读写器获得读写器事件流,RFID中间件通过收集,过滤和净化读写器事件,使得它们符合RFID的应用要求。如表1所示,一个RFID事件是由RFID中间件产生的,其中包含的信息有逻辑读写器名称,标签值,方向和时间,应用开发者必须收集RFID事件,访问数据服务器获得RFID事件所必需的相关数据,处理业务逻辑以实现RFID的应用。应用开发者必须了解RFID知识和数据交互技术,实际的应用必须编写额外的代码,而非仅仅业务逻辑本身,以处理RFID事件。
图1 RFID 系统架构中的RFID 事件
表1 RFID 的事件定义
2.2 复杂RFID事件
复杂事件包含规则语言、规则建模、规则迭代等3个核心构件,如图2所示。
图2 复杂事件处理框架
原始事件是指不依赖于其他事件的基本事件,而复杂事件则是指多个原始事件根据一定关系的组合。事件规则语言用于具体描述原始事件和复杂事件之间的关系。
通过对RFID应用环境的业务模型进行分解,可以使用一种语言来对业务模型进行描述。事件规则语言是描述具体的业务场景,对存在的元事件和复杂事件的关系进行描述的一种语言。规则建模的职责是将由事件规则语言描述的业务场景用计算机可以规约的模型来表示。建模方式有许多,可以采用布尔表达式树、无环有向图、有限状态机或Petri网算法。
对于不同规则建立有不同的模型,对输入事件流进行复杂事件的规约。事件迭代构件的作用是协调管理多个模型。同时,对于不同模型中相同的子部分,事件迭代还需要提供优化策略。
在图2中,复杂事件通过服务总线,被业务过程服务器所获得,业务过程服务器根据预先制定的特定业务的需要,将复杂事件连同简单事件进行组合和处理,最终返回事件的处理结果,最后交给定制了服务的应用系统。
2.3 语义事件
图3显示了RFID在基于语义协作的RFID 系统中的角色,以及在此系统中可能出现的事件类型。语义协作组件从RFID中间件获得RFID事件,然后将它们转换为一种更可用的形式,从而使得对RFID的应用更加高效。
图3 语义事件协作组件的角色
语义事件是一种针对各种应用活动的高级事件。语义事件源于原始的RFID事件,它由RFID事件,相关数据,还有业务规则构成。语义事件与原始RFID事件有着很明显的区别,描述如下:
问题:
对RFID事件而言:读写器A现在读到的是什么?
对语义事件而言:被读写器A读到的人员是否已被授权进入?
回应:
对RFID事件而言:
< dock— A urn:epc:tag:sgtin一96:4.011562.0557083.19212150 up 10:12:00:06:O5>
对语义事件而言:
<:authenticatedUser(success):ID 9034 Name Yixuan type Student>
此问题的语义事件可以描述如下:
*RFID事件:读写器A读到一个标签值。
*相关数据:标签所对应的人员的身份信息。
* 业务规则:相应的授权规则。
此外,语义事件含有数据组件。表2给出了语义事件的定义和形式。
表2 语义事件定义语义协作组件负责将RFID事件转换为语义事件。转换过程是这样的,对RFID事件进行收集,获取相关的数据,分析相应的业务规则,最终产生语义事件。为产生语义事件,首先必须在活动中描述语义事件的规格。我们用语义事件定义语言来描述这一规格,这在下面会继续进行说明。
3 语义事件定义语言
3.1 声明活动
语义规格中的变量必须根据它们的类型来声明,类型可以是一般的数据类型,比如整型,浮点型,字符串型,也可以是具体的RFID数据类型,比如EPC标签,EPC标签集。EPC标签是一种用于存储产品码值的数据类型,EPC标签集则是在RFID中间件的一个事件周期中所产生的标签集类型。
3.2 触发活动
语义事件规格可以被一个或多个RFID事件触发,触发活动定义了应用请求RFID事件的过程,它由与事件相关的,用于描述RFID事件和RFID读写器控制信息的元素组成,比如开始或停止一个事件周期的触发,重复操作的时间和间隔。此外,它还定义了用于从RFID中间件接收RFID事件的元素。
3.3活动参照
为了将RFID事件转换为语义事件,语义规格需要以要求的术语来描述,一般它要根据相关的数据来描述。通过信息服务,相关的数据信息可以被重新获得。EPC信息服务是一种网络数据存储库,它存储了标签物品的附加数据信息,它提供一个标准的访问接口,并实现了对EPC数据信息的持久保存,活动参照组件定义了从EPC信息服务器重新获得数据的过程。
3.4 迭代活动
迭代活动由迭代条件和迭代过程组成。
1)迭代条件
迭代条件检验语义事件规格所必需的触发条件以触发RFID事件,它代表应用中所必需的业务规则,业务规则对与RFID事件和相关数据有关联的业务进行限制。
2)迭代过程
迭代过程定义了应用请求语义事件的过程,语义事件的内容包括语义事件名称,根据业务规则所得到的结果,和相关数据组件。
4 语义事件协作组件
4.1 RFID系统中的语义事件协作组件
在RFID系统中语义事件协作组件的角色如图一3所示,RFID 中间件通过RFID 读写器获得未经处理过的RFID 事件,并将它们转换为可以被语义事件协作组件使用的形式。语义事件协作组件通过相关的数据信息将RFID事件转换为语义事件,相关的数据信息从EPCIS或ONS或者其他相关的数据服务器获得。EPC Global是目前EPC的标准化组织,它定义了EPCIS和ONS服务器来将网络中的产品信息转换为RFID数据和产品数据。RFID应用发送请求给语义事件协作组件请求语义事件,应用使用语义事件协作组件的客户端API来发送语义事件规格到语义事件协作组件,并且获得语义事件协作组件的语义事件报告。
4.2 语义事件协作架构
图4 语义事件协作框架
如图4所示,语义事件协作组件由以下组件构成:
*语义事件通知
这个组件接受由RFID应用发送的语义事件请求,并且当语义事件被检测到后,将语义事件发送给所请求的应用。
*语义事件管理
在这个组件中,利用有关的数据和相应的业务规则,收集到的RFID事件被转换为语义事件。这个组件负责对活动进行组合,组件通过解析语义事件规范注册库得到事件的注册规范,然后找到合适的活动。
*RFID事件集
图一4中ALE是EPCglobal提出的标准,符合EPCglobal标准的RFID中间件必须支持ALE这种标准。ALE通过提供收集、过滤和计数等功能,以及灵活标准的接口,使得在收到用户请求后能快速地产生报告。
语义事件协作组件并不直接从RFID事件(ALE/原始事件)集获得事件,通过RFID中间件所提供的接口,组件细化RFID事件和与事件相关的RFID读写器的控制信息,比如开始或停止触发一个事件,重复操作的时间和间隔等。此外,RFID事件集接收从RFID中间件获得的RFID事件。
* 数据收集
这个组件从外部数据服务器收集为生成语义事件所必需的相关数据,这个组件由EPCIS访问组件和ONS访问组件构成,它负责从EPCIS和ONS收集数据。如果我们想从其他数据源获得数据,我们可以开发自己的适配器来访问相关的数据服务器以得到数据信息,并且在注册后就可以使用。
*语义事件规格注册和语义事件库
已注册的语义事件规格被存贮语义事件规格注册组件中,由语义事件管理组件所产生的语义事件被存储在语义事件库中。
比如,如果要检验来访的用户是否已被系统授权?在这一业务逻辑中,其语义事件规格就可以描述如下:
< ? xml version=”1.0”encoding= ”UTF一8”? >
< eSpec>
<variables>...</variables>
<trigger>... </trigger>
<trigger>...</trigger>
< EPCIS source= vUserListH assign= vEPC >
< getEPCAttribute epc一”vEPC”
schema一"member"
xpath=”join”>vMember
</getEPCAttribute>
<getEPCAttribute epc一 vEPC”
schema一"member"
xpath= ”name”> vUser
< /getEPCAttribute>
< /EPCIS>
<一一问题相应的语义事件一一>
< event>
<condition> vMember=一0</condition>
< generate name= AuthenticatedUser |>
<data name一”Status”>False</data>
</event>
</eSpec>
5 结语
利用语义事件定义语言,语义事件可以被充分并且详细地描述,语义事件协作组件能够高效地提供语义事件,并且与没有采用语义事件协作的RFID应用相比较,基于语义事件协作的RFID应用大大简少了编写代码的量,从而简化了RFID的应用开发。