劉建華,陳歡歡
(華北水利水電學(xué)院,河南鄭州450045)
RFID中間件是介于RFID讀寫器和后端應(yīng)用程序之間的獨(dú)立軟件,是底層RFID設(shè)備與上層RFID應(yīng)用軟件之間的中介和聯(lián)系紐帶.它能夠屏蔽底層RFID設(shè)備之間的差異,封裝底層數(shù)據(jù)處理的復(fù)雜性,為上層應(yīng)用程序提供簡潔、一致的接口.基于此,即使底層RFID設(shè)備改變或種類增加,上層應(yīng)用軟件不需要修改也能應(yīng)對這些變化,從而減輕了多對多連接的設(shè)計(jì)與維護(hù)的復(fù)雜性.RFID中間件的存在使得上層應(yīng)用與底層設(shè)備相互獨(dú)立,企業(yè)的各種應(yīng)用都可以利用RFID技術(shù),從而促進(jìn)RFID技術(shù)更廣泛、更豐富的應(yīng)用[1].
RFID中間件技術(shù)的發(fā)展經(jīng)歷了3個(gè)階段.
1)應(yīng)用程序中間件(Application Middleware)發(fā)展階段.該階段RFID中間件所起的作用主要是屏蔽不同讀寫器設(shè)備差異,為上層應(yīng)用程序獲取RFID數(shù)據(jù)提供統(tǒng)一接口,一般沒有對RFID數(shù)據(jù)清理的功能.
2)基礎(chǔ)架構(gòu)中間件(Infrastructure Middleware)發(fā)展階段.該階段是在上一階段的基礎(chǔ)上增加了數(shù)據(jù)平滑、過濾、事件發(fā)布等功能,通常還具備一定的平臺(tái)管理和維護(hù)功能.
3)解決方案中間件(Solution Middleware)發(fā)展階段.一些國際知名的大型軟件公司,針對某些行業(yè)的應(yīng)用共性,提出了一整套R(shí)FID技術(shù)解決方案,并實(shí)現(xiàn)為可配置的RFID中間件.目前,常見的大型RFID中間件有:EPC標(biāo)準(zhǔn)體系中的Savant中間件、SUN公司的RFID中間件、IBM公司的RFID中間件和微軟的RFID中間件等.這些RFID中間件通常融合了該企業(yè)的多種技術(shù),實(shí)現(xiàn)多種服務(wù),功能較完備.但是其結(jié)構(gòu)過于復(fù)雜,規(guī)模過于龐大,用戶在部署、配置、維護(hù)時(shí)難度較高.
IBM、SUN、微軟等公司開發(fā)的RFID中間件功能完善,安裝配置復(fù)雜,適合于大型企業(yè)應(yīng)用項(xiàng)目,對中小型項(xiàng)目而言,其提供的許多功能根本用不到.鑒于此,設(shè)計(jì)一個(gè)輕量級的RFID中間件,能提供屏蔽讀寫器設(shè)備差異、數(shù)據(jù)獲取、數(shù)據(jù)平滑與清理、事件發(fā)布等基本或常用功能,可滿足中小型項(xiàng)目的實(shí)際應(yīng)用需求,具有重要的應(yīng)用價(jià)值.
不同公司開發(fā)的適用于不同場景的RFID讀寫設(shè)備,其工作頻率、通信協(xié)議、參數(shù)設(shè)置等各不相同.為了屏蔽這些讀寫器設(shè)備的差異,RFID中間件必須提取這些讀寫器設(shè)備的共同特性及功能,創(chuàng)建一個(gè)抽象代理,向上層提供一個(gè)獲取數(shù)據(jù)的統(tǒng)一接口.
RFID中間件應(yīng)具備從讀寫器設(shè)備獲取RFID數(shù)據(jù)并向上層應(yīng)用提供數(shù)據(jù)的基本功能.此處所指RFID數(shù)據(jù)包含時(shí)間、讀寫器標(biāo)識(shí)、電子標(biāo)簽標(biāo)識(shí)信息,可用一個(gè)三元組來表示(timeStamp,readerID,tagID),timeStamp表示時(shí)間戳,readerID表示讀寫器標(biāo)識(shí),tagID表示電子標(biāo)簽標(biāo)識(shí).
電子標(biāo)簽與讀寫器之間通過無線電波傳輸數(shù)據(jù),這種通信介質(zhì)和方法具有不可靠性,容易造成某些數(shù)據(jù)的丟失.為了解決這個(gè)問題,需要對RFID數(shù)據(jù)進(jìn)行平滑處理.平滑處理包括時(shí)間上的平滑和空間上的平滑.時(shí)間上的平滑主要指延長讀寫器對電子標(biāo)簽的讀取時(shí)間.這個(gè)時(shí)間段通常包含多個(gè)讀寫周期,在每個(gè)讀寫周期讀取到電子標(biāo)簽的可靠性不變的條件下,多次讀取,可以提高讀取到電子標(biāo)簽的概率.空間上的平滑是指用多個(gè)讀寫器對同一電子標(biāo)簽進(jìn)行讀取,以提高讀取到電子標(biāo)簽的概率.依據(jù)應(yīng)用的需求不同,可以只采用時(shí)間平滑或空間平滑,也可以兩者都采用.
因?yàn)閿?shù)據(jù)平滑的需要,引入了冗余數(shù)據(jù),這就需要再對冗余數(shù)據(jù)進(jìn)行清理.例如,某個(gè)讀寫器在一段時(shí)間內(nèi)多次讀取到了某個(gè)電子標(biāo)簽,形成了該標(biāo)簽標(biāo)識(shí)的多條RFID數(shù)據(jù)記錄,數(shù)據(jù)清理的結(jié)果將只保留此段時(shí)間內(nèi)的一條RFID數(shù)據(jù),把冗余數(shù)據(jù)都刪除[2-3].
RFID中間件要將清理后的數(shù)據(jù)提供給上層應(yīng)用程序,或者將數(shù)據(jù)封裝成基本事件通知給上層應(yīng)用程序.通知上層應(yīng)用程序的方法也有很多種,通常采用發(fā)布訂閱機(jī)制,即上層應(yīng)用程序向RFID中間件訂閱其感興趣的某些事件,當(dāng)這些事件產(chǎn)生時(shí),RFID中間件將這些事件信息發(fā)布給訂閱過的應(yīng)用程序.
輕量級RFID中間件通過一個(gè)統(tǒng)一的接口從底層物理讀寫器獲取數(shù)據(jù),經(jīng)過數(shù)據(jù)平滑與清理、事件封裝與發(fā)布等過程,向上層應(yīng)用程序提供RFID數(shù)據(jù)或相應(yīng)事件通知.在整個(gè)處理過程中,RFID中間件將有用數(shù)據(jù)持久化存儲(chǔ)到關(guān)系數(shù)據(jù)庫中.其體系結(jié)構(gòu)設(shè)計(jì)如圖1所示.
圖1 輕量級RFID中間件體系結(jié)構(gòu)
為屏蔽不同讀寫器設(shè)備差異,可定義一個(gè)統(tǒng)一的讀寫接口,每一類物理讀寫器按照自己的通信協(xié)議具體實(shí)現(xiàn)這個(gè)接口.
數(shù)據(jù)獲取可以有主動(dòng)和被動(dòng)兩種模式.主動(dòng)模式是指由RFID中間件發(fā)出讀寫指令,通過讀寫器驅(qū)動(dòng)程序來啟動(dòng)讀寫器去讀取電子標(biāo)簽中的數(shù)據(jù)或往電子標(biāo)簽中寫入數(shù)據(jù).被動(dòng)模式是指讀寫器通電后一直處于工作狀態(tài),通過串口、以太網(wǎng)接口、無線網(wǎng)絡(luò)接口等不斷地往外發(fā)送數(shù)據(jù),中間件被動(dòng)地接收數(shù)據(jù).后一種讀寫器工作原理簡單,成本低廉,易于實(shí)現(xiàn),在市面上也比較常見.本次設(shè)計(jì)的輕量級RFID中間件采用被動(dòng)模式,即RFID中間件在某個(gè)端口監(jiān)聽讀寫器的數(shù)據(jù)傳輸連接,一旦監(jiān)聽到某個(gè)讀寫器的連接請求,就啟動(dòng)一個(gè)新線程并按照統(tǒng)一讀寫接口來獲取RFID數(shù)據(jù).數(shù)據(jù)采集過程如圖2所示.
圖2 數(shù)據(jù)采集示意圖
數(shù)據(jù)平滑模塊接收到讀寫器發(fā)送過來的RFID數(shù)據(jù)后,把數(shù)據(jù)放在當(dāng)前接收線程的緩沖區(qū)中.該緩沖區(qū)設(shè)計(jì)為映射表,鍵為標(biāo)簽標(biāo)識(shí)(記為tagID),值為RFID數(shù)據(jù)記錄三元組.每隔一段時(shí)間,對緩沖區(qū)中的數(shù)據(jù)做一次處理,這個(gè)時(shí)間段就是時(shí)間平滑窗口的尺寸.由于無線傳輸?shù)牟豢煽啃?、射頻信號(hào)碰撞等原因,在讀寫器的一個(gè)讀寫周期內(nèi)(例如5 s),可能漏讀了某些電子標(biāo)簽.有了緩沖區(qū)的設(shè)計(jì),通過設(shè)置時(shí)間平滑窗口跨越多個(gè)讀寫周期,對電子標(biāo)簽多次讀取,就能實(shí)現(xiàn)時(shí)間平滑的效果.由于映射表的鍵值不能重復(fù),這也就保證了在一個(gè)時(shí)間平滑窗口內(nèi),對同一個(gè)電子標(biāo)簽數(shù)據(jù)只存儲(chǔ)一次,冗余的時(shí)間平滑數(shù)據(jù)將被丟棄掉,實(shí)現(xiàn)對時(shí)間平滑產(chǎn)生的冗余數(shù)據(jù)的清理.時(shí)間平滑與清理過程如圖3所示.
圖3 時(shí)間平滑與清理示意圖
空間平滑的結(jié)果可能是在一段時(shí)間內(nèi),同一區(qū)域中的多個(gè)讀寫器都讀到了某個(gè)電子標(biāo)簽,而上層應(yīng)用只需要對這個(gè)電子標(biāo)簽讀取一次.這就需要對空間平滑產(chǎn)生的冗余數(shù)據(jù)進(jìn)行清理.
為了識(shí)別出哪些是冗余數(shù)據(jù),首先要對讀寫器進(jìn)行分組,將同一檢測區(qū)域內(nèi)的多個(gè)邏輯讀寫器分為一組,這個(gè)組編號(hào)叫做每個(gè)讀寫器的邏輯讀寫器編號(hào).RFID中間件對RFID數(shù)據(jù)流進(jìn)行過濾,如果是同一組內(nèi)的讀寫器讀取同一個(gè)電子標(biāo)簽的數(shù)據(jù),就只保留一份,把冗余數(shù)據(jù)扔掉.
RFID中間件在啟動(dòng)時(shí)會(huì)啟動(dòng)一個(gè)線程,專門負(fù)責(zé)空間平滑冗余數(shù)據(jù)清理的任務(wù),每隔一段時(shí)間(這個(gè)時(shí)間段被稱為空間平滑窗口的尺寸)從每個(gè)連接線程(連接讀寫器,用以讀取RFID數(shù)據(jù)流的線程)所維護(hù)的時(shí)間平滑緩沖區(qū)中讀取RFID數(shù)據(jù),提取每一條RFID數(shù)據(jù)的readerID字段,通過查設(shè)備表(存放有讀寫器編號(hào)和讀寫器組編號(hào)的映射信息),將readerID更新成對應(yīng)的讀寫器組編號(hào),記為LRID,然后再檢查清理線程所維護(hù)的緩沖區(qū)中是否存在和LRID、tagID都重名的數(shù)據(jù).如果有,就將這條記錄舍棄,如果沒有,將這條記錄放入緩沖區(qū).然后,繼續(xù)檢查下一條數(shù)據(jù),直到把同一組讀寫器各自維護(hù)的時(shí)間平滑緩沖區(qū)內(nèi)的RFID數(shù)據(jù)讀取完或時(shí)間上超出空間平滑時(shí)間窗口尺寸.至此,一次空間平滑冗余數(shù)據(jù)的清理任務(wù)完成[4-5].空間平滑與清理過程如圖4所示.
圖4 空間平滑與清理示意圖
經(jīng)過平滑與清理后的RFID數(shù)據(jù)就可以提供給應(yīng)用程序使用,通常為了減輕應(yīng)用程序的負(fù)擔(dān),將與RFID相關(guān)的事件處理的共性部分提取出來,放在RFID中間件中來實(shí)現(xiàn).設(shè)計(jì)的RFID中間件主要適用于倉庫管理、文物庫房管理等應(yīng)用場景,所以,結(jié)合業(yè)務(wù)邏輯,預(yù)定義了出庫事件、入庫事件、未授權(quán)出入庫事件、遺失事件、關(guān)聯(lián)事件等.當(dāng)這些事件發(fā)生時(shí),需要將事件通知給應(yīng)用程序,通常采用的做法是發(fā)布訂閱機(jī)制,本系統(tǒng)也采用這種機(jī)制.具體設(shè)計(jì)方案為:預(yù)定義相應(yīng)的事件類,用來封裝事件數(shù)據(jù),并定義相應(yīng)事件處理接口和接收對象注冊接口.當(dāng)應(yīng)用程序中的某個(gè)對象需要處理某類事件時(shí),只需實(shí)現(xiàn)處理相應(yīng)事件的接口,并把自己注冊給RFID中間件的相應(yīng)事件接收對象注冊列表.當(dāng)這個(gè)事件發(fā)生時(shí),RFID中間件就可以遍歷該事件的接收對象注冊列表,調(diào)用每一個(gè)接收對象的相應(yīng)事件處理接口方法,實(shí)現(xiàn)通知接收對象和事件處理的目的.
通過采用RMI、WebServices等技術(shù),由遠(yuǎn)程對象來實(shí)現(xiàn)具體的事件處理,并將遠(yuǎn)程對象注冊到RFID中間件的相應(yīng)事件接收對象注冊列表中,可以實(shí)現(xiàn)RFID中間件和上層應(yīng)用軟件的分布式部署.
按軟件工程的規(guī)范,用Java語言編程,實(shí)現(xiàn)了這個(gè)輕量級的RFID中間件.圖5給出了系統(tǒng)主要功能用例圖,圖6給出了系統(tǒng)時(shí)序圖,圖7為系統(tǒng)部署圖.該RFID中間件結(jié)構(gòu)清晰、占用系統(tǒng)資源少、性能良好.
圖7 系統(tǒng)部署圖
[1]路康,張啟峰.基于JMS的RFID中間件設(shè)計(jì)與實(shí)現(xiàn)[J].河南大學(xué)學(xué)報(bào):自然科學(xué)版,2008,38(5):537-540.
[2]蔣邵崗,譚杰.RFID中間件數(shù)據(jù)處理與過濾方法的研究[J].計(jì)算機(jī)應(yīng)用,2008,28(10):2613-2615.
[3]薛小平,張思東,王小平,等.RFID網(wǎng)絡(luò)的數(shù)據(jù)清理技術(shù)[J].計(jì)算機(jī)工程,2008,34(7):92 -94.
[4] Farahnaz Vahdati,Reza Javidan,Ahmad Farrahi.A new method for data redundancy reductionin RFID middleware[J].International Symposium on Telecommunications,2010(5):175-180.
[5]狄菲,趙衛(wèi)東,周志平,等.倉儲(chǔ)管理中的RFID中間件設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2008,28(S1):257 -259,262.