应 俊 王社周 吉福生
1(重庆邮电大学光电工程学院 重庆 400065)2(重庆邮电大学 重庆 400065)
基于ALE规范的分布式RFID中间件研究与实现
应俊1王社周1吉福生2
1(重庆邮电大学光电工程学院重庆 400065)2(重庆邮电大学重庆 400065)
摘要随着RFID技术的应用范围越来越广,其系统规模也越来越大。RFID中间件效率低,且缺乏统一的标准。从实际出发,采用ALE(Application Level Event)规范设计一个通用的分布式RFID中间件架构。该架构不仅可以提供统一的接口,还可以有效地降低系统规模过大所带来的不良影响。所设计的RFID中间件可以应用于物流管理、车辆管理、资产管理、生产制造等多种RFID技术应用场合。为验证其性能,最后设计了基于RFID中间件的资产管理系统,通过应用验证了基于ALE规范的分布式RFID中间件的可靠性和高效性。
关键词ALE规范事件分布式数据过滤
0引言
经过多年的应用和发展,射频识别技术RFID已经成为自动识别和数据收集系统的首选技术。RFID技术能够以很高的速率接收海量的数据,它的这种能力使得RFID技术可以用来识别、定位、追踪以及监管非视距内的物品[1]。目前RFID技术已经在很多领域得到了的应用,如:物流管理、零售、包裹管理以及安全和医疗等领域[2],给人们的生活带来了极大的便捷。
同时由于RFID技术应用的深入,以及RFID系统规模的扩大,为了应对日益庞大的数据处理量、层次化RFID应用系统,RFID中间件应运而生。目前国外的RFID中间件产品主要有Oracle RFID中间件、IBM RFID中间件、BEA RFID中间件、SUN RFID中间件。国内的有华中科技大学开发的支持多通信平台的 RFID 中间件产品Smart,上海交通大学开发的面向商业物流的数据管理与集成中间件平台[3]。虽然这些产品已经开始应用,但是还存在如下一些问题:(1) 中间件对某些硬件设备依赖较大,无法实现通用性;(2) 通信以数据流为主;(3) 应用领域单一,无法给企业应用层提供统一的接口,以适应应用环境的变化。
针对上述问题,本文提出一种基于应用层事件规范ALE的RFID中间件设计方案。ALE规范由EPCglobal组织于2005年提出,它不针对某个应用和领域,而是完全作为国际标准存在[4],ALE规范通过对具体应用环境进行抽象,将应用环境和事件(Event)一一对应,对外提供符合该规范的应用接口。引入ALE规范可以有效地解决企业应用需求灵活多变、系统中冗余数据量大、底层设备种类繁多、应用接口不统一等问题,可以让应用层软件开发人员快速地开发出高质量、可移植、可扩展的应用软件,可以屏蔽底层设备对应用软件的影响。基于ALE规范设计RFID中间件对RFID技术的推广应用具有极其重要的意义和必要性,但是规范并没有给出设计RFID中间件的具体方法,而是定义了一系列接口[5]。本文不仅给出了中间件的设计方案,而且在最后开发了基于RFID技术的资产管理系统,以验证RFID中间件的性能。
1RFID中间件架构设计
软件架构的设计,是设计软件的第一步。本文在ALE规范的基础上,同时为了进一步扩大RFID中间件的应用范围和使用灵活性,设计了一种可以适用于分布式、多网关应用环境的中间件架构。该架构由两部分组成:RFID中间件服务器和网关,如图1所示。
图1 RFID中间件架构图
本文将RFID中间件服务器作为服务提供方,为了能够更好地提供服务,减小与应用软件的耦合, RFID中间件服务器采用面向服务的体系结构SOA(Service-Oriented Architecture),实现发布/订阅模型,屏蔽服务发布者和订阅者。共包括设备管理、事件管理、触发器管理以及状态策略管理等四个模块,设备管理模块用于对设备进行初始化及状态的监管,与其他模块无交集。事件管理模块、触发器模块和状态策略模块以ECSpec作为主线相互影响、相互配合,并最终完成一次应用层的请求。事件管理模块中的ECSpec决定触发器的初始化,而触发器决定状态策略模块中事件状态的转移,事件的不同状态又会反过来影响事件管理模块的进一步操作。三个模块之间相辅相成,共同完成RFID中间件服务器的事件处理功能。
网关包括设备注册、驱动装载、设备巡检、数据过滤和数据组合等模块,主要实现对标签数据的收集及预处理,以及对设备进行直接的监控。
2RFID中间件服务器
作为SOA技术的一种实现方式,RFID中间件服务器采用Web Service技术实现。Web Service提供了基于XML的标准接口,具有完好的封装性、松散的耦合性、协议规范的标准性以及高度的可集成性等特点,能够良好地满足SOA应用模式的需求[6]。使用过程中应用系统可以通过请求服务的方式获取RFID中间件提供的服务。
RFID中间件服务器连接应用层和网关,对事件以及数据进行处理和中转。其中设备管理模块用于中转设备管理指令;事件管理模块,负责事件的处理和报告的生成;触发器模块,决定事件的开始和结束;状态策略模块,用于管理事件的状态。
2.1事件管理模块
事件管理模块用于给应用层提供接口,将具体的应用场景抽象化,并通过Web Service中不同的函数和参数列表来表示不同的应用场景。接口主要分为三种:事件定义、事件订阅和回调函数。应用层依次调用各种接口并配合状态策略模块和触发器模块实现相应的功能,其流程如下所示:
(1) 事件定义,应用层调用事件定义函数(define或Immediate函数)将输入的ECSpec分解存入到数据库中,保证后续订阅者的正常使用;
(2) 事件订阅,应用层订阅(Subscribe或Poll函数)感兴趣的事件,将其从数据库中取出转化为一个事件对象存储在内存中,不同的事件通过SpecName进行区分,同时通过状态转移模块改变事件的状态;
(3) 事件触发,触发器模块激活内存中对应的事件,将ECSpec对象中的SpecName和逻辑读卡器ID列表组成一个结构体发送到网关中,网关开始读取标签;
(4) 报告生成,由触发器模块结束相应的事件,报告生成模块将接收到的标签数据组合成一个XML格式的报告上传给应用层,或者是等待应用层主动取走。
除上面提到的接口外,还有取消事件定义(Undefine和AbortImmediate)、取消事件订阅(Unsubscribe和AbortPoll)、触发器接收函数(PushTrigger)、事件注册(UpdateEvent)和网关上传数据(PushData)等函数。
其中从功能上看,Poll函数相当于执行一次Subscribe函数,并且事件周期结束后立即再执行一次Unsubscribe函数,而Immediate函数相当于define函数加上Poll函数再加上Undefine函数依次执行一次[7]。工作流程如图2所示。
图2 事件管理模块工作流程
2.1.1事件周期定义
在ALE规范中,ECSpec是应用场景抽象的结果[8]。ECSpec作为系统的输入,它的设置满足大部分应用场景,其字段列表如表1所示。在表中逻辑读卡器列表是相对真实的物理读卡器而言的,之间呈一对多的层次关系。通常将一个房间或是相对独立环境中的物理读卡器定义为一个逻辑读卡器,应用系统只需操作对应逻辑读卡器,而不用关心物理读卡器。逻辑读卡器的设置进一步降低了应用系统和物理设备之间的耦合性,物理设备的增减更加随意;事件周期边界ECBoundarySpec(Event Cycle Boundary Specification)定义一个事件周期的开始和结束,包含决定字符串触发器和时间触发器工作形式的条件,而具体的触发工作由触发器模块控制;事件周期报告ECReportSpec(Event Cycle Report Specification)定义在事件周期结束时如何生成一个报告,即定义生成的报告中应该含有的信息。一个ECSpec可以生成多个报告;includeSpecInReports定义在报告中是否包含ECSpec的原始定义;primaryKeyFields定义标识标签唯一性的标签字段,如EPC值等。通过define函数异步定义的ECSpec,其他用户可以通过SpecName使用这个ECSpec,而Immediate函数定义的ECSpec只有发起该请求的用户可以使用。
表1 ECSpec对象定义
2.1.2报告生成模块
由网关收集到的数据只包含由标签和逻辑读卡器ID组成的键值对,为了在反馈给应用层的报告中包含在事件周期中发生的更多信息,报告生成模块在接收到这些数据后,需要按照对应ECSpec的要求进行处理。解析不同参数的ECSpec,模块会生成包含不同信息的报告,最终报告以标准的XML格式通过回调函数以同步或者是异步方式返回给应用层,XML格式的字段如表2所示。
表2 ECReport对象定义
2.2状态策略模块
状态策略模块用于辅助事件管理模块对事件的状态进行管理,在设计中,将事件的整个生命周期分为三种状态:Unrequested、Requested、Active。Unrequested表示事件已经被定义(define函数),但是没有人订阅该事件;Requested表示至少有一个人订阅了该事件,但是还没有开始阅读标签;Active状态表示物理读卡器正在读标签。事件每进入和离开一次Active状态,就会产生一个报告。由定义可知,subscribe函数订阅的事件可以多次进入和离开Active状态,而Poll和Immediate函数只能进入和离开Active状态一次,从而只能产生一个报告。此外,由Immediate函数定义的事件没有Unrequested状态而是直接进入Requested或者是Active状态。事件处于不同的状态时,应用层调用同一个函数其后继状态不同。状态策略模块会根据状态转换规则转换ECSpec的状态,具体状态转移如图3所示。
图3 状态转移策略模块
事件周期的开始和结束对应着进入或离开Active状态,而对网关而言当事件转移到Active状态时开始注册事件(UpdateEvent)。当离开Active状态时取消事件注册(和注册事件是同一个接口),同时上传数据(PushData)到中间件服务器。
2.3触发器模块
触发器用于决定事件的开始和结束,在本文设计的RFID中间件中,将触发器定义为两种:时间触发器和字符串触发器,两者均由ECSpec定义。前者主要是从时间上定义事件何时开始执行、执行多长时间、何时结束、循环执行的间隔;而后者通过事先约定好的两个字符串表示事件的开始或结束。在使用过程中一个事件要保证至少存在一种触发器。其工作流程如图4所示,首先是通过事件管理模块定义ECSpec;其次是根据ECSpec初始化两种触发器;最后由先被触发的两个触发器之一改变事件的状态,进而影响事件管理模块的操作。
图4 触发器工作流程
2.4设备管理模块
设备管理模块功能上独立于其他三个模块,与事件无关。主要是为系统中的设备初始化和巡检提供服务,对数据库进行读和写操作。设备初始化包括对网关和阅读器的初始化,设备管理模块根据输入的网关ID以XML格式返回网关的配置信息,网关根据配置信息对网关自身及所属阅读器进行初始化操作。巡检时设备管理模块为其提供需要巡检的阅读器信息,并通过该模块将巡检结果实时地写入到数据库中。
3网关设计
网关连接射频网络和Internet网络,所以网关的首要任务是协议转换、解析并过滤数据。此外,还要负责底层设备的巡视、监管及驱动装载,负责事件的具体执行。本文所设计的网关以一个由SpecName和对应的逻辑读卡器列表组成的结构体作为输入,以SpecName和收集到的标签数据组合的结构体作为输出。网关在处理过程中只需要关心自己所属的逻辑读卡器应该做什么工作,而不需要操作事件本身。从逻辑上对系统进行了明确的划分,明确了系统中各个模块的功能,让系统从逻辑上达到“松耦合”。网关分布式地存在于系统中,多个网关之间以网关ID、IP地址等信息标识。
3.1设备注册
设备注册主要用于在系统中添加新的设备。如果物理阅读器要想加入到系统中,首先是要通过注册将物理读卡器的相关信息输入到系统中,需要输入的信息主要有物理读卡器ID、物理读卡器IP地址、所属逻辑读卡器ID、MAC地址等。添加逻辑读卡器和网关时需要提供额外的所属网关ID等。只有通过注册的设备,才可以在系统中使用,同时也才会纳入到系统的自动巡检范围内,以保证两者之间进行可靠的信息交互。
3.2驱动装载
不同的企业、不同的应用环境下所使用的硬件设备可能会不同,从而造成数据采集协议的不同。为了充分减小底层设备的改变对中间件的影响,本文设计了驱动装载模块,预留出统一的接口供RFID中间件调用。模块的基本原理如图5所示:(1) 根据协议描述文档从dll与协议匹配库中选择或直接添加dll和协议文档;(2) 通过中间件接口生成一个新的dll文件;(3) 中间件通过中间件接口访问新生成的dll文件获取数据,从而使RFID中间件适应不同的应用环境。
图5 驱动装载架构图
驱动模块的设计避免了阅读器和标签与上下系统绑定所带来的局限,符合应用过程中的实际需求,同时也增强了RFID中间件的扩展性。
3.3数据过滤
RFID阅读器读到的标签数据通常都是一些原始的标签数据,包含大量冗余数据,其产生的主要原因有:(1) 标签长时间处于一个阅读器的射频扫描范围内,被一个阅读器重复读取多次;(2) 标签处于多个阅读器的射频扫描范围内,在一段时间内被多个阅读器同时读到并上报[9]。
为了减小系统的负担,接收到的数据要经过过滤,所以数据过滤在RFID中间件中占据一个重要的地位。数据过滤算法通常被分为两种:一种是查找_插入法,一种是收集_删除法。前者是在接收数据的同时,判断容器中是否已经有当前的标签数据,如果没有,则插入,否则不插入。后者是等将所有的数据收集完成后,在最后汇总时,删除里面重复的数据。本文采用查找_插入法,利用平衡二叉树的快速查找的优点过滤数据。
现有的平衡二叉树结构如图6所示,每一个节点表示一条数据,每一条数据占据12(以96位长度为例)个字节。每接收一条数据就在平衡二叉树中进行查找比较,看是否有相同的数据存在,若存在,则直接过滤掉。若不存在,则直接将数据插入二叉树中,并进行二叉树的平衡处理。该算法虽然简单,但是要消耗掉很大内存去存储数据,在RFID中间件处理海量数据时将会严重地降低中间件的性能。
图6 平衡二叉树结构
所以本文在此基础上进行了改进,改进后的平衡二叉树结构如图7所示。该方法将标签数据根据规定进行切割,分为四部分,每一部分对应一个平衡二叉树。于是将一个平衡二叉树分为四个不相关的平衡二叉树,并分别进行平衡性维护。在第一、二、三层二叉树中存储对应码段的真实数据,并给每一层的节点按照从上到下,从左到右的顺序依次编码为1,2,3,…。在第四层的二叉树节点中存储的数据结构为1101,000169DC0。其中第一个‘1’表示第一层编号为1的节点,第二个‘1’表示第二层编号为1的节点,随后的两位‘01’表示第三层编号为1的节点。最后加上RFID标签的第四段数据。如020000A890001 70000169DC0可以表示为:1102,000169DC0,020000A8900017 0000169DC0和020000A8900016F000169DC0可以合并保存为1101,1102,000169DC0。
图7 改进平衡二叉树结构
在进行查找时,只需要比较第四层是否有相同的数据,若有,则直接过滤掉。若没有,则更新每一层的平衡二叉树,并使其维持平衡,从而实现查找,基本流程如图8所示。该方法虽然从节点的数量上来看比原有的方法要多一些节点,但是表示相同的信息时将会消耗更小的内存,而且在查找二叉树时,所需要比较的数据长度也小于原有算法。改进的算法性能更优,在实际的应用中具有重要的意义。
图8 数据查找流程图
在RFID中间件中数据的收集以ECSpec为单位进行,由于事件之间的交叉性,不同的事件可能涉及到相同的逻辑读卡器,进而对应一些相同的物理读卡器。由于事件定义的先后,导致在进行标签数据收集时,无法共享逻辑读卡器。为了解决这个问题,设计了如图9所示的数据收集流程,在系统中有物理读卡器读取标签的周期C1,逻辑读卡器读取周期C2,事件周期C3。工作过程为:首先,物理读卡器以C1为周期读取标签,读到标签以后对读到的标签进行去重,存放到物理读卡器标签库中;其次,逻辑读卡器以C2为周期读取物理读卡器标签库中的数据同时清空物理读卡器库,将去重后的数据上报给涉及到该逻辑读卡器的所有事件库,事件库完成对逻辑读卡器上传来的相同标签的去重;最后,事件库以C3为周期将对应事件库中标签组合为一个报告上传给应用层,并清空事件库。这种结构可以有效地解决系统中的逻辑读卡器共享问题。
图9 数据收集流程
3.4巡检
巡检的设计,主要是为了使系统具有自检和自动恢复功能,可以及时地发现系统中出现问题的设备,增强系统的可靠性,同时在一定程度上降低系统的维护开支。设备巡检的流程如图10所示。
图10 巡检工作流程
4中间件应用
经过多次修改,RFID中间件达到了预定设计目标,各个模块均正常运行,有效地解决了接口统一性问题。而中间件的分布式、多网关架构相对于单网关系统而言,减少了数据排队时间,增加了系统的并行处理能力,提高了系统的效率。为了进一步验证该中间件的可靠性,开发了基于RFID技术的资产管理系统,目前该资产管理系统已经在多地成功投入使用,功能列表如图11所示。从图中可以看到资产管理系统实现了自动“盘点扫描”的功能,该功能使得资产管理员在统计资产信息时由原来的手动登记变成自动盘点扫描。资产管理员通过系统发起盘点请求,使得资产盘点工作由原来的数月变为可以在一天,甚至更短时间内完成(部分资产需要使用手持阅读器进行补充盘点)。扫描可以快速定位某一个资产,该功能的设计极大地提高了资产的管理效率。图11中的“资产移动”功能可以实现在线申请资产调拨,记录详细资产移动路径。“门禁跟踪和警报”功能可以及时发现资产越界,实时掌握资产动态,降低资产管理过程中人为造成的差错,提高了资产管理系统的安全性。“资产出入库”功能通过入库操作,将资产纳入到系统的监管范围内,通过出库操作处理报废的资产,该功能明确了资产的生命周期。“报表统计”等功能用于统计资产的详细信息。总之,设计的基于RFID技术的固定资产管理系统有效地提高了资产的管理水平。
图11 系统应用实例
5结语
中间件用于过滤冗余数据、屏蔽设备的差异性和企业应用软件的多样性,在RFID应用系统中具有重要的地位。本文首先介绍RFID中间件的研究背景,并说明在RFID中间件中引入ALE规范的意义和必要性,然后给出本文提出的RFID中间件架构设计方案。依次分析介绍了架构所涉及各个模块的设计原理、工作流程以及它们之间的逻辑关系。所设计的RFID中间件具有很好的通用性,可以应用于多个领域。最后通过在固定资产管理系统中的成功应用验证了本文设计的基于ALE规范的RFID中间件的正确性和接口的通用性。本文的研究进一步促进了RFID技术的推广和应用,但是随着RFID技术的不断发展对RFID中间件的要求也将随之不断提高,如需要更完善的功能设计、更高效的数据过滤等,所以RFID中间件也需要不断的研究与发展。
参考文献
[1] 张旭,雷日春.RFID在纺织品检验实验室样品管理系统中的应用[J].中国纤检,2014(6):62-64.
[2] 万小明.浅析RFID技术在物流行业中的应用前景[J].物流工程与管理,2012(3):86-87.
[3] 董旭.一种分布式RFID ALE中间件系统设计与实现[D].电子科技大学,2012.
[4] 杨海刚.ALE中交易事件的处理方法与技术研究[D].北方工业大学,2014.
[5] 郭跃辉,艾君锐.基于ALE规范的RFID中间件的研究与设计[J].现代计算机:专业版,2010(10):79-82.
[6] 李捷.一种基于SOA的RFID中间件应用方案设计[J].微计算机信息,2009,25(11):181-183.
[7] Kang S S,Park G J.Design and Implementation of ALE v1.1 Middleware in RFID systems[C]//New Trends in Information and Service Science,2009.NISS’09.International Conference on.IEEE,2009:815-821.
[8] Li X,Xu Z,Wu L.A design for RFID middleware system extended from ALE specification[C]//Software Engineering and Service Science (ICSESS),2012 IEEE 3rd International Conference on.IEEE,2012:271-274.
[9] 孙红,厉彦刚,陈世平.RFID中间件数据处理研究[J].上海理工大学学报,2014(3):234-238.
收稿日期:2015-01-20。国家自然科学基金项目(61371097);国家物联网专项(工信部科函[2014]351号);重庆市青年科技人才培养计划项目(cstc2014kjrc-qnrc40001)。应俊,副教授,主研领域:电子信息技术。王社周,硕士生。吉福生,工程师。
中图分类号TP3
文献标识码A
DOI:10.3969/j.issn.1000-386x.2016.07.004
RESEARCH AND IMPLEMENTATION OF DISTRIBUTED RFID MIDDLEWARE BASED ON ALE SPECIFICATION
Ying Jun1Wang Shezhou1Ji Fusheng2
1(SchoolofOptoelectronicEngineering,ChongqingUniversityofPostsandTelecommunications,Chongqing400065,China)2(ChongqingUniversityofPostsandTelecommunications,Chongqing400065,China)
AbstractAs the application range of RFID technology becomes increasingly wide, the system size becomes bigger and bigger as well. RFID middleware has low efficiency and lacks the uniform standards. Proceeding from actual situation, in this paper we adopt the ALE specification to have designed a universal distributed RFID middleware architecture, this architecture can not only provide a uniform interface, but can also effectively reduce the bad influence on the system caused by its too big size. The designed RFID middleware can be applied to various situations where the RFID technology is used such as logistics management, vehicles management, assets management, manufacturing, etc. To verify its performance, in end of this paper we report the design of an RFID middleware-based fixed assets management system, it verified the reliability and efficiency of the ALE specification-based distributed RFID middleware through application.
KeywordsApplication level events (ALE) specificationEventDistributedData filter