應 俊 王社周 吉福生
1(重慶郵電大學光電工程學院 重慶 400065)2(重慶郵電大學 重慶 400065)
?
基于ALE規范的分布式RFID中間件研究與實現
應俊1王社周1吉福生2
1(重慶郵電大學光電工程學院重慶 400065)2(重慶郵電大學重慶 400065)
摘要隨著RFID技術的應用范圍越來越廣,其系統規模也越來越大。RFID中間件效率低,且缺乏統一的標準。從實際出發,采用ALE(Application Level Event)規范設計一個通用的分布式RFID中間件架構。該架構不僅可以提供統一的接口,還可以有效地降低系統規模過大所帶來的不良影響。所設計的RFID中間件可以應用于物流管理、車輛管理、資產管理、生產制造等多種RFID技術應用場合。為驗證其性能,最后設計了基于RFID中間件的資產管理系統,通過應用驗證了基于ALE規范的分布式RFID中間件的可靠性和高效性。
關鍵詞ALE規范事件分布式數據過濾
0引言
經過多年的應用和發展,射頻識別技術RFID已經成為自動識別和數據收集系統的首選技術。RFID技術能夠以很高的速率接收海量的數據,它的這種能力使得RFID技術可以用來識別、定位、追蹤以及監管非視距內的物品[1]。目前RFID技術已經在很多領域得到了的應用,如:物流管理、零售、包裹管理以及安全和醫療等領域[2],給人們的生活帶來了極大的便捷。
同時由于RFID技術應用的深入,以及RFID系統規模的擴大,為了應對日益龐大的數據處理量、層次化RFID應用系統,RFID中間件應運而生。目前國外的RFID中間件產品主要有Oracle RFID中間件、IBM RFID中間件、BEA RFID中間件、SUN RFID中間件。國內的有華中科技大學開發的支持多通信平臺的 RFID 中間件產品Smart,上海交通大學開發的面向商業物流的數據管理與集成中間件平臺[3]。雖然這些產品已經開始應用,但是還存在如下一些問題:(1) 中間件對某些硬件設備依賴較大,無法實現通用性;(2) 通信以數據流為主;(3) 應用領域單一,無法給企業應用層提供統一的接口,以適應應用環境的變化。
針對上述問題,本文提出一種基于應用層事件規范ALE的RFID中間件設計方案。ALE規范由EPCglobal組織于2005年提出,它不針對某個應用和領域,而是完全作為國際標準存在[4],ALE規范通過對具體應用環境進行抽象,將應用環境和事件(Event)一一對應,對外提供符合該規范的應用接口。引入ALE規范可以有效地解決企業應用需求靈活多變、系統中冗余數據量大、底層設備種類繁多、應用接口不統一等問題,可以讓應用層軟件開發人員快速地開發出高質量、可移植、可擴展的應用軟件,可以屏蔽底層設備對應用軟件的影響。基于ALE規范設計RFID中間件對RFID技術的推廣應用具有極其重要的意義和必要性,但是規范并沒有給出設計RFID中間件的具體方法,而是定義了一系列接口[5]。本文不僅給出了中間件的設計方案,而且在最后開發了基于RFID技術的資產管理系統,以驗證RFID中間件的性能。
1RFID中間件架構設計
軟件架構的設計,是設計軟件的第一步。本文在ALE規范的基礎上,同時為了進一步擴大RFID中間件的應用范圍和使用靈活性,設計了一種可以適用于分布式、多網關應用環境的中間件架構。該架構由兩部分組成:RFID中間件服務器和網關,如圖1所示。

