基于SOA的RFID中间件设计
发生时,即会通知EPM,一旦接收到这些事件,随后会应用复杂事件处理(过滤器),结合交易规则对这些事件进行处理。另一种情况下是:外部的客户端(如EPC-IS)已经注册接收ALE,这些过滤后的事件会被发送到ALE客户端指定的位置。
2.3 服务接口层
来自事件处理层的数据最终是分类的XML文件。同一类型的数据以XML文件的形式保存,并提供给相应的1个或多个应用程序使用。而服务接口层主要是对这些数据进行过滤、入库操作,并提供访问相应数据库的服务接口。具体操作如下:
(1)将存放在磁盘上的XML文件进行批量入库操作,当XML数据量达到一定数量时,启动数据入库功能模块,将XML数据移植到各种数据库中。
(2)在数据移植前将重复的数据过滤掉。
(3)为企业内部和企业外部访问数据库提供Web Services
接口。
其中,数据过滤过程是在处理临时存放的XML文件的过程中完成的。方法是:将同一个卡号的多条记录按照读入的时间戳进行比较,若相邻记录的时间戳差值小于用户定义的阈值,则认为重复读取发生,剔出后1条记录。依次类推,剔出掉所有冗余数据。利用Web Services技术将对数据库的访问以服务的形式发布,供企业内部应用程序和企业合作伙伴调用[2]。以数据过滤为例,其核心代码如下:
for(int i=1;i<rowcount;i++)
{SPAN=EndTime.Subtract(StartTime);
SPANtiIDe=sPan.Seconds; //相邻记录的时间戳之差
if(SPANtime<=0.002)
{subtime[i]=i;}
//若相邻时间戳差值小于2 ms,
//标记第2条记录为冗余数据
else subtime[i]=0;}
for(int j=1;j<rowcount;j++) //删除冗余记录
{if(subtime[j].ToString()!="0")
{ds.Tables[0].Rows[j].Delete();j=j-1;
rowcount=rowcount11;}
}
以下是服务接口层向应用系统发送SOAP响应,返回处理结果的部分代码[7]。
<report xmlns="">
<process procInsID="503" givenID="231" givenName="
ShipOut">
<event eventType="report_tag_event">
<header>Product Quantity Match Success
</header>
<status>success</status>
<tagList>
<tag ID="00110011"detectTime="2008-11-01 T13:13:
00.110+08:00"/>
</tagList>
3 RFID中间件的实现及测试
RIFD中间件系统开发工具采用Eclipse3.2,应用服务器软件采用JBOSS4.0, Web容器为Tomcat5.5。此外,服务器端采用了基于Struts的MVC多层次结构框架,数据服务层则采用MySQL5.0数据库。
实验中,终端通过485网络组网,应用系统使用的是仓库管理系统。仓库管理系统作为服务请求者,根据服务接口层公布的入库信息核对服务WSDL,得到该服务的接口定义和服务端侦听地址,由入库管理模块通过服务代理接口向Web服务发送SOAP请求消息,请求入库信息核对服务,Web服务平台收到该服务请求后,向RFID中间件发送消息,创建一个出库信息核对服务的实例,设备管理层根据服务请求参数,启动相应的RFID阅读器读取标签信息。然后将读取的标签信息经处理后打包传给事件处理层,根据服务请求的参数与捕获的标签信息进行核对处理,处理后向服务接口层返回核对数据正确或者错误的信息,如图4所示。最后,服务接口层向仓库管理系统发送SOAP响应,返回处理结果[5]。
实验表明,原来的应用系统仅仅支持1种固定卡型的阅读器,采用RFID中间件以后,可以在1个系统中采用各种卡型的阅读器,而上层程序不需要再进行修改,增加了系统的可扩展性和易维护性,节约了时间和成本。系统稳定性也有大的提高,有效解决了企业应用中所关心的问题。
本文提出了一个基于SOA,综合应用JMX、JMS等技术的RFID中间件架构,并说明了RFID中间件各部分的含义和作用及基础架构的实现。这种中间件结构能很好地屏蔽低端各种物理设备的信息。由于采取了模块化的结构,可以根据需要进行裁减,在需要的时候再加入相应的模块,例如,可根据需要是否添加认证和安全模块。通过Web Service,可实现对RFID中间件更高层次包装,保证了RFID基础架构中3个功能层之间的相互独立和协同工作。
- 嵌入式数据库在Java中的应用(03-03)
- Java技术在嵌入式系统中的应用(07-11)
- 基于JAVA的工业控制移动数据通信解决方案(01-23)
- KVM在嵌入式Linux上的移植(05-02)
- JAVA和C++区别详解(05-29)
- 试析新一代电子商务平台中Java XML的应用体现(07-24)