微波EDA网,见证研发工程师的成长!
首页 > 微波射频 > 射频工程师文库 > 无线rfid中间件技术

无线rfid中间件技术

时间:09-18 来源:电子工程网 点击:

多个物理阅读器,甚至可更细化为包含多个物理阅读器的多个天线。

  逻辑阅读器的划分可以根据实际的系统部署情况来确定,比如,某一个仓库两个出口部署了4个阅读器,可根据需要将这4个阅读器配置成为一个逻辑阅读器,不妨命名为"仓库出口"。应用系统在需要仓库出口的标签数据时,可基于这个逻辑阅读器下发清点命令,而逻辑阅读器名称作为部分应用程序接口(API)调用的参数。

  2.2 标签清点实现原理

  如前所述,规则是整个中间件功能的关键元素。规则相当于应用系统发给中间件的订货单,定义了对货品(标签数据)的时间(事件周期)和规格(如何过滤、如何分组、报告样式等)的要求,原理描述部分参考EPCglobal相关内容。

  规则、报告有自身的信息模型,表征其承载的信息,同时,规则拥有其自身的状态机模型。在接受应用系统的长期预订、单次预订时,这些预订操作会激发规则的状态变迁,如从"未被请求"状态跃迁到"已被请求"状态。

  规则由应用系统通过API定义。

  (1) 规则信息模型

  规则信息模型的描述采用了统一建模语言(UML),如图3所示。

  图3

  图3

   在面向对象的语境中,规则可表征为一个类(ECSpec)。从信息模型描述中可看出,一个规则类,与其他多个类具有关联关系,或者说拥有如下属性:一个 或者多个逻辑阅读器的列表(readers)、事件周期边界定义(boundaries)、一个或者多个报告的定义(reportSpecs)、是否在报 告中包含规则本身的标记(includeSpecInReports)。

  (2) 报告信息模型

  与规则信息模型类似,报告信息模型如图4所示。

  图4:报告信息模型图。

  图4:报告信息模型图。

   其中,事件报告组类(ECReports)拥有如下属性:规则名称(specName)、时间上报时间(date)、事件周期时长 (totalMilliseconds)、事件周期结束条件(terminationCondition)、规则定义类实例(spec)、一个或者多个报 告类的实例列表(reports)。

  报告类(ECReport)中包含了具体的标签数据信息。

  (3) 标签清点API

  应用系统下发的定义规则、预订数据等请求,以调用中间件提供的API的方式完成。API调用过程可采用Java RMI、SOAP等相关具体技术实现,其中最重要的API参见表1。

  表1:标签清点应用程序接口。

  表1:标签清点应用程序接口。

  其中,poll操作相当于subscribe操作收到一个事件周期的数据之后调用unsubscribe操作;immediate操作相当于define操作定义规则之后,调用poll操作,然后调用undefine操作。

 

图5:中间件系统模块划分图。

  图5:中间件系统模块划分图。

  其中,报告上传模块,负责实现不同类型的报告上传方式,如HTTP、JMS等;API接口模块,负责隔离应用系统和中间件核心业务逻辑处理模块,向应用系统提供中间件API接口;中间件核心业务逻辑处理模块,负责中间件核心业务,包括数据接收过滤、数据分组、报告生成、规则对象的状态跳转等;阅读器通信模块,负责中间件系统与阅读器的通信。

  3.2 门面模式、工厂模式对外部暴露API接口

   为了避免后台应用系统,即中间件的客户端过分耦合,采用门面模式(Facade)对系统内部、外部实现清晰的隔离。处理流程可参见图6所示的序列图。客 户端仅仅与Facade类建立联系,如果Facade接口定义得足够清晰,客户端可以对中间件的内部实现一无所知,这体现了面向对象中的封装性。

图6:客户端调用APT序列图。

  图6:客户端调用APT序列图。

  类的设计参见源代码示例,从中可以看出,采用简单工厂模式(Simple Factory)能够在客户端不知情的情况下,灵活地替换API实现类的版本。中间件API接口清晰地定义了中间件提供的操作,客户端只须知道工厂类(APIFactory)能够得到中间件API接口的实例即可。

  中间件API接口MiddlewareAPI:

  publicinterfaceMiddlewareAPI{

  void define(String specName, ECSpec spec);

  void undefine(String specName);

  void subscribe(String specName, String uri);

  void unsubscribe(String specName, String uri);

  EPCReports poll(String specName);

  EPCReports immediate(ECSpec spec);

  }

  工厂类APIFactory:

  publicclassAPIFactory{

  publicstaticMiddlewareAPIgetAPIInstance(){

  }

  }

  API的实现类A:

  publicclassClient{

  publicstaticvoidmain(String[] args) {

  MiddlewareAPI api = APIFactory.getAPIInstance();

  api.define(a new spec, new EPCSpec());

  }

  }

  3.3 状态模式模拟规则的状态机

  规则在其生命周期中拥有不同的状态,在每个状态对一系列操作都有着不同的表现,于是可以利用状态模式(state)来模拟规则的状态机,将不同状态的不同表现作为可变化因素封装起来,参见代码示例。

  规则状态接口ECState:

  publicinterfaceECState{

voidsubs

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top