圖1 RFID中間件架構圖
本文將RFID中間件服務器作為服務提供方,為了能夠更好地提供服務,減小與應用軟件的耦合, RFID中間件服務器采用面向服務的體系結構SOA(Service-Oriented Architecture),實現發布/訂閱模型,屏蔽服務發布者和訂閱者。共包括設備管理、事件管理、觸發器管理以及狀態策略管理等四個模塊,設備管理模塊用于對設備進行初始化及狀態的監管,與其他模塊無交集。事件管理模塊、觸發器模塊和狀態策略模塊以ECSpec作為主線相互影響、相互配合,并最終完成一次應用層的請求。事件管理模塊中的ECSpec決定觸發器的初始化,而觸發器決定狀態策略模塊中事件狀態的轉移,事件的不同狀態又會反過來影響事件管理模塊的進一步操作。三個模塊之間相輔相成,共同完成RFID中間件服務器的事件處理功能。
網關包括設備注冊、驅動裝載、設備巡檢、數據過濾和數據組合等模塊,主要實現對標簽數據的收集及預處理,以及對設備進行直接的監控。
2RFID中間件服務器
作為SOA技術的一種實現方式,RFID中間件服務器采用Web Service技術實現。Web Service提供了基于XML的標準接口,具有完好的封裝性、松散的耦合性、協議規范的標準性以及高度的可集成性等特點,能夠良好地滿足SOA應用模式的需求[6]。使用過程中應用系統可以通過請求服務的方式獲取RFID中間件提供的服務。
RFID中間件服務器連接應用層和網關,對事件以及數據進行處理和中轉。其中設備管理模塊用于中轉設備管理指令;事件管理模塊,負責事件的處理和報告的生成;觸發器模塊,決定事件的開始和結束;狀態策略模塊,用于管理事件的狀態。
2.1事件管理模塊
事件管理模塊用于給應用層提供接口,將具體的應用場景抽象化,并通過Web Service中不同的函數和參數列表來表示不同的應用場景。接口主要分為三種:事件定義、事件訂閱和回調函數。應用層依次調用各種接口并配合狀態策略模塊和觸發器模塊實現相應的功能,其流程如下所示:
(1) 事件定義,應用層調用事件定義函數(define或Immediate函數)將輸入的ECSpec分解存入到數據庫中,保證后續訂閱者的正常使用;
(2) 事件訂閱,應用層訂閱(Subscribe或Poll函數)感興趣的事件,將其從數據庫中取出轉化為一個事件對象存儲在內存中,不同的事件通過SpecName進行區分,同時通過狀態轉移模塊改變事件的狀態;
(3) 事件觸發,觸發器模塊激活內存中對應的事件,將ECSpec對象中的SpecName和邏輯讀卡器ID列表組成一個結構體發送到網關中,網關開始讀取標簽;
(4) 報告生成,由觸發器模塊結束相應的事件,報告生成模塊將接收到的標簽數據組合成一個XML格式的報告上傳給應用層,或者是等待應用層主動取走。
除上面提到的接口外,還有取消事件定義(Undefine和AbortImmediate)、取消事件訂閱(Unsubscribe和AbortPoll)、觸發器接收函數(PushTrigger)、事件注冊(UpdateEvent)和網關上傳數據(PushData)等函數。
其中從功能上看,Poll函數相當于執行一次Subscribe函數,并且事件周期結束后立即再執行一次Unsubscribe函數,而Immediate函數相當于define函數加上Poll函數再加上Undefine函數依次執行一次[7]。工作流程如圖2所示。

圖2 事件管理模塊工作流程
2.1.1事件周期定義
在ALE規范中,ECSpec是應用場景抽象的結果[8]。ECSpec作為系統的輸入,它的設置滿足大部分應用場景,其字段列表如表1所示。在表中邏輯讀卡器列表是相對真實的物理讀卡器而言的,之間呈一對多的層次關系。通常將一個房間或是相對獨立環境中的物理讀卡器定義為一個邏輯讀卡器,應用系統只需操作對應邏輯讀卡器,而不用關心物理讀卡器。邏輯讀卡器的設置進一步降低了應用系統和物理設備之間的耦合性,物理設備的增減更加隨意;事件周期邊界ECBoundarySpec(Event Cycle Boundary Specification)定義一個事件周期的開始和結束,包含決定字符串觸發器和時間觸發器工作形式的條件,而具體的觸發工作由觸發器模塊控制;事件周期報告ECReportSpec(Event Cycle Report Specification)定義在事件周期結束時如何生成一個報告,即定義生成的報告中應該含有的信息。一個ECSpec可以生成多個報告;includeSpecInReports定義在報告中是否包含ECSpec的原始定義;primaryKeyFields定義標識標簽唯一性的標簽字段,如EPC值等。通過define函數異步定義的ECSpec,其他用戶可以通過SpecName使用這個ECSpec,而Immediate函數定義的ECSpec只有發起該請求的用戶可以使用。

