基于SOA應(yīng)用JMX和JMS技術(shù)的RFID中間件設(shè)計(jì)
2 基于SOA的RFID中間件架構(gòu)
利用SOA松耦合、面向業(yè)務(wù)的特點(diǎn),結(jié)合RFID中間件實(shí)現(xiàn)的應(yīng)用系統(tǒng)集成的方案可提供豐富的接口,能夠幫助實(shí)現(xiàn)對(duì)RFID設(shè)備的管理以及對(duì)數(shù)據(jù)的處理,簡(jiǎn)化了對(duì)底層設(shè)備應(yīng)用的支持,避免了對(duì)底層設(shè)備的低級(jí)別接口的處理。利用Web Service技術(shù)實(shí)現(xiàn)RFID中間件與企業(yè)系統(tǒng)的集成,完成兩者的松耦合集成。
基于SOA的RFID中間件架構(gòu),其基礎(chǔ)架構(gòu)層分為設(shè)備管理層、事件處理層和服務(wù)接口層,并通過(guò)Web Service技術(shù)包裝了每1層相應(yīng)的功能,且進(jìn)行了具體實(shí)現(xiàn)。本文重點(diǎn)介紹該RFID中間件架構(gòu)中的基礎(chǔ)架構(gòu)的3個(gè)功能層[5]。這3個(gè)層次有著明確的功能劃分和層間的交互接口。RFID中間件架構(gòu)如圖2所示。本文引用地址:http://www.ex-cimer.com/article/157365.htm
中間件設(shè)計(jì)包括RFID設(shè)備管理組件和事件過(guò)程管理組件。RFID設(shè)備管理組件是分布式的代理,負(fù)責(zé)第1級(jí)的事件過(guò)濾;設(shè)備管理包括設(shè)備詢(xún)問(wèn)器,對(duì)每1個(gè)閱讀器和傳感器設(shè)備,代理必須互相作用。過(guò)程管理組件是通過(guò)RFID事件下一級(jí)的過(guò)濾,把事件放置到交易環(huán)境中,然后發(fā)布應(yīng)用層事件ALE(Application Layer Event)[5]。
2.1設(shè)備管理層
設(shè)備管理層位于架構(gòu)的最底層,直接與閱讀器交互,實(shí)現(xiàn)的主要功能包括:
(1)采集射頻卡上的數(shù)據(jù)。
(2)對(duì)于來(lái)自不同類(lèi)型的閱讀器的數(shù)據(jù)進(jìn)行適配處理,得到統(tǒng)一的、格式化的數(shù)據(jù),并進(jìn)行數(shù)據(jù)校驗(yàn)。
(3)將校驗(yàn)無(wú)誤的數(shù)據(jù)按照用戶(hù)定義的協(xié)議進(jìn)行封包,并將消息包發(fā)送到事件處理層的消息系統(tǒng)。
依據(jù)其實(shí)現(xiàn)的功能,分別針對(duì)射頻卡閱讀器模塊、閱讀器接口、數(shù)據(jù)校驗(yàn)和數(shù)據(jù)打包4個(gè)方面進(jìn)行研究和開(kāi)發(fā)。閱讀器模塊是根據(jù)硬件供應(yīng)商提供的規(guī)范進(jìn)行編碼實(shí)現(xiàn)的;閱讀器接口主要解決將來(lái)自協(xié)議格式的數(shù)據(jù)轉(zhuǎn)化為系統(tǒng)所需要的EPC碼;數(shù)據(jù)校驗(yàn)采用CRC校驗(yàn);數(shù)據(jù)打包先依據(jù)獲取的卡片編碼中“數(shù)據(jù)分類(lèi)”內(nèi)容,判斷出該標(biāo)簽數(shù)據(jù)屬于哪種類(lèi)型,然后按照這種數(shù)據(jù)類(lèi)型將標(biāo)簽數(shù)據(jù)封裝成相應(yīng)的消息包。
由于每個(gè)ALE閱讀器事件流可能來(lái)自多個(gè)物理設(shè)備配置表,因此設(shè)備管理器為每個(gè)設(shè)備表創(chuàng)建1個(gè)詢(xún)問(wèn)器,并通知詢(xún)問(wèn)器哪種傳感器被綁定到指定的閱讀器上。詢(xún)問(wèn)器發(fā)送傳感器事件流到設(shè)備管理器,設(shè)備管理器將1個(gè)或多個(gè)傳感器事件流構(gòu)造成閱讀器事件。設(shè)備管理器把初步處理的閱讀器事件發(fā)送到ALE服務(wù)器。
詢(xún)問(wèn)器代理:1個(gè)設(shè)備管理器的配置由它管理的設(shè)備和它要咨詢(xún)的詢(xún)問(wèn)器組成,然后與它所對(duì)應(yīng)的設(shè)備管理器交互。每個(gè)設(shè)備概要表由物理設(shè)備屬性和詢(xún)問(wèn)器配置組成。物理設(shè)備屬性是被命名過(guò)的傳感器(例如天線(xiàn)和1個(gè)金屬傳感器)。
事件信息空間:事件信息空間類(lèi)似于公共的容錯(cuò)事件信息經(jīng)紀(jì)人。它支持異步接收來(lái)自設(shè)備管理器的事件、ALE事件以及其他來(lái)自事件過(guò)程管理的配置需求。事件信息空間同時(shí)提供一個(gè)存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制,確保重要的事件在中斷的網(wǎng)絡(luò)或其他組件失效的情況下不丟失[5]。
在系統(tǒng)中,將每個(gè)閱讀器模塊的遠(yuǎn)程方法調(diào)用封裝為1個(gè)管理組件(MBean)作為JMX服務(wù)器的實(shí)例注冊(cè)到JMX服務(wù)器中。通過(guò)JMX框架對(duì)閱讀器進(jìn)行監(jiān)控和管理,使RFID中間件系統(tǒng)能提供管理、監(jiān)控閱讀器的功能。本部分描述為閱讀器管理組件添加時(shí)間服務(wù),以達(dá)到定時(shí)控制閱讀器的目的。
2.2 事件處理層
在RFID系統(tǒng)中,一方面是各種應(yīng)用程序以不同的方式頻繁地從RFID系統(tǒng)中取得數(shù)據(jù);另一方面卻是有限的網(wǎng)絡(luò)帶寬,其存在的矛盾,使其有必要設(shè)計(jì)1套消息傳遞系統(tǒng),使設(shè)備管理層產(chǎn)生的事件能夠傳遞到消息系統(tǒng)中,由事件管理過(guò)程進(jìn)行處理,然后把數(shù)據(jù)傳遞到相關(guān)的應(yīng)用系統(tǒng)。在這種模式下,閱讀器不必關(guān)心哪個(gè)應(yīng)用系統(tǒng)需要什么數(shù)據(jù)。同時(shí),應(yīng)用程序也不需要維護(hù)與各個(gè)閱讀器之間的網(wǎng)絡(luò)通道,僅需要將需求發(fā)送到消息系統(tǒng)中即可。由此,設(shè)計(jì)出的消息系統(tǒng)應(yīng)具有如下功能:(1)數(shù)據(jù)緩存功能;(2)基于內(nèi)容的路由功能;(3)數(shù)據(jù)分類(lèi)存儲(chǔ)功能[6]。
下面將描述創(chuàng)建一個(gè)MBean來(lái)實(shí)現(xiàn)一個(gè)數(shù)據(jù)處理節(jié)點(diǎn)。消息組件可以按照MBean來(lái)部署。消息處理組件執(zhí)行功能:從源隊(duì)列中獲取消息,對(duì)消息執(zhí)行處理,然后將結(jié)果消息放置到目標(biāo)隊(duì)列。消息處理UML圖如圖3所示。
JBossMQ是通過(guò)xml文件jbossmq-destinations-service.xml進(jìn)行配置的。以下是獲得JBOSS JNDI初始化上下文(Context)的代碼:
Hashtable props=newHashtable();
props.put(Context.INITIAL CONTEXT FACTORY,org.jnp.interfaces.NamingContextFactory);
props.put (Context. PROVIDER URL, ip +:1099);
props.put(java.naming.rmi.security.manager,yes);
props.put(Context.URL PKG PREFIXES,org. jboss.naming);
Context context=new InitialContext(props);
來(lái)自消息系統(tǒng)的消息以臨時(shí)XML文件的形式和磁盤(pán)文件方式保存,供數(shù)據(jù)接口使用。消息系統(tǒng)完成消息緩存、分類(lèi)整合、路由轉(zhuǎn)發(fā)、臨時(shí)存放等操作[4]。
事件過(guò)程管理EPM(Event Process Managment)由ALE服務(wù)、配置管理、復(fù)雜事件過(guò)程以及交易規(guī)則執(zhí)行組成,對(duì)EVP的訪(fǎng)問(wèn)能通過(guò)HTTP、JMS以及網(wǎng)絡(luò)服務(wù)接口實(shí)現(xiàn)。
EPM登記/訂閱其感興趣的事件,當(dāng)在信息空間中有事件發(fā)生時(shí),即會(huì)通知EPM,一旦接收到這些事件,隨后會(huì)應(yīng)用復(fù)雜事件處理(過(guò)濾器),結(jié)合交易規(guī)則對(duì)這些事件進(jìn)行處理。另一種情況下是:外部的客戶(hù)端(如EPC-IS)已經(jīng)注冊(cè)接收ALE,這些過(guò)濾后的事件會(huì)被發(fā)送到ALE客戶(hù)端指定的位置。
2.3 服務(wù)接口層
來(lái)自事件處理層的數(shù)據(jù)最終是分類(lèi)的XML文件。同一類(lèi)型的數(shù)據(jù)以XML文件的形式保存,并提供給相應(yīng)的1個(gè)或多個(gè)應(yīng)用程序使用。而服務(wù)接口層主要是對(duì)這些數(shù)據(jù)進(jìn)行過(guò)濾、入庫(kù)操作,并提供訪(fǎng)問(wèn)相應(yīng)數(shù)據(jù)庫(kù)的服務(wù)接口。具體操作如下:
(1)將存放在磁盤(pán)上的XML文件進(jìn)行批量入庫(kù)操作,當(dāng)XML數(shù)據(jù)量達(dá)到一定數(shù)量時(shí),啟動(dòng)數(shù)據(jù)入庫(kù)功能模塊,將XML數(shù)據(jù)移植到各種數(shù)據(jù)庫(kù)中。
(2)在數(shù)據(jù)移植前將重復(fù)的數(shù)據(jù)過(guò)濾掉。
(3)為企業(yè)內(nèi)部和企業(yè)外部訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)提供Web Services
接口。
其中,數(shù)據(jù)過(guò)濾過(guò)程是在處理臨時(shí)存放的XML文件的過(guò)程中完成的。方法是:將同一個(gè)卡號(hào)的多條記錄按照讀入的時(shí)間戳進(jìn)行比較,若相鄰記錄的時(shí)間戳差值小于用戶(hù)定義的閾值,則認(rèn)為重復(fù)讀取發(fā)生,剔出后1條記錄。依次類(lèi)推,剔出掉所有冗余數(shù)據(jù)。利用Web Services技術(shù)將對(duì)數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)以服務(wù)的形式發(fā)布,供企業(yè)內(nèi)部應(yīng)用程序和企業(yè)合作伙伴調(diào)用[2]。以數(shù)據(jù)過(guò)濾為例,其核心代碼如下:
評(píng)論