基于管道流的RFID事件处理方法转让专利

申请号 : CN200910086558.5

文献号 : CN101923624B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李其均朱熀锋罗莎莎齐勇杨磊陈力侯迪

申请人 : 航天信息股份有限公司

摘要 :

一种基于管道流的RFID信息处理方法,包括对标签消息进行处理以生成供给上层应用程序的标签事件的步骤S2,所述标签消息进行处理以生成供给上层应用程序的标签事件的过程包括:在对标签消息进行处理之前:定义实现不同处理功能的处理器;将所述各个处理器的调用顺序写入一事件引擎的配置表;处理过程中:获取标签消息,并将获取的信息放入定义的一管道;由所述事件引擎根据配置表既定的顺序调用各个处理器,以管道流的方式对管道中的信息进行处理。增强了事件处理过程的灵活性,并使其功能可以动态的增强和扩展,避免了流程配置的僵化和低效,提高了系统对底层事件的响应和处理能力。

权利要求 :

1.一种基于管道流的RFID信息处理方法,其特征在于,包括如下步骤:步骤S1:从RFID读写器获取标签信息、对标签信息处理生成标签消息;

步骤S2:对标签消息进行处理以生成供给上层应用程序的标签事件,所述对标签消息进行处理以生成供给上层应用程序的标签事件的步骤S2包括:在对标签消息进行处理之前:定义实现不同处理功能的处理器;将各个处理器的调用顺序写入一事件引擎的配置表;

处理过程中:获取标签消息,并使获取的标签消息位于定义的一管道;

由所述事件引擎根据配置表既定的顺序调用各个处理器,以管道流的方式对管道中的消息进行处理;

步骤S3:将标签事件送至上层应用程序,所述步骤S3包括:

由一标签事件泵生成两个线程,其中一个线程将步骤S2产生的标签事件放入一标签事件缓冲区,另一个线程从所述标签事件缓冲区中取出标签事件并根据其类型,经由事件监听器送至相应的上层应用程序。

2.根据权利要求1所述的基于管道流的RFID信息处理方法,其特征在于,所述步骤S1包括:S110,由监听模块对与RFID读写器通信连接的网络端口进行监听;

S120,当监听模块接收到读写器的链接时,生成相应的连接器对象,并进行下一步S130;否则无动作;

S130,所述连接器对象从所述读写器接收标签信息,并将所述标签信息送至一消息泵;

S140,所述消息泵产生两个线程,一个线程将来自连接器对象的标签信息放入一消息缓冲区;另一个线程将消息缓冲区中的标签信息送至消息处理器;

S150,所述消息处理器对标签信息进行初级处理,之后处理后的信息再封装为一个具有文档结构模型的通知对象,所述通知对象为标签消息。

3.根据权利要求2所述的基于管道流的RFID信息处理方法,其特征在于,所述步骤S2中定义的处理器包括报告处理器和事件处理器,各个处理器的输入为一个文档结构模型的对象,输出也为一个具有文档结构模型的对象,所述具有文档结构模型的对象记为事件,所述对管道中的消息进行处理为在事件中加入或剥离相应的上、下文。

4.根据权利要求3所述的基于管道流的RFID信息处理方法,其特征在于,所述各个消息处理器、报告处理器和事件处理器是否被调用和调用顺序由所述配置表动态确定。

5.根据权利要求3所述的基于管道流的RFID信息处理方法,其特征在于,所述事件的上下文为一个哈希表。

6.根据权利要求1所述的基于管道流的RFID信息处理方法,其特征在于,所述配置表以XML文件形式存储,并以不同的节点表示不同的处理器,通过对节点属性的设置来配置处理器的具体实现对象及其相应属性。

说明书 :

基于管道流的RFID事件处理方法

技术领域

[0001] 本发明涉及射频识别技术,更确切地说,本发明涉及的是一种RFID应用系统中,用于RFID读写器和RFID应用程序之间的RFID中间件的数据处理方法。

背景技术