表1 ECSpec對象定義
2.1.2報告生成模塊
由網關收集到的數據只包含由標簽和邏輯讀卡器ID組成的鍵值對,為了在反饋給應用層的報告中包含在事件周期中發生的更多信息,報告生成模塊在接收到這些數據后,需要按照對應ECSpec的要求進行處理。解析不同參數的ECSpec,模塊會生成包含不同信息的報告,最終報告以標準的XML格式通過回調函數以同步或者是異步方式返回給應用層,XML格式的字段如表2所示。

表2 ECReport對象定義
2.2狀態策略模塊
狀態策略模塊用于輔助事件管理模塊對事件的狀態進行管理,在設計中,將事件的整個生命周期分為三種狀態:Unrequested、Requested、Active。Unrequested表示事件已經被定義(define函數),但是沒有人訂閱該事件;Requested表示至少有一個人訂閱了該事件,但是還沒有開始閱讀標簽;Active狀態表示物理讀卡器正在讀標簽。事件每進入和離開一次Active狀態,就會產生一個報告。由定義可知,subscribe函數訂閱的事件可以多次進入和離開Active狀態,而Poll和Immediate函數只能進入和離開Active狀態一次,從而只能產生一個報告。此外,由Immediate函數定義的事件沒有Unrequested狀態而是直接進入Requested或者是Active狀態。事件處于不同的狀態時,應用層調用同一個函數其后繼狀態不同。狀態策略模塊會根據狀態轉換規則轉換ECSpec的狀態,具體狀態轉移如圖3所示。

圖3 狀態轉移策略模塊
事件周期的開始和結束對應著進入或離開Active狀態,而對網關而言當事件轉移到Active狀態時開始注冊事件(UpdateEvent)。當離開Active狀態時取消事件注冊(和注冊事件是同一個接口),同時上傳數據(PushData)到中間件服務器。
2.3觸發器模塊
觸發器用于決定事件的開始和結束,在本文設計的RFID中間件中,將觸發器定義為兩種:時間觸發器和字符串觸發器,兩者均由ECSpec定義。前者主要是從時間上定義事件何時開始執行、執行多長時間、何時結束、循環執行的間隔;而后者通過事先約定好的兩個字符串表示事件的開始或結束。在使用過程中一個事件要保證至少存在一種觸發器。其工作流程如圖4所示,首先是通過事件管理模塊定義ECSpec;其次是根據ECSpec初始化兩種觸發器;最后由先被觸發的兩個觸發器之一改變事件的狀態,進而影響事件管理模塊的操作。

