一种分布式RFID发现服务实现方法和系统 【技术领域】
本发明涉及一种分布式RFID发现服务实现方法和系统,尤其涉及基于跟踪供应链型模式的分布式RFID发现服务实现方法和系统。
背景技术
无线射频识别(Radio Frequency Identification,RFID)技术是一种非接触、多目标、移动目标识别的自动识别技术,许多国家都在不遗余力地推广这种技术,特别是RFID开环应用技术得到了世界各国的广泛关注。在RFID开环应用中,EPCGLobal的核心服务之一发现服务(Discovery Service,以下简称DS)是指查询物品在供应链的各环节发生的一系列动态信息,这些动态信息是由供应链的各环节分别捕获到,并存储在各自的RFID信息服务中。发现服务的作用在于,当供应链的结构非常复杂,其节点之间相互不知道对方的存在时,如何进行物品动态信息的查询。基于这些日益庞大的物品动态信息,发现服务捕获庞大的物品动态信息,经过信息分析处理,进而协助企业做出更准确的决策。
【发明内容】
本发明所要解决的问题是提供一种基于跟踪供应链型模式的分布式RFID发现服务系统。
为解决上述技术问题,本发明公开了一种分布式RFID发现服务的实现方法,包括:跟踪步骤,它是沿物流流向,从每个供应链节点获取部分信息,然后将全部节点信息拼接出完整物流信息链;追溯步骤,它是逆物流流向,同样从供应链每个节点获取部分信息,然后将全部节点信息拼接出完整的物流信息链,从中定位特定物品所在的位置;跟踪步骤具体包括如下步骤:(1)发起查询步骤:通过编码解析服务查找到物品生产厂商的信息服务地址,然后从生产商信息服务开始发起查询,查找本地信息服务中的相关事件,获取本地查询结果;(2)查询处理及查询路由步骤:分析查询结果,如果该物品被拆为几个物品,则将原查询语句重写为一组查询语句,分别查询各个组成部分的供应链信息,并将查询请求发送到相应的供应链下游结点,并获取远程查询结果,合并查询结果,递归运行上述步骤;如果物品被组装成另一种物品,将原查询语句修改为查询这种新物品的供应链信息,并获取远程查询结果,合并查询结果,递归运行上述步骤;若无上述情况,则不重写查询语句,而是继续向供应链下游节点发出查询请求,并获取远程查询结果,合并查询结果,递归运行上述步骤;(3)查询结果整合步骤:将本地查询结果和远程查询结果整合,并进行处理,得到最终查询结果,返回给客户端;追溯步骤具体包括如下步骤:(1)发起查询步骤:通过编码解析服务查找到物品零售商的信息服务地址,然后从该地址开始发起查询查找本地信息服务中的相关事件,获取本地查询结果;(2)查询处理及查询路由步骤:分析查询结果,如果该物品是由几种物品打包而成,则将原查询语句重写为一组查询语句,分别查询各个组成部分的供应链信息,并将查询请求发送到相应的供应链上游结点,并获取远程查询结果,合并查询结果,递归运行上述步骤;如果物品被组装成另一种物品,则将查询语句修改为查询这种新物品的供应链信息,并将查询请求发送到相应的供应链上游结点,并获取远程查询结果,合并查询结果,递归运行上述步骤;若无上述情况,则不重写查询语句,继续向供应链上游节点发出查询请求,并获取远程查询结果,合并查询结果,递归运行上述步骤;(3)查询结果整合步骤:将本地查询结果和远程查询结果整合,并进行处理,得到最终查询结果,返回给客户端。
【附图说明】
图1是分布式RFID发现服务系统的用况;
图2是系统的总体架构;
图3是事件类型分层图;
图4是根据本发明实施的分布式RFID发现服务实现流程;
图5是根据本发明实施例的跟踪查询流程;
图6是根据本发明实施例的追溯查询流程;
图7是根据本发明实施例的查询引擎模块的框图;
图8是根据本发明实施例的发布订阅模块的框图;
图9是根据本发明实施例的发布订阅模块的通信机制的顺序图;
图10是根据本发明实施例的系统数据库的实体关系图;
图11是根据本发明实施例的算法关系图;
图12是根据本发明实施例的查询处理算法;
图13是根据本发明实施例的本地查询算法;
图14是根据本发明实施例的重写查询结果算法;
图15是根据本发明实施例的转发路由算法;
图16是根据本发明实施例的合并查询结果算法。
【具体实施方式】
图1是分布式RFID发现服务系统的用况图。RFID发现服务主要负责查询物品在供应链中的动态信息,它与编码解析服务、信息服务等共同组成了RFID公共服务的核心服务。RFID发现服务的基本功能包括查询物品供应链信息、单品及包装物品的定位、问题物品追溯查询等。RFID发现服务有两类用户:一类是应用系统,另一类是系统管理者,其中应用系统分为上层的客户程序和下层的捕获应用。
供应链中每个组织、企业作为网络中的一个节点,每个节点拥有独立地RFID信息服务(IS)和本地的RFID编码解析服务。IS负责捕获该组织、企业内部发生的所有RFID事件,存储在本地,并向直接上、下游节点提供对本地RFID事件的访问。编码解析服务已经建立起来,通过编码解析服务可以查询物品的生产商所维护的IS地址。“one step back-one step forward”原则是指供应链中的节点拥有它直接上游节点和直接下游节点的地址,除非它没有直接上游节点或者直接下游节点。
图2是系统的总体架构。分布式RFID发现服务系统要适应大规模应用,适应跨地域、跨供应链(开环)应用以及满足数据安全方面的需求,供应链各个节点的信息服务对本地的事件数据有绝对的安全控制和了解,基于“跟踪供应链型模式””设计了该系统的总体架构。
在总体架构中,供应链的每一个节点都具有分布式发现服务查询引擎,查询引擎和信息服务、Web服务接口构成了一个三层结构的系统,第一层是Web服务层,将系统表示层和业务逻辑层分开,为客户提供应用服务的图形界面,有助于理解和高效定位应用服务,对外提供查询接口;第二层是查询引擎,是系统的主要业务逻辑层,负责查询信息服务层的事件,以及进行查询分析、查询路由转发、结果整合等;第三层是信息服务,负责捕获来自中间件层的业务事件,并对上层查询引擎提供事件查询接口。
层次 功能 Web服 务接口 对客户程序提供查询接口,包括单个物品跟踪查询、物品定 位、问题物品追溯; 基于包装关系物品的跟踪查询、物品定位、问题物品追溯; 为供应链节点的直接上、下游节点提供发布、订阅接口; 为供应链节点和消息中间件提供发送和接收消息的接口; 基于编码解析服务,为物品提供查询静态信息的接口; 提供单个物品和包装物品的完整供应链信息查询接口。
分布式 发现服务查 询引擎 负责查询来自信息服务层的事件进行转换、存储; 对客户端发起的查询进行查询分析; 对分析后的查询进行查询路由转发; 对来自本地的查询结果和异地的查询结果进行整合; 提供查询物品完整供应链信息的功能。 信息服 务层 捕获来自中间件的业务事件并进行转换、存储; 提供发布订阅功能,对发布内容和订阅内容进行匹配,将匹 配结果发送给订阅者; 对上层查询引擎提供基于时间戳的查询、基于包装关系的查 询、基于静态属性的查询。
表1系统的各层次功能
图3是事件类型分层图。根据EPCGlobal的体系结构框架,将数据分为Tag数据、事件数据、企业IS数据、公共服务数据。下图为各个层次所对应具体的数据类型。
下表详细描述几种常用数据类型:
事件数据类 型 事件数据类型特点 事件数据类型表达 RawEvent RFID应用所生成的 原始事件 (CID,Location,Time) CID是物品的唯一标识,采用的是CID-V 编码结构;Location是RFID读写器读取 到物品的地点;Time是RFID读写器读取 到物品的时间。 CleanEvent 将原始事件按时间 段进行清洗 (CID,Location,Time_In,Time_Out) 其中Time_In表示物品进入某个地点的时 间;Time_Out表示物品离开该地点的时 间。 QuantityEv ent 包装的物品包含一 定数量的产品 (ParentID,cidList,Location,Time,Quan tity) 其中ParentID表示的是CID的集合,通 过MAP来表示,MAP表示ParentID和
cidList中所有CID之间的映射关系。 Quantity表示cidList中所包含CID的数 量。 Aggregatio nEvent 供应链应用中,物 品一般都是成批次 运输 (ParentID,cidList,Location,Time,acti on) 其中ParentID表示的是CID的集合,通 过MAP来表示,MAP表示ParentID和 cidList中所有CID之间的映射关系; action表示包装、拆包两种动作。 Observatio nEvent 物品在供应链上所 产生的事件存放在 不同的地点 (CID,Location,receiveFrom,sendTo,Tim e_In,Time_Out)receiveFrom表示物品在 供应链中的直接上游节点;sendTo表示物 品在供应链中的直接下游节点。
表2事件数据类型
物品在供应链中流转时,当在某个节点发生事件时,根据“one stepback-one step forward”原则,该节点拥有其直接上游节点和直接下游节点的地址,故需要在DS事件数据中添加SendTo和ReceiveFrom两个元素。
图4是根据本发明实施例的分布式RFID发现服务实现流程,其中有两个主要的流程:跟踪和追溯。跟踪是沿物流流向,从每个供应链节点获取部分信息,然后将全部节点信息拼接出完整物流信息链,主要作用是跟踪一批物品,确定这批物品的物流轨迹。追溯是逆物流流向,同样从供应链每个节点获取部分信息,然后将全部节点信息拼接出完整的物流信息链,主要作用是定位某问题物品,找出产品来源,确定问题产品操作环节的责任。
图5是根据本发明实施例的跟踪查询流程,包括:
通过编码解析服务查找到物品生产厂商的信息服务地址,然后从生产商信息服务开始发起查询,查找本地信息服务中的相关事件,获取本地查询结果。此处的相关事件是生产商向制造商传递了一个物品A;
分析查询结果,如果该物品被拆为几个物品(例如在制造商处将物品A拆为物品B、物品C和物品D。其中物品B传递给一个分销商,物品C和D传递给另一个经销商),则将原查询语句重写为一组查询语句,分别查询各个组成部分的供应链信息,将查询请求发送到相应的供应链下游结点,并获取远程查询结果,合并查询结果,递归运行上述步骤;如果物品被组装成另一种物品,将原查询语句修改为查询这种新物品的供应链信息(例如一个分销商将物品B转换为物品E),并将查询请求发送到相应的供应链下游结点,并获取远程查询结果,合并查询结果,递归运行上述步骤;若无上述情况,则不重写查询语句,而是继续向供应链下游节点发出查询请求,并获取远程查询结果,合并查询结果,递归运行上述步骤;
将本地查询结果和远程查询结果整合,并进行处理,得到最终查询结果,返回给客户端。
图6是根据本发明实施例的追溯查询流程,包括:
通过编码解析服务查找到物品经销商的信息服务地址,然后从该地址开始发起查询,查找本地信息服务中的相关事件,获取本地查询结果;
分析查询结果,如果该物品是由几种物品打包而成,则将原查询语句重写为一组查询语句,分别查询各个组成部分的供应链信息,并将查询请求发送到相应的供应链上游结点,并获取远程查询结果,合并查询结果,递归运行上述步骤;如果物品被组装成另一种物品,则将查询语句修改为查询这种新物品的供应链信息,并将查询请求发送到相应的供应链上游结点,并获取远程查询结果,合并查询结果,递归运行上述步骤;若无上述情况,则不重写查询语句,继续向供应链上游节点发出查询请求,并获取远程查询结果,合并查询结果,递归运行上述步骤;
将本地查询结果和远程查询结果整合,并进行处理,得到最终查询结果,返回给客户端。
图7是根据本发明实施例的查询引擎模块的结构图。查询引擎模块是系统的核心模块,它负责查询物品在供应链各个节点的所产生的事件信息,并将这些事件信息进行整合、处理、存储,然后把完整的供应链信息返回给Web服务层。查询引擎由四个子模块构成:查询分析、查询分配、本地查询、查询结果处理。查询分析子模块接收客户端发来的查询请求,并根据本地的查询结果,将查询分为本地查询和远程查询。查询分配子模处理各种查询,将远程查询发送给相应供应链节点的查询引擎。本地查询子模块主要查询本地信息服务的相关事件。查询结果处理子模块是将结果进行处理,整合出供应链信息,将它返回给客户端。信息服务层负责捕获、整理新增的物品事件,本地查询模块主要查询本地信息服务的相关事件。
图8是根据本发明实施例的发布订阅模块的框结构图。在RFID发现服务系统中,交互各方使用了发布/订阅技术,以减少交互模块之间的耦合性。发布订阅模块是RFID分布式发现服务系统的核心模块之一,各供应链节点分别向上游节点订阅各自负责的物品编码,各供应链节点信息服务层分别向下游节点发布各自生产或受理的所有物品编码,发布订阅模块对发布内容和订阅内容进行匹配,并把匹配结果“推送”给订阅的供应链节点。发布订阅模块设计把供应链上、下游节点的交互过程分为三个阶段:发布订阅阶段:供应链下游节点订阅期望接收到的物品信息,供应链上游节点发布物品信息内容;匹配阶段:当订阅者的订单阅内容与发布者所发布的内容相匹配时,返回订阅者唯一标识给发布者;数据发送阶段:供应链节点将匹配结果推送给订阅的供应链下游节点。
图9是根据本发明实施例的发布订阅模块的通信机制的顺序图。(1)订阅者向发布订阅中心发出订阅事件(subscribe),调用订阅服务,对感兴趣的物品信息进行订阅,并向发布订阅中心注册自己的地址。(2)发布者发布物品信息内容(publish),调用发布订阅中心提供的发布服务,向发布订阅中心登记发布的物品信息。(3)发布订阅中心根据发布的物品信息,与所有订阅者的所订阅的物品信息进行匹配。(4)如果发布的物品信息与订阅的物品信息匹配,则把订阅者的地址返回给发布者(notify_a)。(5)发布订阅中心将匹配结果以推模式的方式推送给订阅者(notify_b)。
图10是根据本发明实施例的系统数据库的实体关系图。根据上文描述的流程以及各核心模块的设计可以归纳如下:判断本地节点是否在物品的供应链上;查询物品在本地节点存在哪些行为,具体说来有一下几种:物品接收自某一供应链节点;物品发送至某些供应链节点;和其它物品组装成一种新物品,由其它物品组装而成,物品是本地节点生产的,查询本地节点是否为物品当前所在的位置,供应链的每个节点上都拥有数据库来存储物品所产生的事件。
下面列出数据库中一些主要的表和字段。
表3RawEvent表
表示物品编码为CID的物品于时刻Time在本地节点LocalAddress产了某种事件EventID,具体事件类型EventType需要根据以后定义的几个关系才能得知。需要注意的是,物品发生任何一种事件都会被本地信息服务捕获。
表4Pack表
表示编码为ParentEventID的物品于时刻Time在本地节点LocalAddress发生了某种行为EventType,EventType有两种:打包、拆包。
表格5SendAndReceive表
表示编码为EventID的物品于时刻Time在本地节点LocalAddress发生了某种行为EventType,EventType有两种:发送、接收。
判断本地节点是否在物品的供应链上,只需要判断Event表中是否存在CID为物品编码的记录;判断物品是否由本地节点生产,直接判断Produce表中是否存在CID为物品编码记录;判断物品是否是一种新物品的组成部分时,判断Contain表中是否存在CID为物品编码的记录;判断物品是否是由其它物品组成的一种新物品时,判断Contain表中是否存在CID为物品编码的记录;
需要注意的是,上述处理办法并没有考虑在本地节点里,组合得到的新物品能够继续和其它物品组成另外新物品的情况,即现有物品A、B组成了新物品C,C和物品D又组成了新物品E。这就要求在更新数据库时先将这样的组合关系完全展开,即认为E物品是由A、B、D组成的。
最后,考虑最复杂的一种情况,即判断物品是发送出去的还是接收进来的。考虑下列几中情况:
物品是在本地节点生产的或者是由其它物品组成的,这时如果表SendAndReceive中没有物品编码为CID的记录时,则物品仍然留在本地节点。
物品是在本地节点和其它物品一起被组装成新物品时,这时如果关系SendAndReceive中存在CID为物品编码的一条记录,则物品来自地址为LocalAddress的供应链节点。
除了上述几种情况外,表SendAndReceive中存在2个CID值为物品编码的记录,这时表示物品只是途经本地节点,并没有进行其它操作,将时间进行那个排序,小的时间值是接收物品的时间,大的时间值是发送物品的时间。
图11是根据本发明实施例的算法关系图。系统在供应链每个节点上都安装有查询引擎,每个查询引擎仅为其节点的直接上、下游节点提供访问接口,根据上文系统架构图、算法关系图,系统查询的处理流程总结如下:
(1)发起查询
初始,供应链上的任一节点通过查询客户端向本地节点的查询引擎发出查询请求,主要参数为物品标签编码及其可以被RFID读写器读取到或人工获得的零部件的标签编码。具体的,客户端通过RFID读写器等方式获得需要查询的物品标签集合,给查询赋予一个随机的queryID。
Query queryID:int epcList:list<EPC> queryType:QueryType routeType:RouteType routeTo:ManagerNum
表6:查询的数据结构
Query表示查询的结构:queryID是查询的唯一标识;epcList是查询中包含的所有EPC编码;queryType表示查询的类型,查询的类型有跟踪、追溯,routeTo表示查询的目标供应链节点地址。
①本地查询引擎首先查询现有的编码解析服务,将所有标签编码交给编码解析网络进行解析。
②编码解析服务返回本地查询引擎所有标签编码的生产商企业的信息服务地址,相当于生产商节点的查询引擎地址。
③本地查询引擎向所有已知的生产商节点的查询引擎(包括本地查询引擎)并行的发出相应的查询。
(2)查询处理及查询路由
该过程是处理查询的核心过程,叫做“process and route”。每个节点的查询引擎首先查询其本地信息服务的相关事件,然后根据本地查询结果生成与其直接上游和直接下游相关的新的查询请求;如果本地查询引擎已经处理过相同的查询,则停止处理。然后,每个节点的查询引擎并发的向其直接上游或直接下游发送新的查询请求。最后,每个节点的查询引擎并发的将其本地查询结果返回给发起查询的节点。
(3)查询结果整合
客户端将在预定的等待时间内将接收到的查询结果整理排序,得到最终查询结果。因为各节点是并发的返回结果,那么客户端需要分辨哪些结果属于同一个初始查询,为此,需要保证所有转发的查询的queryID与初始查询保持一致。
Result queryID:int events:List<EPCISEvent>
表7Result的数据结构
Result表示查询结果的数据结构,包含一个查询唯一标识,同时包含一组查询返回的事件列表(放到数据结构算法)
下面将详细描述查询流程中的各个主要算法,包括查询处理算法、本地查询算法、重写查询结构算法、转发路由算法、合并查询结果算法等。
图12是根据本发明实施例的查询处理算法。该过程是处理查询的核心过程,每个节点的查询引擎首先查询其本地信息服务的相关事件,然后根据本地查询结果生成与其直接上、下游相关的新的查询请求;如果本地查询引擎已经处理过相同的查询,则停止处理。
图13是根据本发明实施例的本地查询算法。该算法负责对本地信息服务执行查询:首先检查Cache中是否有该查询的结果,如果没有,则查询信息服务层。最后将本地查询结果填加到Cache中,并返回给客户端所在的查询引擎。
图14是根据本发明实施例的重写查询结果算法。该算法负责根据本地查询引擎在本地的查询结果将查询重写成与其直接上、下游节点相关的新查询请求:因为ObservationEvent和QuantityEvent记录了本地节点与其直接上、下游节点之间的物品收发关系,所以需要在本地查询结果中的这两类事件进行分析,一方面,根据receiveFrom判断与该事件相关的CID来源于本节点的直接上游,从而生成向直接上游转发的新查询,其中新查询的queryID必须与原查询一致,新查询的CID集合是该事件的CID集合与本地查询得到的所有相关CID集合的并集,以过滤该事件中不相关的CID。另一方面,根据sendTo判断与该事件相关的CID被发送到本节点的直接下游,从而生成向直接下游转发的新查询。然后,对所得的所有新查询,将具有相同routeTo的查询的epcList进行合并,这样多个查询可以合并为一个查询。最后,通过检查新查询是否已在ResultCache中缓存(只需判断queryID和epcList是否相同),可以消除重复查询,最终得到一组新查询。
图15是根据本发明实施例的转发路由算法。该算法负责将查询以及查询类型发送给相应的供应链节点。
图16是根据本发明实施例的合并查询结果算法。客户端将在预定的等待时间内将接收到的查询结果整理排序,得到最终查询结果。因为各节点是并发的返回结果,那么客户端需要分辨哪些结果属于同一个初始查询,为此,需要保证所有转发的查询的queryID与初始查询保持一致。
当然,本发明还可有其他实现方式,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明权利要求的保护范围。