[0002] 在用RFID读写器(Reader)获取标签信息时,通常会一次获取批量的标签数据。受射频识别的工作原理所限,在标签数量众多,并由多个读写器进行信息获取和/或实时监控的应用场合,例如库存、物流管理等情况下,读写器获取的标签数据往往有数据量庞大和存在大量的冗余信息两个特点。因此这些标签数据往往需经过一定的处理和过滤之后,才能题供给上层的应用程序进行信息处理。对标签数据进行处理并生成供给应用程序的信息的过程,通常由RFID中间件来完成。
[0003] RFID中间件是一种面向消息的中间件,信息是以消息的形式,从一个程序传送到另一个或多个程序。信息可以以异步的方式传送,所以传送者不必等待回应。面向消息的中间件包含的功能不仅是传递信息,还必须包括解译数据、安全性、数据广播、错误恢复、定位网络资源、找出符合成本的路径、消息与要求的优先次序以及延伸的除错工具等服务。
[0004] RFID中间件的作用主要体现在三个方面:
[0005] (1)控制RFID读写设备按照预定的方式工作,保证不同读写设备之间配合协调,屏蔽各读写器之间的差异性。
[0006] (2)按照一定规则过滤数据,筛除绝大部分冗余数据,将真正有效的数据传送给后台信息系统。
[0007] (3)保证读写器和企业级分布应用系统平台之间的可靠通信。
[0008] RFID中间件面临的最大的问题是:如何处理底层报告上来的巨量的数据。例如在一个中等的零售链中,一天扫描到的标签事件数量可以达到50亿。由此带来RFID中间件面临的挑战是如何在如此巨量的数据中提取出有价值的信息。所以如何过滤数据,筛处冗余数据,将真正有效的数据传送给后台信息系统是RFID中间件非常重要的作用。
[0009] 国际组织EPCGlobal对RFID技术及RFID中间件等相关领域部件的功能给予了定义和规范化说明,与电子产品码数据处理相关的规范是ALE(ApplicationLevel Event)规范。它规定了电子产品码数据处理的流程和处理单元的功能,但没有给出处理单元设计实现等的相关内容。于此同时,国内关于RFID技术及RFID中间件技术的规范也正在积极制定中。
[0010] RFID事件处理层的主要功能是对原始RFID数据进行过滤、分组和包装,它在RFID中间中处于非常重要的地位。
[0011] 目前已问世的成熟的RFID中间件产品中,都包括RFID事件处理部分。但其要么是功能单薄,过滤规则简单,缺少复杂事件的定义和处理能力;要么是基于开发商所研发的核心产品或技术的应用,有太大的依赖性和较小的扩展性;简单的使用这些模型和方法并不能有效地解决复杂的RFID应用中所面临的事件处理问题。基于RFID的研究现状和RFID数据的特点,如何实时对巨量的RFID数据进行处理,如何充分挖掘RFID数据所包含的有用信息成为亟待研究的重要问题。

发明内容

[0012] 为了在不改变现有系统的架构的前提下,克服上述缺点,解决对大量RFID数据进行动态处理的问题,本发明提出了一种基于管道流的RFID信息处理方法。
[0013] 本发明基于管道流的RFID信息处理方法,包括对标签消息进行处理以生成供给上层应用程序的标签事件的步骤S2,其特征在于,所述标签消息进行处理以生成供给上层应用程序的标签事件的过程包括:
[0014] 在对标签消息进行处理之前:定义实现不同处理功能的处理器;将所述各个处理器的调用顺序写入一事件引擎的配置表;
[0015] 处理过程中:获取标签消息,并使获取的信息位于定义的一管道;
[0016] 由所述事件引擎根据配置表既定的顺序调用各个处理器,以管道流的方式对管道中的信息进行处理。
[0017] 其中,所述方法还包括在所述步骤S2之前,从RFID读写器获取标签信息、对标签信息处理生成标签消息的步骤S1;以及在步骤S2之后,将标签事件送至应用程序的步骤S3。
[0018] 较佳地,所述步骤S1过程包括:
[0019] S110,由监听模块对与RFID读写器通信连接的网络端口进行监听;
[0020] S120,当监听模块接收到读写器的链接时,生成相应的连接器对象,并进行下一步S130;否则无动作;
[0021] S130,所述连接器从所述读写器接收标签信息,并将所述标签信息送至一消息泵;
[0022] S140,所述消息泵产生两个线程,一个线程将来自连接器的标签信息放入一消息缓冲区;另一个线程将消息缓冲区中的标签信息送至消息处理器;
[0023] S150,所述消息处理器对标签信息进行初级处理,之后所述处理后的信息再封装为一个具有文档结构模型的通知对象,所述通知对象称为标签消息。
[0024] 较佳地,所述步骤S3过程包括:
[0025] 由一标签事件泵生成两个线程,其中一个线程将步骤S2产生的标签事件放入一标签事件缓冲区,另一个线程从所述标签事件缓冲区中取出标签事件并根据其类型,经由事件监听器送至相应的RFID应用程序。
[0026] 本发明的有益效果在于,能够支持对于RFID事件处理的动态配置,提高RFID事件处理能力。基于管道流的RFID事件处理方法可以灵活、有效的处理来自于读写器的海量信息,对其进行快速、精确的过滤、包装及分组操作,并为高级事件的生成和上层应用提供有效支持。由于采用了管道流的事件处理模型,并使用配置文件对各类事件处理器进行加载,来对事件处理进行更为有效和灵活的配置,也为事件处理的扩展提供了接口。并且本发明的方法将处理器进行分类和抽象接口定义,具体的处理器按照所属类别实现相应类别的抽象接口。将系统中需要使用的处理器按处理顺序在配置文件中进行详细配置。系统运行时会根据配置文件顺序加载处理器,并以管道流的方式调用各个处理器,用相应的处理器顺序处理底层输入的RFID事件,每个处理器处理后的事件将流向配置文件中的下一个处理器进行相关处理。如果想要增加或删除相应的处理器,只需要修改配置文件,让配置文件增加或减少相应的处理器配置即可。从而有效地解决了对于RFID事件处理的动态处理问题,通过实现需要的处理器并进行相应的配置,可以对于RFID事件进行进一步的处理,而不需要改变现有系统的架构。
[0027] 因此,能克服现有的模型和方法功能性弱、依赖性强、不易使用和扩展的特点,提供一种使用更为方便、功能更为强大、配置更为灵活、运行更为高效的RFID事件处理方法。通过使用可配置的管道流事件处理模式,增强了事件处理过程的灵活性,并使其功能可以动态的增强和扩展,避免了流程配置的僵化和低效,提高了系统对底层事件的响应和处理能力。

