《无线射频识别RFID中间件技术.doc》由会员分享,可在线阅读,更多相关《无线射频识别RFID中间件技术.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、无线射频识别RFID中间件技术作 者:王振宇 杜江 张建 无线射频识别(RFID)技术是一种快速、实时、准确的信息采集与处理技术,通过射频信号对实体对象进展唯一有效的标识,可广泛应用于生产、零售、物流、交通、医疗、国防、畜牧、采矿等各个行业。 根本的RFID系统一般由3局部组成:标签、阅读器以及应用支撑软件。中间件是应用支撑软件的一个重要组成局部,是衔接硬件设备如标签、阅读器与企业应用软件如企业资源规划(ERP)、客户关系管理(CRM)等的桥梁。中间件的主要任务是对阅读器传来的与标签相关的数据进展过滤、汇总、计算、分组,减少从阅读器传往企业应用的大量原始数据、生成参加了语意解释的事件数据。可以
2、说,中间件是RFID系统的“神经中枢。 对于RFID中间件的设计,有诸多问题需要考虑,如:如何实现软件的诸多质量属性、如何实现中间件与硬件设备的隔离、如何处理与设备管理功能的关系、如何实现高性能的数据处理等等。 1 RFID网络框架构造 无线射频识别网络的框架构造如图1所示。 标签数据经过中间件的分组、过滤等处理上报给应用系统;应用系统负责事件数据的持久化存储,以及标签绑定的业务信息的管理。 RFID系统共享公共效劳平台提供根节点对象名称效劳(ONS)、企业应用鉴权管理、标签信息发现与企业授权码管理等公共效劳。其中,根节点ONS连同所有企业级RFID系统的内部ONS,组成一个ONS树,任何一个
3、标签都可以在ONS树上找到标签所对应的标签信息库的地址,即可以进一步访问到标签对应的详细信息。 2 中间件功能及实现原理 一言蔽之,中间件的功能就是承受应用系统的请求,对指定的一个或者多个阅读器发起操作命令如标签清点、标签标识数据写入、标签用户数据区读写、标签数据加锁、标签杀死等,并接收、处理、向后台应用系统上报结果数据。 其中,标签清点是最为根本、也是应用最为广泛的功能。 标签清点的工作流程可简单描述为: 应用系统以规那么的形式定义对标签数据的需求,规那么由应用系统向中间件提出,由中间件维护。规那么中定义了:需要哪些阅读器的清点数据,标签数据上报周期(事件周期)的开场与完毕条件,标签数据如何
4、过滤,标签数据如何分组,上报数据为原始清点数据、新增标签数据还是新减标签数据,标签数据包含哪些原始数据等。 应用系统指定某项规那么,向中间件提出对标签数据的预订。 中间件根据应用系统对标签数据的预订情况,适时启动事件周期,并向阅读器下发标签清点命令。 阅读器将一定时间周期(读取周期)中清点到的数据,发送给中间件。读取周期可由中间件与阅读器制定私下协商确定。 中间件接由收阅读器上报的数据。 中间件根据规那么的定义,对接收数据做过滤、分组、累加等操作,并在事件周期完毕时,按照规那么的要求生成数据结果报告,发送给规那么的预订者。过滤过程可去除重复数据、应用系统不感兴趣的数据,大大降低了组件间的传输数
5、据量。 此流程可参见图2。 此处,需要说明一下逻辑阅读器的概念。 中间件将事件源抽象为一个逻辑概念逻辑阅读器,一个逻辑阅读器可以包含多个物理阅读器,甚至可更细化为包含多个物理阅读器的多个天线。 逻辑阅读器的划分可以根据实际的系统部署情况来确定,比方,某一个仓库两个出口部署了4个阅读器,可根据需要将这4个阅读器配置成为一个逻辑阅读器,不妨命名为“仓库出口。应用系统在需要仓库出口的标签数据时,可基于这个逻辑阅读器下发清点命令,而逻辑阅读器名称作为局部应用程序接口(API)调用的参数。 如前所述,规那么是整个中间件功能的关键元素。规那么相当于应用系统发给中间件的订货单,定义了对货品(标签数据)的时间
6、(事件周期)与规格(如何过滤、如何分组、报告样式等)的要求,原理描述局部参考EPCglobal相关内容1。 规那么、报告有自身的信息模型,表征其承载的信息,同时,规那么拥有其自身的状态机模型。在承受应用系统的长期预订、单次预订时,这些预订操作会激发规那么的状态变迁,如从“未被请求状态跃迁到“已被请求状态。 规那么由应用系统通过API定义。 (1) 规那么信息模型 规那么信息模型的描述采用了统一建模语言(UML),如图3所示。 在面向对象的语境中,规那么可表征为一个类(ECSpec)。从信息模型描述中可看出,一个规那么类,与其他多个类具有关联关系,或者说拥有如下属性:一个或者多个逻辑阅读器的列表
7、(readers)、事件周期边界定义(boundaries)、一个或者多个报告的定义(reportSpecs)、是否在报告中包含规那么本身的标记(includeSpecInReports)。 (2) 报告信息模型 与规那么信息模型类似,报告信息模型如图4所示。 其中,事件报告组类(ECReports)拥有如下属性:规那么名称(specName)、时间上报时间(date)、事件周期时长(totalMilliseconds)、事件周期完毕条件(terminationCondition)、规那么定义类实例(spec)、一个或者多个报告类的实例列表(reports)。 报告类(ECReport)中包含
8、了具体的标签数据信息。 (3) 标签清点API 应用系统下发的定义规那么、预订数据等请求,以调用中间件提供的API的方式完成。API调用过程可采用Java RMI、SOAP等相关具体技术实现,其中最重要的API参见表1。 其中,poll操作相当于subscribe操作收到一个事件周期的数据之后调用unsubscribe操作;immediate操作相当于define操作定义规那么之后,调用poll操作,然后调用undefine操作。 (4) 规那么状态机模型 规那么从其定义开场,可能存在于3种状态:未被请求状态(Unrequested)、已被请求状态(Requested)、激活状态(Active
9、)。 当规那么创立之后,还没有被任何客户端(即应用系统)预订,规那么处于Unrequested状态;对规那么的第一个预订动作将使规那么跃迁到Requested状态;当事件周期开场条件满足时,规那么进入Active状态;当事件周期完毕条件满足时,如果规那么存在预订者,那么跃迁到Requested状态,否那么跃迁到Unrequested状态。 3 中间件系统架构 中间件系统作为一个软件系统(或称组件),在实现一定功能、性能要求之外,可理解性、可扩展性、可修改性(或称可重构性)、可插入性、可重用性等质量属性都将作为软件设计的要求被提出来。 近十余年来,面向对象思想几乎全面占领软件设计领域,成为最主流
10、的分析、设计方法。而近数年来,对设计模式的研究也已日臻完善,模式几乎已成为一种“更高级编程语言(相比于Java、C+等高级编程语言)被广泛应用。 面向对象思想、设计模式都是以实现软件的可理解、可扩展、可修改、可插入、可重用等目标为己任的,本文也将应用面向对象思想、参考模式语言,对中间件的软件架构做一个初步的探讨,下文的例子如涉及高级编程语言,均采用Java语言2。 3.1封装、隔离处理流程中的各个节点 将中间件的业务流程中的各个节点分作不同模块处理,可以获得封装、高内聚、低耦合等优势,参见图5。 其中,报告上传模块,负责实现不同类型的报告上传方式,如HTTP、JMS等;API接口模块,负责隔离
11、应用系统与中间件核心业务逻辑处理模块,向应用系统提供中间件API接口;中间件核心业务逻辑处理模块,负责中间件核心业务,包括数据接收过滤、数据分组、报告生成、规那么对象的状态跳转等;阅读器通信模块,负责中间件系统与阅读器的通信。 3.2门面模式、工厂模式对外部暴露API接口 为了防止后台应用系统,即中间件的客户端过分耦合,采用门面模式(Facade)对系统内部、外部实现清晰的隔离。处理流程可参见图6所示的序列图。客户端仅仅与Facade类建立联系,如果Facade接口定义得足够清晰,客户端可以对中间件的内部实现一无所知,这表达了面向对象中的封装性。 类的设计参见源代码例如,从中可以看出,采用简单
12、工厂模式(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 unsubscrib
13、e(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.defin
14、e(a new spec, new EPCSpec(); 规那么在其生命周期中拥有不同的状态,在每个状态对一系列操作都有着不同的表现,于是可以利用状态模式(state)来模拟规那么的状态机,将不同状态的不同表现作为可变化因素封装起来,参见代码例如。 规那么状态接口ECState: publicinterfaceECState voidsubscribe(StringspecName,String uri); voidunsubscribe(StringspecName,String uri); EPCReportspoll(StringspecName); 未被请求状态类ECStateUnre
15、quested: publicclassECStateUnrequestedimplements ECState 已被请求状态类ECStateRequested: publicclassECStateRrequestedimplements ECState 激活状态类ECStateActive: publicclassECStateActiveimplements ECState 规那么类ECSpec: publicclassECSpec privateECStatestate; publicECStategetState() return state; publicvoidsetState(
16、ECStatestate) this.state = state; 这样,在针对规那么实施相应操作的时候,就可以直接把相应操作委派给其状态属性(ECState)去做即可。比方,ECSpec的subscribe操作,只需一行代码“state.suscribe(specName, uri);即可。其中,specName、uri为临时变量,具体取值在方法调用之前确定。 由面向对象的多态性特征,根据state字段目前所指向的对象来动态确定由ECState接口的哪一个具体的实现类的代码来完成工作。ECState接口的实现类根据实际情况确定是否需要在处理过程中修改ECSpec对象的状态属性(state),
17、此处在应用状态模式时,需要设计多个定时器类来辅助状态机的跳转3。 3.4策略模式切换多种报告上传、命令下发方式 事件周期完毕之后,中间件需要组装报告上传给规那么的预订者,即应用系统。上传的方式有多种,如HTTP、Socket、JMS等等。中间件的核心逻辑处理模块不应该关心具体的上传技术,相应工作应交给报告上传模块来做,核心逻辑处理模块只须完成自己的工作,然后把一定格式的数据通过报告上传模块发送,参见代码例如。 报揭发送接口ReportSender: publicinterfaceReportSender voidsendReport(ECReportsreports); 通过Http方式发送报
18、告的ReportSender接口实现类ReportSenderByHttp: publicclassReportSenderByHttpimplements ReportSender public void sendReport(ECReports reports) 通过Socket方式发送报告的ReportSender接口实现类ReportSenderBySocket: publicclassReportSenderBySocketimplements ReportSender publicvoidsendReport(ECReportsreports) 通过JMS方式发送报告的Report
19、Sender接口实现类ReportSenderByJms: publicclassReportSenderByJmsimplements ReportSender publicvoidsendReport(ECReportsreports) 报揭发送例如客户端类 SendReportWorker: publicclassSendReportWorker privateReportSendersender; privateECReportsreports; publicvoidsetReports(ECReportsreports) this.reports = reports; publics
20、taticvoidmain(String args) SendReportWorker worker = new SendReportWorker(); worker.sender.sendReport(reports); publicvoidsetSender(ReportSendersender) this.sender = sender; 这样,发送消息的工人类可通过设置ReportSender的实例来灵活设置其发送方式。 同样,中间件的清点命令下发,即中间件与阅读器之间的接口,也存在多种方式,如Socket、SOAP等,也可采用类似的设计。 阅读器的消息上报转换为消息对象,对消息对象的
21、接收、分发可采用经典的观察者模式实现。 4 中间件开展方向 中间件是阅读器与后台应用系统之间的桥梁,而阅读器通常有设备管理需求,比方软件版本下载、设备告警管理、参数配置等等,阅读器管理系统也是直接与阅读器交互的软件模块。于是,如何处理好中间件与阅读器管理系统之间的关系成为一个亟待解决的问题。 从软件部署(部署在同一台主机上)、软件模块重用(重用阅读器通信模块)等角度考虑,中间件与阅读器管理系统的融合势必成为中间件本身的一个优势。 RFID技术在国内外的开展与应用方兴未艾,国际上多个标准组织都试图统一RFID标准,但在一定的时期内,势必出现多标签并存的情况。于是,对多标准标签的支持也是中间件系统的一个开展方向。 中间件与阅读器之间的接口、通信方式以及信息格式,也无法做到统一标准。对多厂商阅读器的支持、至少对少数几家主流厂商的阅读器的支持,已经是对中间件所提出的根本要求。第 14 页