圖4 觸發器工作流程
2.4設備管理模塊
設備管理模塊功能上獨立于其他三個模塊,與事件無關。主要是為系統中的設備初始化和巡檢提供服務,對數據庫進行讀和寫操作。設備初始化包括對網關和閱讀器的初始化,設備管理模塊根據輸入的網關ID以XML格式返回網關的配置信息,網關根據配置信息對網關自身及所屬閱讀器進行初始化操作。巡檢時設備管理模塊為其提供需要巡檢的閱讀器信息,并通過該模塊將巡檢結果實時地寫入到數據庫中。
3網關設計
網關連接射頻網絡和Internet網絡,所以網關的首要任務是協議轉換、解析并過濾數據。此外,還要負責底層設備的巡視、監管及驅動裝載,負責事件的具體執行。本文所設計的網關以一個由SpecName和對應的邏輯讀卡器列表組成的結構體作為輸入,以SpecName和收集到的標簽數據組合的結構體作為輸出。網關在處理過程中只需要關心自己所屬的邏輯讀卡器應該做什么工作,而不需要操作事件本身。從邏輯上對系統進行了明確的劃分,明確了系統中各個模塊的功能,讓系統從邏輯上達到“松耦合”。網關分布式地存在于系統中,多個網關之間以網關ID、IP地址等信息標識。
3.1設備注冊
設備注冊主要用于在系統中添加新的設備。如果物理閱讀器要想加入到系統中,首先是要通過注冊將物理讀卡器的相關信息輸入到系統中,需要輸入的信息主要有物理讀卡器ID、物理讀卡器IP地址、所屬邏輯讀卡器ID、MAC地址等。添加邏輯讀卡器和網關時需要提供額外的所屬網關ID等。只有通過注冊的設備,才可以在系統中使用,同時也才會納入到系統的自動巡檢范圍內,以保證兩者之間進行可靠的信息交互。
3.2驅動裝載
不同的企業、不同的應用環境下所使用的硬件設備可能會不同,從而造成數據采集協議的不同。為了充分減小底層設備的改變對中間件的影響,本文設計了驅動裝載模塊,預留出統一的接口供RFID中間件調用。模塊的基本原理如圖5所示:(1) 根據協議描述文檔從dll與協議匹配庫中選擇或直接添加dll和協議文檔;(2) 通過中間件接口生成一個新的dll文件;(3) 中間件通過中間件接口訪問新生成的dll文件獲取數據,從而使RFID中間件適應不同的應用環境。

圖5 驅動裝載架構圖
驅動模塊的設計避免了閱讀器和標簽與上下系統綁定所帶來的局限,符合應用過程中的實際需求,同時也增強了RFID中間件的擴展性。
3.3數據過濾
RFID閱讀器讀到的標簽數據通常都是一些原始的標簽數據,包含大量冗余數據,其產生的主要原因有:(1) 標簽長時間處于一個閱讀器的射頻掃描范圍內,被一個閱讀器重復讀取多次;(2) 標簽處于多個閱讀器的射頻掃描范圍內,在一段時間內被多個閱讀器同時讀到并上報[9]。
為了減小系統的負擔,接收到的數據要經過過濾,所以數據過濾在RFID中間件中占據一個重要的地位。數據過濾算法通常被分為兩種:一種是查找_插入法,一種是收集_刪除法。前者是在接收數據的同時,判斷容器中是否已經有當前的標簽數據,如果沒有,則插入,否則不插入。后者是等將所有的數據收集完成后,在最后匯總時,刪除里面重復的數據。本文采用查找_插入法,利用平衡二叉樹的快速查找的優點過濾數據。
現有的平衡二叉樹結構如圖6所示,每一個節點表示一條數據,每一條數據占據12(以96位長度為例)個字節。每接收一條數據就在平衡二叉樹中進行查找比較,看是否有相同的數據存在,若存在,則直接過濾掉。若不存在,則直接將數據插入二叉樹中,并進行二叉樹的平衡處理。該算法雖然簡單,但是要消耗掉很大內存去存儲數據,在RFID中間件處理海量數據時將會嚴重地降低中間件的性能。

圖6 平衡二叉樹結構
所以本文在此基礎上進行了改進,改進后的平衡二叉樹結構如圖7所示。該方法將標簽數據根據規定進行切割,分為四部分,每一部分對應一個平衡二叉樹。于是將一個平衡二叉樹分為四個不相關的平衡二叉樹,并分別進行平衡性維護。在第一、二、三層二叉樹中存儲對應碼段的真實數據,并給每一層的節點按照從上到下,從左到右的順序依次編碼為1,2,3,…。在第四層的二叉樹節點中存儲的數據結構為1101,000169DC0。其中第一個‘1’表示第一層編號為1的節點,第二個‘1’表示第二層編號為1的節點,隨后的兩位‘01’表示第三層編號為1的節點。最后加上RFID標簽的第四段數據。如020000A890001 70000169DC0可以表示為:1102,000169DC0,020000A8900017 0000169DC0和020000A8900016F000169DC0可以合并保存為1101,1102,000169DC0。