附图说明

[0028] 图1是RFID系统的一般层次结构;
[0029] 图2是RFID数据处理的流程示意图;
[0030] 图3是本发明的管道内数据流示意图;
[0031] 图4是本发明基于管道流的RFID信息处理方法的一实施例流程示意图;
[0032] 图5是本发明方法中事件处理器对事件的处理过程示意图。

具体实施方式

[0033] 下面结合附图对本发明的技术方案和各种特点进行详细的说明。
[0034] 图1是一个RFID应用系统的结构示意图,图2是RFID数据处理的流程示意图。一般而言对来自RFID标签的信息进行处理也经过3个层次。第一,由RFID读写器读取标签数据,每个读写器可以读取多条标签数据,之后由读写器将标签数据送至与之联网的主机,由RFID中间件进行数据初步处理,所述初步处理主要目的是对标签数据进行规范的格式化,初步过滤和打包等之后之后,使之成为适于上层应用程序处理的数据类型并简化上层应用程序的处理数据量,并将之传递给上层应用程序。
[0035] 在此过程中,标签的信息经历了由标签数据到标签消息再到标签事件,最后生成API(应用程序接口)输入事件的数据转化流程,并在此过程中被封装和过滤。
[0036] 在本发明中,标签数据定义为由读写器采集的各个RFID标签发出的原始数据,其根据读写器和标签的不同包哈有不同的数据格式和数据项等信息。标签消息定义为将RFID中间件初步处理的具有文档结构模型的通知对象,该对象具有统一的数据描述方式和和结构。标签事件,表示标签消息在各级处理过程中的状态,其为具有语义的事件上下文结构,也简称为事件。从而,标签消息和成API输入事件也可视为标签事件。
[0037] 下面结合图3和图4对本发明的方法做具体的说明。其中,图3是本发明的管道内数据流示意图;图4是本发明基于管道流的RFID信息处理方法的一实施例流程示意图。这里所谓管道流是计算机对数据处理的一种形式,“管道”是一抽象的处理数据的结构,例如在C语言和java等计算机语言中的均涉及管道流处理。
[0038] 根据图4的实施例,本发明的基于管道流的RFID信息处理方法包括:从RFID读写器获取标签信息、对标签信息处理生成标签消息的步骤S1;对标签消息进行处理以生成供给上层应用程序的标签事件的步骤S2;以及在步骤S2之后,将标签事件送至应用程序的步骤S3。其中步骤步骤S1和步骤S3在现有技术中均有多种实现方式,本发明下面将提及的S1和S3的实现方法仅为一较佳实施方式而并非作为限制,任何将现有的生成标签消息的方法以及将标签事件送至应用程序的方法与本发明步骤S2相结合而构成的技术方案均属于本发明的保护范围。任何包含本发明步骤S2的对RFID信息进行处理的方法也将属于本发明的保护范围。
[0039] 参见图4,所述对标签信息处理生成标签消息的步骤S1过程包括:
[0040] S110,由监听模块对与RFID读写器通信连接的网络端口进行监听;这里监听模块可以存在多个监听点,例如每个监听点对一个端口号进行监听;
[0041] S120,当监听模块接收到读写器的链接时,生成相应的连接器对象,并进行下一步S130;否则无动作;
[0042] S130,所述连接器从所述读写器接收标签信息,并将所述标签信息送至一消息泵;
[0043] S140,所述消息泵产生两个线程,一个线程将来自连接器的标签信息放入一消息缓冲区;另一个线程将消息缓冲区中的标签信息送至消息处理器;
[0044] S150,所述消息处理器对标签信息进行初级处理,之后所述处理后的信息再封装为一个具有文档结构模型的通知对象,所述通知对象称为标签消息。其中,从消息缓冲区中取出的消息是纯文本格式的,消息处理器的功能就是对纯文本进行加工处理,例如解压缩和解密。当所有对消息的处理结束后,再将处理结果封装成为一个具有DOM结构的通知对象,供步骤S2使用,例如在本实施例中,发送给报告处理器。这些都是在“管道”中完成的。
[0045] 之后,在对标签消息进行处理以生成供给上层应用程序的标签事件的步骤S2,过程包括:
[0046] 在对标签消息进行处理之前:定义实现不同处理功能的处理器;将所述各个处理器的调用顺序写入一事件引擎的配置表;所述配置表中还可包括步骤S1中和S3中涉及的消息处理器和标签事件泵等的配置,并且可以动态更改,以实现灵活调用。
[0047] 处理过程中:获取标签消息,并使获取的信息位于为其定义的一管道;由所述事件引擎根据配置表既定的顺序调用各个处理器,以管道流的方式对管道中的信息进行处理。
[0048] 例如,所述的实现不同处理功能的处理器可包括多个报告处理器和事件处理器。在本实例中,引入一报告处理器对通知对象加入签名信息,如需对签名对象进行更多处理可以动态加入新的报告处理器。之后,由事件引擎对报告生成器生成的新的通知对象进行事件剥离,并为每个事件生成一个事件上下文,然后将剥离的事件发送给事件处理模块。
“剥离”针对通知对象进行,即从通知对象中获取基本事件。事件处理模块根据事件类型调用相应的事件处理器,事件处理器主要对输入事件进行加工,将新信息放入事件的事件上下文中,以生成供上层应用的高级事件。例如,事件处理模块是一个Manager,而事件处理器是Handler。事件处理模块主要是分发事件给相应的事件处理器。
[0049] 所述将标签事件送至应用程序的步骤S3过程包括:
[0050] 由一标签事件泵生成两个线程,其中一个线程将步骤S2产生的标签事件放入一标签事件缓冲区,另一个线程从所述标签事件缓冲区中取出标签事件并根据其类型,经由事件监听器送至相应的RFID应用程序。
[0051] 其中,本发明的所有配置信息均以XML文件形式进行存储,以不同的节点表示不同类型的处理器,通过对节点属性的设置来配置该处理器的具体实现对象及其相应属性值。在配置文件中不同处理器之间的先后关系必须得到保持,例如消息处理器必须在事件处理器之前声明,首先得到的纯文本信息必须经过若干消息处理器处理,生成具有XML格式的文本。事件处理器再从此文本中提取相应的事件信息进行处理。同样,同一类型的多个处理器之间的顺序必须也得到保持,例如消息处理过程中,如果读写器对文本先进行加密,再进行压缩,在消息处理器配置中对文本进行原文恢复时必须保证上述过程的逆过程得以进行。
[0052] 图5是本发明方法中处理器对事件的处理过程示意图。流入模型的是底层向上层传输的基本RFID事件。整个事件处理模型中存在若干个处理器,处理器负责对基本RFID事件进行处理,以生成复杂事件提交给上层应用。每个处理器的输入为一个事件,输出也为一个事件,输出事件是经过处理器处理之后对输入事件的加工包装。在每个处理器的处理工程中,对输入的事件信息进行提取、处理和加工后,将生成针对于该事件的新信息,并由相应的事件处理器将新信息放入该事件对象对应的事件上下文中。经过管道中的所有处理器之后,将形成一个具有语义的高级事件上下文对象,将该对象作为高级事件传递给上层应用。
[0053] 在事件处理模型中,实现了事件过滤处理器,实现对事件的过滤功能,即保留符合需要的事件,去出不符合需要的事件。可以控制向上层报告的事件总量,以减轻系统的负载。图3或图5中事件处理器数目没有限制,可以根据需求在配置文件中动态地加载和卸载,以达到动态配置的效果。例如,事件处理器又可配置:分组处理器、语义处理器、过滤处理器和日志处理器等。
[0054] 每个事件对应的事件上下文设计成一个哈希表(键值对结构),在整个事件处理模型中,各个处理器就是在处理过程当中向事件上下文中插入新的键值对,对简单事件进行封装形成复杂事件。事件上下文结构的一个示例见表一所示。哈希表的键值可以重复,重复的键值应该被相应地覆盖掉。例如处理器一向上下文中插入了一个新键值,处理器二又插入了一个同名键值,此时系统认为处理器一插入的键值对已经处理完成,处理器二插入的同名键值可以取代以前的旧键值对。
[0055] 表一事件上下文哈希表
[0056]上下文键名称 类型 说明
TagID String 标签EPC码
ReaderID String 读写器ID
SourceName String 源名称
SourceProtocol String 源采用的协议
SourceFrequency String 源采用的频率
TagType String 标签类型
EventType String 事件类型,等于原始事件类型
RawReader ReaderType 原始读写器
RawEventType String 原始标签事件类型
LogicalReader String 逻辑读写器名称,等于原始读写器名称
[0057] 下面举一具体实例对本发明的来自标签的数据的整个处理过程进行说明。一结合具体数据的处理过程如下:
[0058] 1.读写器侦测到标签“09204F0004B00000”。
[0059] 2.由消息泵产生消息,格式如下:
[0060] Observation:
[0061] WrapperName:null
[0062] ReadPointName:Shelf1
[0063] Timestamp:Wed Apr 2916:59:22CST 2009
[0064] Tags:
[0065] 9204F0004B00000
[0066] Successful:true
[0067] 3.消息处理器对原始消息进行处理,如:压缩、加密等(具体的形式可根据实际需要进行配置)。
[0068] 4.生成DOM结构的通知对象,例如格式如下:
[0069] <?xml version=″1.0″encoding=″UTF-8″standalone=″yes″?>[0070] [0071] 2
[0072]
[0073] 9204F0004B00000
[0074] virtual reader2
[0075] 100
[0076] unknown
[0077]
[0078] NotificationTrigger[0079] NotificationChannel[0080]
[0081]
[0082]
[0083] ReaderProtocol:Default[0084] 0[0085] not supported[0086]
[0087]
[0088] 09204F0004B00000
[0089] urn:epc:raw:60.x9204F0004B00000[0090] urn:epc:raw:60.x9204F0004B00000[0091] not supported
[0092]
[0093] evObserved[0094]
[0095] ReadTrigger[0096]
[0097]
[0098] 1240995564343
[0099] 2009-04-29T16:59:24.343+08:00[0100]
[0101]
[0102]
[0103]
[0104]
[0105]
[0106] 5.各个报告处理器对通知对象进行处理,生成新的通知对象。
[0107] 6.对新的通知报告进行事件剥离,如将其中的Observed事件、Glimpsed事件等进行提取,并为每个事件生成一个事件上下文,其中包括事件类型、事件发生事件和事件发生地点等事件相关信息。
[0108] 7.根据不同的事件类型交给不同的事件处理器进行处理,并报告相关事件,如:
[0109] (virtual reader2)urn:epc:raw:60.x9204F0004B00000 evGlimpsed[0110] (virtual reader2)urn:epc:raw:60.x9204F0004B00000 evObserved[0111] 综上,本发明设计了基于管道流的事件处理模型,并可使用XML配置文件对读写器的连接,读取点的设置,以及各类消息处理器、报告处理器、事件处理器进行加载,从而对事件处理进行更为有效和灵活的配置,也为事件处理的扩展提供了接口。其中,处理器的设计和实现可以是将处器分类(例如,分为消息处理器、报告处理器和事件处理器)和并提供相应的抽象接口定义,具体实现的处理器按照所属类别实现相应类别的抽象接口。将系统中需要使用的处理器按处理顺序在配置文件中进行详细配置。系统运行时会根据配置文件顺序加载处理器,并以管道流的方式调用各个处理器,用相应的处理器顺序处理底层输入的RFID事件,每个处理器处理后的事件将流向配置文件中的下一个处理器进行相关处理。如果想要更改读写器的连接或增加或删除相应的处理器,只需要修改配置文件,修改相应连接属性或让配置文件增加或减少相应的处理器配置即可。该发明有效地解决了对于RFID事件处理的动态处理问题,通过实现需要的处理器并进行相应的配置,可以对于RFID事件进行进一步的处理,而不需要改变现有系统的架构。
[0112] 以上对本发明的描述是说明性的,而非限制性的,本专业技术人员理解,在权利要求限定的精神与范围之内可对其进行许多修改、变化或等效,但是它们都将落入本发明的保护范围内。