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

无线射频识别RFID中间件技术

时间:07-22 来源:通信世界网 点击:

或者多个报告的定义(reportSpecs)、是否在报告中包含规则本身的标记(includeSpecInReports)。

(2) 报告信息模型

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

\

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

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

(3) 标签清点API

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

\

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

(4) 规则状态机模型

规则从其定义开始,可能存在于3种状态:未被请求状态(Unrequested)、已被请求状态(Requested)、激活状态(Active)。

当规则创建之后,还没有被任何客户端(即应用系统)预订,规则处于Unrequested状态;对规则的第一个预订动作将使规则跃迁到Requested状态;当事件周期开始条件满足时,规则进入Active状态;当事件周期结束条件满足时,如果规则存在预订者,则跃迁到Requested状态,否则跃迁到Unrequested状态。

3 中间件系统架构

中间件系统作为一个软件系统(或称组件),在实现一定功能、性能要求之外,可理解性、可扩展性、可修改性(或称可重构性)、可插入性、可重用性等质量属性都将作为软件设计的要求被提出来。

近十余年来,面向对象思想几乎全面占领软件设计领域,成为最主流的分析、设计方法。而近数年来,对设计模式的研究也已日臻完善,模式几乎已成为一种"更高级编程语言"(相比于Java、C++等高级编程语言)被广泛应用。

面向对象思想、设计模式都是以实现软件的可理解、可扩展、可修改、可插入、可重用等目标为己任的,本文也将应用面向对象思想、参考模式语言,对中间件的软件架构做一个初步的探讨,下文的例子如涉及高级编程语言,均采用Java语言[2]。

3.1封装、隔离处理流程中的各个节点

将中间件的业务流程中的各个节点分作不同模块处理,可以获得封装、高内聚、低耦合等优势,参见图5。

\

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

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

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

\

类的设计参见源代码示例,从中可以看出,采用简单工厂模式(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{

voidsubscrib

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

网站地图

Top