圖7 改進平衡二叉樹結構
在進行查找時,只需要比較第四層是否有相同的數據,若有,則直接過濾掉。若沒有,則更新每一層的平衡二叉樹,并使其維持平衡,從而實現查找,基本流程如圖8所示。該方法雖然從節點的數量上來看比原有的方法要多一些節點,但是表示相同的信息時將會消耗更小的內存,而且在查找二叉樹時,所需要比較的數據長度也小于原有算法。改進的算法性能更優,在實際的應用中具有重要的意義。

圖8 數據查找流程圖
在RFID中間件中數據的收集以ECSpec為單位進行,由于事件之間的交叉性,不同的事件可能涉及到相同的邏輯讀卡器,進而對應一些相同的物理讀卡器。由于事件定義的先后,導致在進行標簽數據收集時,無法共享邏輯讀卡器。為了解決這個問題,設計了如圖9所示的數據收集流程,在系統中有物理讀卡器讀取標簽的周期C1,邏輯讀卡器讀取周期C2,事件周期C3。工作過程為:首先,物理讀卡器以C1為周期讀取標簽,讀到標簽以后對讀到的標簽進行去重,存放到物理讀卡器標簽庫中;其次,邏輯讀卡器以C2為周期讀取物理讀卡器標簽庫中的數據同時清空物理讀卡器庫,將去重后的數據上報給涉及到該邏輯讀卡器的所有事件庫,事件庫完成對邏輯讀卡器上傳來的相同標簽的去重;最后,事件庫以C3為周期將對應事件庫中標簽組合為一個報告上傳給應用層,并清空事件庫。這種結構可以有效地解決系統中的邏輯讀卡器共享問題。

圖9 數據收集流程
3.4巡檢
巡檢的設計,主要是為了使系統具有自檢和自動恢復功能,可以及時地發現系統中出現問題的設備,增強系統的可靠性,同時在一定程度上降低系統的維護開支。設備巡檢的流程如圖10所示。

圖10 巡檢工作流程
4中間件應用
經過多次修改,RFID中間件達到了預定設計目標,各個模塊均正常運行,有效地解決了接口統一性問題。而中間件的分布式、多網關架構相對于單網關系統而言,減少了數據排隊時間,增加了系統的并行處理能力,提高了系統的效率。為了進一步驗證該中間件的可靠性,開發了基于RFID技術的資產管理系統,目前該資產管理系統已經在多地成功投入使用,功能列表如圖11所示。從圖中可以看到資產管理系統實現了自動“盤點掃描”的功能,該功能使得資產管理員在統計資產信息時由原來的手動登記變成自動盤點掃描。資產管理員通過系統發起盤點請求,使得資產盤點工作由原來的數月變為可以在一天,甚至更短時間內完成(部分資產需要使用手持閱讀器進行補充盤點)。掃描可以快速定位某一個資產,該功能的設計極大地提高了資產的管理效率。圖11中的“資產移動”功能可以實現在線申請資產調撥,記錄詳細資產移動路徑。“門禁跟蹤和警報”功能可以及時發現資產越界,實時掌握資產動態,降低資產管理過程中人為造成的差錯,提高了資產管理系統的安全性。“資產出入庫”功能通過入庫操作,將資產納入到系統的監管范圍內,通過出庫操作處理報廢的資產,該功能明確了資產的生命周期。“報表統計”等功能用于統計資產的詳細信息。總之,設計的基于RFID技術的固定資產管理系統有效地提高了資產的管理水平。

