本发明要求以下在先申请的优先权:于2004年9月1日递交的美国专利临时申请第60/606,281号,题为“便于射频识别(RFID)服务器编程模型以及应用程序接口(API)的系统和方法”(SYSTEM AND METHODS THAT FACILITATE RFID SERVERPROGRAMMING MODEL AND API’S);于2004年9月2日递交的美国专利临时申请第60/606,577号,题为“便于射频识别(RFID)服务器编程模型以及应用程序接口(API)”(FACILITATE RFID SERVER PROGRAMMING MODEL AND API’S)。这些专利申请整体引用在此作为参考。
(5)具体实施方式
正如在此申请中所使用的,术语“组件”、“系统”和诸如此类旨在指代一个计算机相关实体、可以是硬件、软件(如,在执行中)、和/或固件。例如,组件可以是在处理器中运行的进程、处理器、对象、可执行代码、程序、和/或计算机。通过说明,在服务器上运行的程序和此服务器都可以是组件。一个或多个组件可以存在于一个进程内并且一个组件可以位于一台计算机和/或分布在两台或多台计算机中。
本发明参考附图进行描述,其中通篇使用相同的引用序号指代相同元素。在下文描述中,为了说明的目的,提出大量特定细节以提供一个对本发明透彻的了解。然而明显的是,本发明可能脱离这些特定细节而实现。在其他例子中,用方框图的形式示出了众所周知的结构和设备以便于描述本发明。
现在参见附图,图1示出了系统100,它通过产生和/或执行RFID商务处理便于实现RFID进程,其中RFID商务处理是商务处理定义,包括RFID事件的输入源、作用于事件的处理管线和存储处理最后结果的接收器(如,数据库接收器、文件接收器、WS接收器,等等,其中接收器是一个概念上的终点并且不同的此类终点可以根据用户的要求被实现和/或插入)。可以被理解的是RFID商务处理同样可以被认为和/或称为RFID进程。接收器组件102可以接收有关提供者104(如,提供的服务的设备提供商、EPC-G兼容提供者、所有权提供者、遗产提供者)的数据,其中RFID服务器组件106可以利用这些数据规范与提供者104相关的RFID处理引擎以提供RFID进程。另外,RFID提供者可以是协议翻译器和连接管理器,负责软件RFID系统和硬件设备之间的交互操作。RFID进程可以是,但不限于是,RFID设备服务、标签阅读、事件(以下讨论)、标签写、标签配置、地理追踪、数字计数,等等。
可以被理解的是RFID进程可以与属于提供者104中的单独提供者的设备相关联。例如,提供者104可以是多个为RFID设备提供服务的设备提供商(如,阅读器提供商)。在另一个例子中,RFID进程可被配置以消费事件形成设备集合以及零个或多个逆流RFID进程。这样,可以建立对事件操作的进程,并以管线的方式连续地加强它们。提供给RFID设备的服务允许功能包括,但不限于,标签阅读、标签写、追踪容量,等等。换句话说,在配置一个到RFID进程的输入中有着巨大的灵活性。
可以被理解的是,多个提供者可以结合本发明被利用。提供者104可以是,但不限于是,EPC-GLOBAL兼容提供者,所有权提供者、遗产提供者,其中每个提供者都被注册用于一个或多个相关设备。提供者104通常利用一个与提供者指定设备有关的特定指令集。例如,EPC-GLOBAL可以被联系到EPC-G设备,其中可以相应地建立和/或执行RFID进程;可以为注册用于自动识别设备的所有权提供者定制RFID进程;并且RFID进程可以特定为注册用于遗产设备的遗产提供者。
虽然接收器组件102被描述为单独的组件,可以被理解的是它可以另外在RFID服务器组件106中被实现以接收提供者的数据。接收到的提供者数据可以是,但不限于是,关联至少一个设备的特定提供者的数据、认证数据、设备数据、设备配置、标签阅读数据、标签写数据、唯一的标识、对提供者的描述、提供者的版本、等等。当从提供者104接收到数据后,接收器组件102可以提供这些数据给RFID服务器组件106,它允许提供者104中至少一个提供者采用至少一个RFID进程。虽然RFID服务器组件106和提供者104被描述为利用双向(全双工通信制)通信,可以被理解的是这些描述不是对本发明的限制。提供者104和RFID服务器组件106可以利用单向通信来便于交互。
例如,接收器组件102可以获取有关提供者104的数据,包括,但不限于,来自设备的RFID数据、设备配置数据、提供者相关数据,等等。接收器组件102可以向RFID服务器组件106传送接收到的和/或获取的数据,其中在RFID服务器组件106中可以建立至少一个RFID处理引擎用于为特定的提供者执行RFID进程。另外,提供者可以代表RFID服务器组件106和/或RFID进程提供与设备的通信。可以被理解的是,对一个特定的提供者可以采用多个RFID进程。另外,RFID服务器组件106可以应用一个进程或提供者104。例如,RFID服务器组件106可以提供涉及设备的N个进程给第一个提供者,涉及设备的M个进程给第二个提供者,涉及设备的0个进程给第三个提供者...其中N,M和0是等于或大于一的整数。可以被理解的是,本例使用三个提供者,但本发明在可以被提供给进程的提供者数目上不限于此。
除了提供RFID进程,RFID服务器组件106可以应用辅助这些RFID进程的产生和/或销售的功能。在收集来自接收器组件102的数据后,RFID服务器组件106可以提供对设备服务提供者的管理、借助接口的组件通信、设备管理、来自设备和/或设备管理器的事件管理、借助规则引擎的过滤和报警、RFID服务器管理、安全、数据存储、数据存储管理、记录容量...在RFID服务器组件106中,可以被理解的是接口提供了通信以利用多种功能。例如,为了在RFID服务器组件106中管理设备,可以使用一个设备管理组件。为了与DSPI提供者管理组件(没有在图中示出)通讯,展示了一个接口。此接口包括特定协议、适配器、操作法、等等,用于在DSPI提供者管理组件和设备管理组件之间通信。这样,通过利用特定的方法在组件之间通信,这些组件之间的依赖性被清楚地定义了。
图2示出了一个通过从设备分离一个物理事件的发生并消费它且在服务器应用层(如,逻辑处理层)执行,便于执行RFID进程的系统200,RFID服务器组件202可包括RFID引擎204,负责RFID事件处理。事件处理树(EPT)206可以为一个抽象概念,集合了所有逻辑实体如标签数据源(如,阅读器)、过滤器、规则、警报器、事件处理器、追踪选项、以及接收器。可以被理解的是前述可以共同定义一个RFID-使能的商务处理(同样涉及如RFID进程,和/或RFID商务处理)。
EPT206可包括至少一个或多个事件处理节点(EPN)208以及210,且它们在通信上耦合。可以被理解的是每个EPN可包括下述:事件源集合(如,用于以特定事件格式输入事件的事件源集合,其也可作为跨多源的事件集合器);过滤器(如,被使用以丢弃不需要的标签,丢弃是基于可去除在标签或一些逻辑内被EPN通过简单查找获知的部分的约束);警报器(如,对数据流进行评估并导致适当的警报器触发的用户定义的规则);转换器(如,可选的事件处理器,将标签数据转换为增值商务相关数据,这些输入事件和外部因素可被翻译后为更高序列的应用程序提供有用内容);和事件接收器或用于处理节点的输出。
可以被理解和认识的是,EPN208和EPN210是源、过滤器以及转换点的透明状态。事件源集合以及事件接收器被强力地测定类型。通明状态可提供对EPN的可选择性以及可判断和组合的安全性。过滤器和警报器是通过公布规则架构来定义的并且在一个内存中的规则引擎或一数据库上执行。这可提供管理上的敏捷性并也降低了由编译或配置引起的进程停滞期。
EPN208和210可被递归串联在一起成为一个N列树以形成EPT206。这可大致类似于在数据源集合之上带有的可选过滤器和可选转换步骤的相关数据库查询内的迭代器模型。此外,警报器是相关队列模型外的副作用。可以被理解和认识的是此结构和/或RFID服务器组件202可通过ISV’s和支持数个API’s,而SI’s可建立和配置EPT206。
此外,提供者212可将RFID事件从事件分发处放入队列214,并可以执行相应的事件处理树。EPT206可作为一次事务来执行除非另有规定,这样提供了对RFID事件的可信赖的非重复传递和处理。事务可包括事件从分发队列出列、通过多种的EPN’S处理并将处理过的事件最后放入接收器中。自定的警报器、过滤器和转换可以加入到事务中。并可以支持批处理事件。例如,事件可以在队列214中累积并在事务批中以规定时间间隔处理。执行引擎同样被测量以基于至少一部分在EPT206中建立的追踪选项记录任何必要的追踪数据。可以被理解的是EPN208的执行可以是变化的。在一例中,EPN208通过调用商务规则引擎(BRE)来执行。过滤器、警报器和转换是借助规则引擎(RE)政策串联在一起的组件。然而,由于靠近数据,可在数据库内执行EPN’s以降低跨进程的绕行。
此外,通过利用本发明,可以使用基于应用程序特定约束的灵活配置。通过分离逻辑事件处理将其绑定至处理节点,达到灵活的配置。EPT206是对事件处理的逻辑描述。其物理证明借助绑定过程在配置时完成。EPT206被表示为持续的形式,如一个定义明确的XML,其事件源是非示例的。同样地,可以有物理设备拓补(如,一列设备以及它们的配置-包括自动发现的或手动创建的)的XML表示。绑定过程可允许管理员从设备拓补中分配特定设备给EPT206中特定源。需要强调的和理解的是逻辑和物理表示法的分离是重要的,因为(1)使能一次写入的独立软件供应商(ISV)模型,其中相同的逻辑EPT可以结合不同的阅读器拓补被配置在不同的环境中;(2)提供了在配置时基于阅读器能力的网络动态最优化。例如,如果设备有能力在源中过滤事件,一个低过滤器可被推入设备这样就减轻网络带宽。
图3示出了一个便于执行RFID进程的系统300,它通过使用RFID处理引擎来向注册在设备的提供者提供这些RFID进程。RFID服务器组件302可被利用来执行RFID进程。RFID服务器组件302可以是,但不限于是,大致上类似于图2和图1中相应的RFID服务器组件202和RFID服务器组件102。此外,RFID服务器组件302可利用一个接收器组件(没有示出)来获取和/或接收数据以使用至少一个RFID进程。RFID服务器组件302可提供多种功能。可以被理解的是,关于这些功能的通信由接口实现。这些接口提供了RFID服务器组件302中组件间的通信,RFID服务器组件302提供诸如,但不限于,用于设备服务提供者的管理、借助接口的组件通信、设备管理、来自设备和/或设备管理器的事件管理、警报器、RFID服务器管理、安全、数据存储、数据存储管理、和/或记录容量。
RFID服务器组件302可进一步包括DSPI提供者管理器组件304,后者提供至少一个DSPI组件(没有示出)间的管理和协调,那些组件可大治上类似于图2中所示的DSPI组件204。DSPI提供者管理器组件304执行预预订/或解除预订的功能。对提供者的注册和/或解除注册功能用DSPI提供者管理器组件304管理。例如,EPC提供者可以使用RFID服务器组件302注册,为了执行RFID进程。特别地,RFID服务器组件302可以达到与EPC兼容设备通信、控制、设置、和/或管理的功能。可以被理解的是,任何提供者和相关设备可以利用DSPI提供者管理组件304的注册和/或解除注册,其中EPC提供者仅仅是一个例子且不限于此。
例如,DSPI提供者管理器组件304可以执行对象模型中的特定接口(如,IDriverManager接口)来为提供者使用注册和/或解除注册功能。此外,DSPI提供者管理器组件304可以载入和/或卸载至少一个注册过的驱动器。这个载入和/或卸载可以通过展现一个接口(如,IProviderFactory接口)来执行。可以被理解的是载卸驱动器前,DSPI提供者管理器组件304可确保没有开启的设备从这个特定提供者(如,将要被卸载的驱动器的提供者)建立。此外,与提供者(如,设备管理器组件、事件路由引擎、以下都会讨论)交互和/或通信的组件利用接口来载入和/或卸载驱动器(如,IProviderFactory接口),后者包括适当的通信方法。
注册后,DSPI提供者管理器组件304可以进一步在启动阶段创建至少一个提供者以发现新的设备。例如,可使用下述伪代码来创建一个注册过的提供者并在特定提供者中发现设备:
interface IproviderFactory{
IProvider GetProvider(string ProviderId);
//
Void AddRefProvider(string ProviderId);
Void ReleaseProvider(string ProviderId);
Void addDiscoveryEventListener(DiscoveryEventHandler
discoveryEventHandler);//discovery event handler
}
可以被理解的是,前述代码变量引用为示例,且这些变量引用不限于本发明(如,IProviderFactory,ProviderId...)。
图4示出了一个便于为注册在提供者的设备执行RFID进程的系统400。RFID服务器组件402可提供RFID进程的执行。可以被理解的是,RFID服务器组件402可大致上类似于图3中的RFID服务器组件302,其中功能和/或特性结合在此。为了建立和/或执行RFID进程,接收器组件(没有示出)可以拦截、获取、接收、传送和/或传输涉及至少一个同至少一个设备注册过的提供者的数据,其中设备可以是,但不限于是,RFID设备、传感器、网页服务...此外,RFID服务器组件402可利用至少一个组件执行多种功能,其中组件通过相应的接口通讯。
RFID服务器组件402可进一步包括处理管理器组件404,它可包括RFID处理引擎406。虽然处理管理器组件404被描述为包括单个RFID处理引擎406,可以被理解的是,多个RFID处理引擎406可以被一个处理管理器组件包括。此外,处理管理器组件404为这些RFID处理引擎406提供管理。此外,处理管理器组件404可执行接口;类(如,IProcessManager类),通过它可启动和/或终止RFID进程(如,开始和/或停止)。
RFID处理引擎406是为了每个由处理管理器组件404开始的RFID进程而建立的。建立后,RFID处理引擎406执行RFID进程。此执行可包括涉及安全的确认和/或认证、从存储器载入RFID进程、使用设备建立通信、配置设备、预订事件、使用事件路由引擎、事件发生后将其传递至合适和组件、和/或解释逻辑源和相关执行流。
例如,RFID处理引擎406可以在过滤器、警报器、事件处理器等之间制作必要的连接。可以被理解的是这可被表示为静态数据结构。如果逻辑源(如LS1)含有一个阅读器(如D1)以及过滤器(如F1)和事件处理器(如EH1)并结合到一个更大的逻辑数据源(如LS2),数据结构将会含有从R1到F1,从F1到EH1,然后到LS2的引用(指针)。结构包括发自每个设备的事件流。逻辑源可为一个RFID进程中的主要活动实体,其可以包括其他组件和/或将它们逻辑连接。每个逻辑源包括一组过滤器、一组警报器和一个事件处理器。它包括一组用于将标签阅读事件加入逻辑源的源。它包括一个单独的输出点,其被定义为最后一个组件的输出。每个逻辑源同样是在逻辑源树中的一个节点,它的源作为子节点并且它的输出的消费者作为父节点。过滤器是一个执行在原始数据流的逻辑结构,过滤器可基于特定的约束(如,货盘、场合、条款...)丢弃不要的标签阅读和或允许特定的标签阅读。警报器是一个更一般的机制以表示可对数据流评估的简单规则。警报器可被表示为一组组合为政策的逻辑规则,并且可对包括标签阅读事件的多个事件评估。这些规则的操作通常执行一个或多个用户定义/警报器。例如,如果一个标签阅读是由逻辑源注册在晚上6点至早晨6点,即发生警铃并通过信息警告大楼管理器。警报器也是可选结构。可以被理解的是任何合适的编程语言可被执行来利用这些逻辑源如,但不限于,C,C++,C#,HTML,HXML,等等。下述伪代码是一个可扩展标记语言(XML)示例,可被利用来表示逻辑源:
<xs:complexType name=″LogicalSource″>
<xs:sequence>
<xs:element minOccurs=″0″maxOccurs=″1″name=″LogicalSourceList″
type=″ArrayOfLogicalSource″/>
<xs:element minOccurs=″0″maxOccurs=″1″
name=″deviceCollectionList″type=″ArrayOfReaderCollection″/>
<xs:element minOccurs=″0″maxOccurs=″1″name=″componentList″
type=″ArrayOfChoice l″/>
</xs:sequence>
</xs:complexType>
此外,每个RFID处理引擎406可利用一个队列(没有示出)。此队列可被关联到RFID处理引擎406,提供所有要被事件路由引擎发送的相关事件。如下文专门详细描述,可以被理解的是事件队列是被从逻辑处理管线(如,含有逻辑处理的物理设备通信层)分离出的。
队列为每个设备保持了一个逻辑源列表,并拥有一个与其关联的线程池。池内线程的数量至少基于RFID进程的要求来配置。此外,一个分离线程可监控处理引擎队列。可以被理解的是任何合适的代码可被利用来执行前述情况,虽然下述伪代码示例为XML。下述代码可被执行来利用一个算法,其中分离线程监控处理引擎队列:
do forever{
wait on Process Engine Q;
onevent,check the device that the event is from;
foreach logical source that the device is part of
{
Wait till a thread is free in the thread pool;
Start the thread and give it the event to handle and the logical
source to start from;
}
}
此外,可在线程池中使用一个工作者线程,其中每个线程池可执行下述算法:
nextlink=logicalsource.firstlink;
while(nextlink!=null){
if the nextlink is a logical source
nextlink=logicalsource.nextlink;continue;
Ifthe link is a filter
{
execute it.
If the filter decides to pass
nextklink=nextlink.nextlink;
else nextlink=null;continue;
}
If the link is an alert,pass the event to the general purpose rules engine;
If the link is an event handler invoke the right event.This event might result in
Invoking the event of the next event handler in the event handler chain.
Nextlink=nextlink.nextlink;
}
可以被理解的是为用于每个RFID进程而建立的RFID处理引擎406可以被执行在多个机器上,其中这些机器是一起的,分离的和/或它们组合。本发明不限于执行建立的涉及RFID进程的RFID处理引擎406的机器数量。此外,RFID处理引擎406与RFID服务器组件402之间的通信为接收自信息队列中心的事件。这样,RFID处理引擎406可从任何位置访问信息队列中心。
另外,如下文所描述和示出的,可以修改交互操作以发布此结构。这可以通过允许展开RFID进程如网页服务来完成,这结合了服务体系结构(SOA)方法和电子设计自动化(EDA)方法。这可使能一个用于处理的分布式的,可堆叠的方法,其中终点可为一个接收器或其他进程。
处理管理器组件404可进一步包括一个规则引擎408。规则引擎可为一个用于RFID服务器组件402的通用规则引擎,它提供,例如,过滤和警报器。RFID服务器组件402中的警报器可被同步和/或异步地执行。换句话说,调用警报器的线程不被要求等待直到线程完成。工作者线程可将一个事件传递至规则引擎408并进行处理下一个链接。规则引擎408可拥有一个与其关联的线程池。此外,这个池可以被设置来包含一个或多个附加的线程。
RFID服务器组件402可进一步包括一个服务器管理器组件410。服务器管理器组件410为RFID服务器组件402提供管理类的功能。换句话说,服务器管理器组件410负责初始化RFID服务器组件402和多种提供其他功能的其他组件。服务器管理器组件410可进一步控制RFID服务器组件402的生命周期。此外,服务器管理器组件410可提供一个或多个命令集合诸如,但不限于,系统识别、因特网协议(IP)监控、动态主机设置协议(DHCP)监控、网络接口监控、设备特性监控、逻辑源监控、阅读器点(如,物理数据源)监控、RF天线监控、IO端口监控、事件通知(如,警报器)、混杂组件监控,等等。为了通讯,服务器管理器组件410可利用一个接口(如,就象RFID服务器组件402中任何组件做的那样)。此接口(如,服务控制管理器接口)允许RFID服务器组件402被启动和/终止如,例如,操作系统服务。可以被理解的是,服务器管理器组件410可利用和/或支持这样的兼容于RFID服务器组件402的接口和其中的任何组件。例如,ILifeCycle接口可以被利用来控制建立和破坏。这样,服务器管理器组件410可为一个RFID服务器组件402的引导组件,以要求的顺序建立所有其他组件。
例如,在操作系统服务启动时,服务管理器组件410可以按正确的顺序创建所有管理器组件。这样,如果一个设备管理器组件要求一个DSPI管理器组件,服务器管理器组件410可优先创建DSPI管理器组件并随后向设备管理器组件传递一个指向DSPI管理器组件的引用指针。服务器管理器组件410可判断一个组件的必要性,并创建此指针。此外,服务器管理器组件410可在操作系统服务关闭时关闭组件。继续前例,当操作系统服务关闭时,服务器管理器组件410结束(如,关闭)设备管理器组件、DSPI管理器组件、和任何其他组件、管理器和/或存储器。
另外,RFID服务器组件402可包括一个设备管理器组件412。设备管理器组件412可与至少一个已注册的提供者协同工作,以管理任何或全部RFID服务器组件正在使用的设备(如,阅读器、写入器...)。可以被理解的是可以注册超过一个提供者,其中相应的提供者可包含设备,这提供给RFID服务器组件402多个设备以供管理。对这些设备的管理可包括,但不限于,向用于RFID进程的设备打开连接、端口,等等以启动、向对RFID进程开启的设备保持连接、当一个要求的设备故障时,尝试重建连接、如果设备连接不能被重建则发出设备故障事件、连接到已发现的(如,手动重启动、修复并重连接、等等)已配置的设备并发出设备起用事件、选择设备重新连接(如,当一个打开的设备故障后且提供者不支持寻找)、存储表示开启的设备对象(如,可直接同设备利用这些对象来发送命令、交易,等等)、处理同步设备调用...
设备管理器组件412可以使用接口来为其他组件提供通信。例如,用于设备管理器组件的IdiscoveryManager接口可提取计划处理组件(没有示出)和设备管理器组件412之间的通信。例如,下述基于XML的代码表示了此接口的应用:
interface IdiscoveryManager{
bool Is Valid Device(string deviceIdXml);
}
此外,RFID处理引擎406可利用下述接口同设备管理器组件412通讯。例如,当一个RFID进程开始时,相关联的RFID处理引擎406访问任何或全部有关的(如,影响到的)设备上的方法。如下述代码所描述的,这样一个执行上述的方法可被利用:
interface IRMPE{
void AddrefDevice(string DeviceIdXml);
void ReleaseDevice(string DeviceIdXml)
}
当RFID进程停止时,使用一个方法来释放设备(如,此方法用指针ReleaseDevice表示)。可以被理解的是只要出现至少一个指向设备的指针,设备管理器组件412可保持相一致的连接。此外,设备管理器组件412可利用一个接口(如,IProvider接口),它展现了涉及DSPI组件(如,类似图2中的DSPI组件204)的ISPI接口的子集。设备管理器组件412可建立设备并通过检验认证序列检查设备的有效性。此外,可以被理解的是设备管理器组件412不必调用ISPI接口上的所有方法,这样不必在ISPI上展现所有的方法。下述XML代码是一个执行了前述的例子:
Interface IProvider{
IDevice GetDevice(string deviceldXml);
bool Is Valid Device(string deviceIdXml);
}
RFID服务器组件402可进一步提供事件路由引擎(ERE)组件414。ERE组件414可处理从设备和设备管理器组件412发出的事件。事件可以是,但不限于是,标签阅读事件、标签读/写错误、设备起用/故障事件,等等。RFID服务器组件402中的利用事件的组件可由ERE组件414来预订这些事件。此外,ERE组件414管理和/或处理对任何预订者(如,使用预订事件的任何组件)的事件的传递。例如,RFID处理引擎406是一个至少基于上述功能的事件的预订。此外,可以被理解的是ERE组件414没有添加一个指向提供者的引用指针,但利用了接口中的一个方法(如,addDiscoveryEventListener)来向提供者注册自身。
ERE组件414可使用一个接口(如,IDeviceEventSubscriber接口)来注册一个给标签阅读事件和诸如设备健康事件的设备管理事件的回叫,一个回叫处理器(没有示出)可将一个事件写入信息队列中心。一个新的事件可以在队列(如,CommonQ)中。另一个线程将它写入数据存储器(没有示出)并可基于至少下述情况将该事件发送给另一个信息队列中心:发现事件被发送到发现队列(如,DiscoveryQ);对每个RFID处理引擎406存在一个队列诸如,但不限于,设备关联事件(如,标签阅读、管理事件、和健康事件)被发送到相关的RFID处理引擎队列;...可以被认识的是ERE组件414可保持一个设备到RFID处理引擎映射的表格。此外,可以被理解的是超过一个RFID处理引擎可利用一个设备。
按照本发明一个方面,在来自提供者的事件被发送到RFID处理引擎406前,队列(如,CommonQ)可产生类似缓冲器的效果。设备和/或提供者可产生类似事件生产者的效果,此时RFID处理引擎406可为此类事件的消费者。这个方法提供的优点诸如,但不限于,RFID处理引擎可运行发生例外的用户代码,其中用户代码可用下一个类似输入的事件重新启动;对事件的监听(如,由每个设备)和事件处理可以不同的速率发生,等等。
ERE组件414可利用下述XML代码来执行与RFID服务器组件402和/或其他组件通信的接口:
interface IEventRoutingEngine{
void SubscribeToDeviceEvents(string[]deviceIds,string queueName);//each
RFID process engine will call this
void SubscribeToDiscoverEvents(string discoveryQueueName);//the design
handler component calls this
}
//此预订者获得了直接来自提供者的标签阅读事件以及由设备管理器组件
//产生的设备管理事件
interface IdeviceEventSubscriber{
ResponseEvent getEventHandler();
)
可以被理解的是上述代码示例仅仅是一个示例且本发明不限于此。
图5示出了系统500,它便于执行RFID服务器组件502以向用至少一个设备注册的提供者提供RFID进程,设备诸如,但不限于,RFID设备、传感器、实时事件发生系统、网页服务...RFID服务器组件502可被考虑为大致上类似于图1、图2、图3、图4中所示的RFID服务器组件。前述的功能符合于RFID服务器组件502(如,涉及通信的接口实现、组件功能容量、使用RFID进程...)
RFID服务器组件502包括安全管理器组件504,它为RFID服务器组件502提供授权和/或确认。为了将一个授权过程合并入RFID服务器组件502,安全管理器组件504可为RFID服务器组件502中的组件提供可用的类和/或方法以便于控制授权和/或可接入性。
参照示例,安全管理器组件504可在执行RFID进程前检查一个用户许可级。如果用户拥有合适的许可级,RFID进程可以被执行。然而,如果用户没有要求的许可级,RFID进程会不允许RFID进程的执行。此外,安全管理器组件504可在存储器内建立关于对象的许可(下文讨论)。特别地,安全管理器组件504可在存储器内授权和/或取消授权一个对象操作。操作可以是,但不限于,对一个对象的添加、修改、删除、配置,等等。
RFID服务器组件502可包括一个发现设备和/或与其关联的属性的设计处理组件506。可展现一个接口(如,IDeviceHandler接口)通过利用下述代码提供此类方法和/或技术。
public enum DiscoverOptions{ALL=0,NON_CONFIGURED DEVICES}
public interface IDeviceHandler{
string[]FindDevices(DiscoveryOptions discoveryOptions);
string GetSupportedProperties(string deviceId);
bool IsValidId(string DeviceId);
}
上述代码是基于XML,然而可以被理解的是任何合适的计算机可编程语言(C,Visual Basic,Assembly,Pascal,...)可被本发明执行并且不能被认为是一个局限。上述XML代码可返回一个允许这些设备连接的设备ID列表。设备可被过滤(如,利用″DiscoverOptions enum″)。此外,代码可返回一个对应于带有设备ID的设备的设备支持属性的列表,其中返回值是一个符合属性文件的XML串。可以被理解的是设备属性对于所发现的设备ID是特定的。代码判断ID是否表示一个有效设备(如,可连接的设备)。例如,如果设备离线、故障、没有被预订、没有被授权,等等,此设备可以是非有效的。
特别地,设计处理器组件506可提供下述:监听设备发现代理(如,ERE组件中的DiscoveryQ);设备发现代理的集合;判断设备有效和/或移除故障设备(如,利用方法,如类似IsValidDevice());通过与存储器通信返回没有配置的设备和/或移除已配置设备;等等。例如,设计处理器组件506可发现一设备,如RFID设备,其中此RFID设备包含与其关联的特定属性。除了设备的发现外,设计处理器组件506可发现与已发现设备有关的特定属性。
RFID服务器组件502可进一步包括数据存储器508和/或进程存储器510。数据存储器508可保持和/或存储事件。特别地,事件如下,但不限于此,标签阅读事件、标签读/写错误、设备启用/故障事件,等等。可以被理解的是数据存储器508可被利用来提供用于报告和/或提供原始数据流(如,为用于插入功能的外部应用程序)的记录。此外,数据存储器508可被至少基于数据寿命的周期性更新和/或清理。
进程存储器510可保持和/或存储RFID进程对象和/或涉及它的相关对象。这些相关对象可以是,但不限于是,设备和/或设备集合(如,阅读器和阅读器集合)。此外进程存储器510包括与这些存储的/保持的对象有关的授权信息。可以被理解的是任何支持接口(如,IStore接口)持续机制可以是一个进程存储器。另外,在进程存储器510中的对象可通过利用已定义的对象模型来阅读和/或操作(如,其中对象模型不被任何服务器中的组件所保存并且是一个独立的集合,可被一个或多个用户同时使用)。
可以被理解的是数据存储器508和/或进程存储器510可位于RFID服务器组件502内和/或位于远程服务器/位置。数据存储器508和/或进程存储器510可以是,例如,易失存储器或非易失存储器、或可包括易失和非易失存储器。作为说明,但不限于,非易失存储器可包括只读存储器(ROM),可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、或闪速存储器。易失存储器可包括作为外部高速缓冲存储器的随机存储器(RAM)。作为说明但不限于,RAM可用于多种形式诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍速率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步连接DRAM(SLDRAM)、Rambus直接RAM(RDRAM)、直接Rambus动态RAM(DRDRAM)、以及Rambus动态RAM(RDRAM)。本系统和方法的数据存储器508和/或进程存储器510旨在包括,但不限于,这些以及任何其他合适种类的存储器。
存储器管理器组件412可管理和/或处理到至少一个数据存储器508和进程存储器510的连通性。存储管理器组件512可作为围绕每个存储器的包装。此外,存储管理器组件512可保证到每个存储器的连接是可用的。同样可以被理解和了解的是,数据存储器508和进程存储器510之间的存储活动是通过存储管理器组件512来发送的。
图6示出了一个使用智能(如,机器学习)来便于实现RFID服务器组件602的系统600。系统600包括RFID服务器组件602,它可为提供者604提供RFID进程。RFID服务器组件602可接收涉及至少一个提供者的数据,其中这些数据便于对特定提供者使用RFID进程。此外,RFID服务器组件602可调用一个智能组件606以便于使用这些RFID进程。当接收到涉及特定提供者的数据后,智能组件606可便于对这些提供者使用RFID进程。可以被理解的是虽然智能组件606被图示为在RFID服务器组件602中,智能组件606不限于此。换句话说,智能组件606可被合并到RFID服务器组件602、任何RFID服务器组件602的组件、独立的单元、和/或任何它们的组合。
可以被理解的是智能组件606可从一组通过事件和/或数据获取的观察中提供对系统状态、环境、和/或用户的思考和推理。推论可被使用来辨认特定内容或行为,或例如可产生状态的概率分布。推论可以是概率性的——即有关状态的概率分布的计算是基于对数据和事件的考虑。推论也可涉及到用于从一组事件和/或数据组成更高级别事件的技术。这些推论导致从观察得的事件和/或存储的事件数据中新事件或行为的构建、不论事件是否是紧密的时间接近相关的、以及事件和数据是否来自一个或多个事件或数据源。多种类别(直接和/或间接连续)方案和/或系统(如,支持向量机、神经网络、专家系统、贝叶斯网络、模糊逻辑、数据融合引擎...)可结合执行自动化和/或与本发明有关的推断行为被使用。此外,可以被理解的是结合本发明作为的推论可以是通过基于规则引擎的推论。
图7示出了一个结合一个DSPI管理器组件706,便于利用RFID服务器组件702为多个设备和相关提供者提供统一的通信和管理器的系统700。提供者704可包括多个提供者,诸如EPC-G兼容提供者708、第一所有权提供者710、第二所有权提供者712。可以被理解的是提供者704使能对相关设备的服务。例如,EPC-G兼容提供者708可关联于EPC-GLOBAL设备714、第一所有权提供者710可关联于第一遗产设备716、第二所有权提供者712可关联于第二遗产设备718。可以被理解的是,DSPI管理器组件706通过DSPI组件(没有示出)与用于相关设备(如,EPC-全球兼容设备714、第一遗产设备716、第二遗产设备718)现有的提供者704中的一个进行交互。DSPI组件(没有示出)提供了统一的方式,其中提供者704为中间件产品提供服务,类似每个设备支持一个不同的命令组。换句话说,DSPI组件(没有示出)定义了用于设备供应商(如,以及相关设备)的接口以统一地为RFID服务器组件702提供服务。
图8-10示出了根据本发明的操作法。为了说明的简便,用一系列动作来图示和描述操作法。可以被理解和了解的是本发明不限于所示出的动作和/或动作的次序,例如动作可以发生在不同的次序和/或同时发生,并且同没有在这里表示和描述出的动作一起。此外,不是所有示出的动作对实现根据本发明的操作法是必须的。此外,本领域熟练技术人员可以理解和了解此操作法可有另选地通过一个状态图或事件被表示为一系列相互关联的状态。
图8示出了一个便于实现允许一个为至少一个提供者执行RFID进程的RFID服务器组件的操作法800。在引用序号802,RFID服务器启动。通过一个提供位于或关联于RFID服务器的组件的创建和/或破坏的RFID服务器管理器组件可实现RFID服务器。换句话说,服务器管理器组件是一个以要求的次序建立任何组件的引导程序组件。在一个例子中,结合一个操作系统服务的开启和关闭,RFID服务器可被开启和关闭。接着,在引用序号804,提供者被注册和/或取消注册。为了执行一个RFID进程,提供者(在其之上执行进程)向RFID服务器注册。除了注册活动,驱动程序被载入和/或卸载至服务器。可以被理解和了解的是一个提供者必须被注册以便这些提供者内包含的设备可被利用。
下面,在806,至少基于这些包含在已注册的提供者内的设备来管理设备。提供者可涉及到一特殊设备,诸如,但不限于,带有相关配置设置的RFID设备。这些设备的管理可包括,但不限于,连接保持、设备可用、发现、设备对象管理、同步调用管理,等等。在引用序号808,事件被处理。事件发出自设备(如,RFID阅读器、RFID写入器、传感器...)和设备管理器组件。这些事件可以是,但不限于,标签阅读、标签读/写错误、设备启用/故障事件,等等。对这些事件的处理可包括,但不限于,预订事件、将事件传递给预订者、将事件写入信息队列中心,等等。在引用序号810,由一个用于至少一个涉及设备的提供者的处理引擎创建和执行一个RFID进程。可以被理解的是对于一个单个提供者存在多个RFID进程,并且存在多个提供者对应于一个单个RFID服务器组件。
图9示出了便于使用结合一个基于标签的流利用RFID处理引擎的RFID进程的操作法900。可以被理解的是操作法900为每个RFID处理引擎利用了一组线程,其中每个线程完成的工作大致上类似于下述讨论。在902,判断出一个阅读事件。例如,一个阅读事件可被从一个队列(如,一RFID处理引擎队列)中选出。在引用序号904,利用一个包含设备的逻辑源。线程可以通过可包含创建类似事件的设备的逻辑源。接下来到906,线程通过过滤器队列。继续到908,如当通过过滤器队列时,一个过滤器阻挡了事件,进程继续到902,如果没有过滤器阻挡事件,进程继续至910。在引用序号910,事件被送到警报器。当事件被送到警报器时,警报器可同步和/或异步按照事件运行。在912,线程通过事件处理器序列,其中最后的事件处理器的输出事件是逻辑源的输出。如果在引用序号914,一个逻辑源是在线程刚通过的逻辑源内的,那么线程继续到906。如果没有逻辑源在当前逻辑源,那么在916,事件被送给接收器。
图10示出了便于使用结合一个基于逻辑源流(如,管线流)使用RFID处理引擎RFID进程的操作法1000。可以被理解的是在操作法1000中,每个逻辑源是一个活动实体且每个步骤被重复完成。从引用序号1002开始,利用一个来自诸如,但不限于,工作项目队列的事件地址。接下来到1004,事件被传送通过一个过滤器序列。如果一个过滤器在1006阻挡了事件,方法继续到1002。如果没有过滤器阻挡事件,进程继续到1008,在那里事件被送到规则引擎。规则引擎可非同时按照事件运行。在引用序号1010,事件被送到事件处理引擎,其中可非同时按照事件运行。接下来在1014,作出一个判断,此逻辑源是否是根逻辑源。如果不是根逻辑源,进程继续到1002。如果逻辑源是根逻辑源,事件在1016被送到接收器。可以被理解的是事件处理引擎可处理接收到的事件并将相关输出传输给位于父逻辑源的逻辑源队列(如,工作项目队列)。
为了提供用于实现本发明各种方面的附加环境,图11-12以及下述讨论旨在提供一个简要的、常规的对一个合适的计算环境的描述,其中本发明的各种方面可被实现。虽然已经以运行在本地计算机和/或远程计算机上的计算机程序中的计算机可执行指令的常规内容在环境中描述了本发明,本领域的熟练技术人员会认识到本发明也可结合其他程序模块来实现。通常地,程序模块包括执行特定任务和/或执行特定抽象数据类型的例程、程序、组件、数据结构,等等。
此外,本领域熟练技术人员会理解本发明方法可适用于其他计算机系统配置,包括单处理器或多处理器系统、微计算机、大型计算机、以及个人计算机、手持计算设备、基于微处理器和/或可编程消费品电器、以及诸如此类,其中的每一个在操作上与一个或多个相关联的设备通信。本发明所示方面可同样适用于分布式计算环境,其中某些任务被通过通信网络连接的远程处理设备执行。然而,一些,但不全是,本发明的方面可被适用于独立计算机。在一个分布式计算环境中,程序模块可位于本地和/或远程存储设备中。
图11是本发明可与之交互的示例计算环境1100的原理框图。系统1100包括一个或多个客户机1110。客户机1110可为硬件和/或软件(如,线程、进程、计算设备)。系统1100也包括一个或多个服务器1120。服务器1120可为硬件和/或软件(如,线程、进程、计算设备)。例如,服务器1120可安置线程以通过运用本发明执行转换。
一个可能的客户机1110和服务器1120之间的通信可为适于在两个或多个计算机进程间传输的数据包的形式。系统1100包括通信架构1140,它可运用来便于客户机1110和服务器1120之间的通信。客户机1110可在操作上连接到一个或多个客户机数据存储器1150,它可被用于为客户机1110在本地存储信息。类似地,服务器1120在操作上连接到一个或多个服务器数据存储器1130,它可被用于为服务器1140在本地存储信息。
参考图12,一个用于实现本发明多个方面的示例性的环境1200包括计算机1212。计算机1212包括一处理单元1214、一系统存储器1216、以及一系统总线1218。系统总线1218将系统组件包括,但不限于,系统存储器1216连接至处理单元1214。处理单元1214可为任何种类的可用处理器。双微处理器和其他多处理器体系结构也可被使用,类似于处理单元1214。
系统总线1218可为多种总线结构的任何一种,包括存储器总线或存储器控制器、外围设备总线或外部总线、和/或使用多种可用总线结构的任何一种局域总线包括,但不限于,工业标准结构(ISA)、微信道体系结构(MSA)、扩展ISA(EISA)、智能驱动电子电路(IDE)、VESA本地总线(VLB)、外围部件互连(PCI)、卡片总线、通用串行总线(USB)、高级图像端口(AGP)、个人计算机存储器卡片国际协会总线(PCMCIA)、火线(IEEE 1394)、以及小型计算机系统接口(SCSI)。
系统存储器1216包括易失存储器1220以及非易失存储器1222。在非易失存储器1222中存储了基本输入/输出系统(BIOS),包括诸如在启动时在计算机1212内各元件之间传输信息的基本例程。作为说明,但不限于此,非易示存储器1222可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、或闪速存储器。易失存储器可包括作为外部高速缓冲存储器的随机存储器(RAM)。作为说明但不限于此,RAM可用于多种形式诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍速率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步连接DRAM(SLDRAM)、Rambus直接RAM(RDRAM)、直接Rambus动态RAM(DRDRAM)、以及Rambus动态RAM(RDRAM)。
计算机1212也包括可移动/不可移动、易失/非易失计算机存储介质。图12示出一例磁盘存储器1224。磁盘存储器1224包括,但不限于,下列设备诸如磁盘驱动器、软盘起动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、闪速存储卡、或存储棒。此外,磁盘存储器1224可包括与其他存储器介质分离或结合的存储器介质,包括,但不限于,光盘驱动器诸如高密度光盘ROM设备(CD-ROM)、CD可录驱动器(CD-R Drive)、CD可擦写驱动器(CD-RWDrive)或数字式通用光盘ROM驱动器(DVD-ROM)。为了便于磁盘存储器1224至系统总线1218的连接,通常使用一可移动或不可移动的接口,如接口1226。
可以被理解的是图12描述了软件,作为用户以及在适宜操作环境1200中描述过的基本计算机资源之间的中介。此类软件包括操作系统1228。操作系统1228,可被存储在磁盘存储器1224中,起着控制和分配计算机系统1212资源的作用。系统应用程序1230通过存储在系统存储器1216或磁盘存储器1224上的程序模块1232以及程序数据1234,利用操作系统1228对资源的管理。可以被理解的是本发明可用多种操作系统或操作系统的组合来实现。
用户通过设备1236向计算机1212键入命令或信息。输入设备1236包括,但不限于,诸如鼠标的定位设备、轨迹球、手写笔、触摸屏、键盘、麦克风、摇杆、游戏控制器、卫星天线、扫描仪、电视转换卡、数码相机、数字式录像机、网络照相机、以及诸如此类。这些以及其他输入设备通过系统总线1218借助接口端口1238连接到处理单元1214。接口端口1238包括,例如,串行口、并行口、游戏端口、以及通用串行总线(USB)。输出设备1240使用一些与输入设备一样类型的端口。这样,例如,一USB端口可被使用来提供向计算机1212的输入,以及从计算机1212向输出设备1240输出信息。输出适配器1242被提供来表示一些输出设备1240诸如显示器、扬声器、以及打印机,同其他输出设备1240相比,需要特殊的适配器。输出适配器1242包括,作为说明但不限于,提供输出设备1240以及系统总线1218之间连接装置的视频及音频卡。需要注意的是其他一些设备和/或设备系统提供输入和输出能力,如远程计算机1244。
计算机1212可运作在使用逻辑连接到一个或多个远程计算机,诸如远程计算机1244的网络化的环境中。远程计算机1244可为个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的电器、对等设备或其他公共网络节点以及诸如此类,并通常包括许多或所有被描述为与计算机1212有关的元件。为了简短,只结合远程计算机1244示出了一个内存存储器1246。远程计算机1244通过网络接口1248逻辑连接到计算机1212并且物理上连接到通信连接器1250。网络接口1248包括了有线和/或无线通信网络诸如局域网(LAN)以及广域网(WAN)。LAN技术包括光纤分布式数据接口(FDDI)、铜分布式数据接口(CDDI)、以太网、令牌环以及诸如此类。WAN技术包括,但不限于,点对点链接、电路交换网络类似综合服务数字网络(ISDN)以及其变形,包交换网络、以及数字用户链接(DSL)。
通信连接器1250指的是被使用来将网络接口1248连接到总线1218的硬件/软件。通信连接器1250为了说明清楚起见被显示为在计算机1212中,他同样可在计算机1212外部。对连接到网络接口1248必要的硬件/软件包括,仅为示例用途,内部及外部技术诸如,调制解调器包括常规电话级调制解调器、电缆调制解调器以及DSL调制解调器、ISDN适配器、以及以太网网卡。
以上所述包括本发明的诸多示例。当然,为描述本发明而对每一能想到的组件或方法组合进行描述是不可能的,但本领域普通技术人员明白本发明的更多组合和变更是可能的。因此,本发明旨在包含所有这样的在所附权利要求书精神和范围内的变更、修改、和变化。
特别地并对于由上述组件、装置、电路、系统等执行的各种功能,用于描述那些组件的术语(包括对“装置”的引用)旨在对应于执行所述组件(例如功能对等体)的特定功能、执行在此所述本发明示例性方面中的功能的任何组件(除非另有指示),即使在结构上并不等同于所揭示结构。这样,将理解本发明包括一系统以及具有用于执行本发明各方法的动作和/或事件的计算机可执行指令的一计算机可读介质。
另外,尽管本发明的特定特征仅对若干实现之一揭示,这种特征可与可能对任何给定或特定应用有利或所需的其它实现的一个或多个特征组合。此外,就用于具体实施方式或权利要求书的术语“包含”而言,这种术语意在以类似于术语“包括”的方式作包括意义解。