圖11 系統應用實例
5結語
中間件用于過濾冗余數據、屏蔽設備的差異性和企業應用軟件的多樣性,在RFID應用系統中具有重要的地位。本文首先介紹RFID中間件的研究背景,并說明在RFID中間件中引入ALE規范的意義和必要性,然后給出本文提出的RFID中間件架構設計方案。依次分析介紹了架構所涉及各個模塊的設計原理、工作流程以及它們之間的邏輯關系。所設計的RFID中間件具有很好的通用性,可以應用于多個領域。最后通過在固定資產管理系統中的成功應用驗證了本文設計的基于ALE規范的RFID中間件的正確性和接口的通用性。本文的研究進一步促進了RFID技術的推廣和應用,但是隨著RFID技術的不斷發展對RFID中間件的要求也將隨之不斷提高,如需要更完善的功能設計、更高效的數據過濾等,所以RFID中間件也需要不斷的研究與發展。
參考文獻
[1] 張旭,雷日春.RFID在紡織品檢驗實驗室樣品管理系統中的應用[J].中國纖檢,2014(6):62-64.
[2] 萬小明.淺析RFID技術在物流行業中的應用前景[J].物流工程與管理,2012(3):86-87.
[3] 董旭.一種分布式RFID ALE中間件系統設計與實現[D].電子科技大學,2012.
[4] 楊海剛.ALE中交易事件的處理方法與技術研究[D].北方工業大學,2014.
[5] 郭躍輝,艾君銳.基于ALE規范的RFID中間件的研究與設計[J].現代計算機:專業版,2010(10):79-82.
[6] 李捷.一種基于SOA的RFID中間件應用方案設計[J].微計算機信息,2009,25(11):181-183.
[7] Kang S S,Park G J.Design and Implementation of ALE v1.1 Middleware in RFID systems[C]//New Trends in Information and Service Science,2009.NISS’09.International Conference on.IEEE,2009:815-821.
[8] Li X,Xu Z,Wu L.A design for RFID middleware system extended from ALE specification[C]//Software Engineering and Service Science (ICSESS),2012 IEEE 3rd International Conference on.IEEE,2012:271-274.
[9] 孫紅,厲彥剛,陳世平.RFID中間件數據處理研究[J].上海理工大學學報,2014(3):234-238.
收稿日期:2015-01-20。國家自然科學基金項目(61371097);國家物聯網專項(工信部科函[2014]351號);重慶市青年科技人才培養計劃項目(cstc2014kjrc-qnrc40001)。應俊,副教授,主研領域:電子信息技術。王社周,碩士生。吉福生,工程師。
中圖分類號TP3
文獻標識碼A
DOI:10.3969/j.issn.1000-386x.2016.07.004
RESEARCH AND IMPLEMENTATION OF DISTRIBUTED RFID MIDDLEWARE BASED ON ALE SPECIFICATION
Ying Jun1Wang Shezhou1Ji Fusheng2
1(SchoolofOptoelectronicEngineering,ChongqingUniversityofPostsandTelecommunications,Chongqing400065,China)2(ChongqingUniversityofPostsandTelecommunications,Chongqing400065,China)
AbstractAs the application range of RFID technology becomes increasingly wide, the system size becomes bigger and bigger as well. RFID middleware has low efficiency and lacks the uniform standards. Proceeding from actual situation, in this paper we adopt the ALE specification to have designed a universal distributed RFID middleware architecture, this architecture can not only provide a uniform interface, but can also effectively reduce the bad influence on the system caused by its too big size. The designed RFID middleware can be applied to various situations where the RFID technology is used such as logistics management, vehicles management, assets management, manufacturing, etc. To verify its performance, in end of this paper we report the design of an RFID middleware-based fixed assets management system, it verified the reliability and efficiency of the ALE specification-based distributed RFID middleware through application.
KeywordsApplication level events (ALE) specificationEventDistributedData filter