RFID中間件ALE引擎設計與實現(xiàn)
引 言
無線射頻識別技術(Radio Frequency Identification,以下簡稱RFID)是從20 世紀90 年代 興起的一項自動識別技術,它利用無線射頻方式進行非接觸雙向通信,以達到識別目的并交 換數(shù)據(jù)。隨著RFID 技術和應用的發(fā)展,RFID 系統(tǒng)日趨復雜,RFID 中間件的出現(xiàn)很好地解 決了將物理基礎架構收集到的信息傳遞給企業(yè)應用程序的問題。中間件的主要任務是對讀寫 器傳來的與標簽相關的事件、數(shù)據(jù)進行過濾、匯集和計算,減少從讀寫器傳往企業(yè)應用的巨 量原始數(shù)據(jù)、增加抽象出的有意義的信息量,并提供應用程序級別的接口來查詢RFID 事件 。
ALE是應用層事件簡稱,最初作為Savant 應用的一部分開發(fā)而成,如今歸屬于國際 標準組織EPCglobal,它是旨在把低層的電子產品代碼(EPC)數(shù)據(jù)和高層的企業(yè)系統(tǒng)相互連 接的EPCglobal 網(wǎng)絡計劃的一部分,現(xiàn)在已成為標準。RFID 中間件應該提供符合ALE 標 準的接口供企業(yè)系統(tǒng)或者第三方組件訪問,擴大中間件的適用范圍,因此設計和開發(fā)可重構 的、可靠的ALE 引擎對實現(xiàn)成熟的RFID 中間具有重要意義。
1 相關研究
1.1 應用層事件(ALE)標準
RFID 讀寫器在工作時不停地讀取標簽,造成同一個標簽在短時間內可能被讀到很多次, 這些數(shù)據(jù)如果直接發(fā)送給應用程序將為通信網(wǎng)絡帶來很大的負擔,所以需要RFID 中間件對 這些原始數(shù)據(jù)進行一層收集和過濾的處理。ALE 的出現(xiàn)就是為了減少原始數(shù)據(jù)的冗余性,為 應用系統(tǒng)從大量數(shù)據(jù)中提煉出有效的業(yè)務邏輯。ALE 層介于應用業(yè)務邏輯和原始標簽讀取層 之間,它接收從數(shù)據(jù)源(一個或多個讀寫器)中讀取的標簽信息,而后按照時間間隔等條件 收集數(shù)據(jù),將重復或不敢興趣的EPC 數(shù)據(jù)剔除過濾,同時可以進行計數(shù)及組合等操作,最 后將這些信息對應用系統(tǒng)進行匯報。
在 ALE 中,應用系統(tǒng)可以定義這些內容:在什么地方(地點可以映射一個或多個讀寫 器及天線)讀取標簽,將在怎樣的時間間隔內(決定時間、某個外部事件觸發(fā))收集數(shù)據(jù), 如何過濾數(shù)據(jù),如何整理數(shù)據(jù)報告內容(按照公司、商品還是標簽分類),標簽出現(xiàn)或消失 時是否對外報告,以及統(tǒng)計讀取到的標簽數(shù)目等。
ALE 標準定義的是一組接口,它不牽涉到具體實現(xiàn)。在EPCglobal 組織的規(guī)劃中,支 持ALE 標準是RFID 中間件的最基本的一個功能;這樣,在統(tǒng)一的標準下,應用層上的調用 方式就可統(tǒng)一,應用系統(tǒng)也就可以快速部署。因此,實現(xiàn)ALE 引擎對RFID 中間件具有重要意義。
1.2 OSGi
OSGi(Open Systems Gateway Initiative)[4]規(guī)范為網(wǎng)絡服務定義了一個標準的、面向組件 的計算環(huán)境,在此環(huán)境中軟件組件可以從運行中被安裝、升級或者移除而不需要中斷設備的 操作,還可以動態(tài)的發(fā)現(xiàn)和使用其他庫或者應用程序。采用OSGi 的一種考慮是因為中間件 的開發(fā)要依據(jù)組件概念來進行設計,這些組件被開發(fā)為軟件包,通過引用的方式來進行互調。 在OSGi 框架中,應用程序可以單獨進行部署,以軟件包的形式進行開發(fā)。正確的使用該模 型可以使軟件包進行重用和快速替換,并且使第三方軟件包重用成為可能。
2 引擎設計
如圖1所示,ALE引擎由引擎內核、數(shù)據(jù)處理和事件處理三大模塊組成,它們結合起來 滿足ALE標準所要求的接口功能。

圖1 ALE引擎架構
2.1 事件處理模塊
事件處理模塊分為四個字模塊:應用層事件接口是符合 ALE 標準的程序接口,提供標 準的方法供應用程序調用以獲取ALE 標準的功能;事件請求模塊分析應用程序的事件請求,即ALE 標準中定義的ECSpec ,并根據(jù)請求對事件報告組建模塊、引擎內核、數(shù)據(jù)過濾模 塊、數(shù)據(jù)分組模塊和數(shù)據(jù)格式轉換模塊進行相應的配置;事件報告組建模塊負責按照應用程 序的事件請求生成數(shù)據(jù)報告,數(shù)據(jù)報告有統(tǒng)一的格式,但是應用程序可以指定報告的種類(當 前讀取標簽/消失標簽/新增標簽)和數(shù)據(jù)分組的規(guī)則;根據(jù)ALE 標準應用程序可以以異步 的方式請求數(shù)據(jù)報告,報告分發(fā)模塊提供了以異步方式向事件報告訂閱者發(fā)送報告的功能, 發(fā)送方式可以是HTTP, FTP, Web Service 等多種方式。
2.2 引擎內核
事件管理是 ALE 引擎中最核心的功能,引擎內核模塊負責管理事件的生命周期,如圖 2 所示。在ALE 模型中有幾個最基本的概念:讀周期(Read Cycle),事件周期(Event Cycle)和事件周期定義(ECSpec)。讀周期是和讀寫器交互的最小時間單元,一個讀周期的 結果是一組EPCs 集合,讀周期的時間長短和具體的天線、無線射頻協(xié)議有關,讀周期的輸 出就是ALE 層的數(shù)據(jù)來源。事件周期可以是一個或多個讀周期,它是從用戶的角度來看待 讀寫器的,并可以將一個或多個讀寫器當作一個整體,是ALE 接口和用戶交互的最小時間 單元。應用業(yè)務邏輯層的客戶在ALE 中定義好ECSpec 之后,就可接收相應的事件周期的 數(shù)據(jù)報告。

圖2 事件周期定義(ECSpec)狀態(tài)轉移圖
2.3 數(shù)據(jù)處理模塊
數(shù)據(jù)處理模塊分為四個子模塊:數(shù)據(jù)隊列模塊負責緩存數(shù)據(jù),當讀寫器讀取到一個標簽 時會把數(shù)據(jù)放入相應的隊列,其他的數(shù)據(jù)處理模塊會把數(shù)據(jù)從隊列中取出然后進行處理,當 隊列滿了或者超時數(shù)據(jù)會從隊列中刪除;數(shù)據(jù)格式轉換模塊根據(jù)應用的要求對數(shù)據(jù)做出格式 轉換;數(shù)據(jù)過濾模塊根據(jù)ECSpec的定義對數(shù)據(jù)進行過濾,過濾規(guī)則包括‘包含模式’和 ‘排除模式’兩種模式[3],最后出現(xiàn)在報告中的標簽信息至少要與‘包含模式’列表中的一 個模式匹配,并且不能與任何出現(xiàn)在‘排除模式’中的模式匹配;數(shù)據(jù)分組模塊根據(jù)ECSpec 的定義對過濾后的數(shù)據(jù)進行分組和統(tǒng)計。
3 引擎內核實現(xiàn)
引擎內核采用事件驅動的方式實現(xiàn),見圖 3。

圖3 引擎內核實現(xiàn)
一個 ECSpec 在內核里對應著一個事件周期管理者,應用層對于ALE 讀接口的調用會 映射到具體的事件周期管理者上,由事件周期管理者來完成接口提供的功能。當一個 ECSpec 被定義時(即調用define 或immediate 方法),引擎就會為這個ECSpec 創(chuàng)建 對應的事件周期管理者,同時創(chuàng)建一個事件周期對象和各種觸發(fā)器。當ALE 接口調用請求 者第一次對某個ECSpec 發(fā)出調用請求時(例如調用subscribe, poll, immediate 方法) 將激活對應的事件周期管理者,此時由這個事件周期管理者所控制的事件周期對象和各個觸 發(fā)器也被激活,事件周期對象開始按照ECSpec 中所定義的邊界條件開始和結束激活狀態(tài), 并收集RFID 標簽數(shù)據(jù)。當最后一個接口調用請求的調用方法返回時,事件周期管理者再次 進入休眠狀態(tài),對應的事件周期對象和各個觸發(fā)器也停止運行,直到被再次喚醒或者隨著該 ECSpec 的撤銷被撤銷。
ECSpec 會在未請求、已請求和活躍狀態(tài)三種狀態(tài)的之間遷移,狀態(tài)策略模塊根據(jù)狀 態(tài)轉換的規(guī)則轉換ECSpec 的狀態(tài)。外部調用請求會導致狀態(tài)的變遷,不同的狀態(tài)下接收 到相同的調用請求除了執(zhí)行不同的操作外還可能使ECSpec 變遷為不同的后繼狀態(tài),因此 這里使用了狀態(tài)模式。每一時刻ECSpec 都會處于某一種狀態(tài)中,事件周期管理者接收到 接口調用請求后都會把請求代理給狀態(tài)策略模塊,由當前狀態(tài)策略決定對調用如何響應和確 定后繼狀態(tài)是什么。
ALE 標準中定義了事件周期觸發(fā)器,并且具體定義了一個時間觸發(fā)器。在引擎中,除了 這個時間觸發(fā)器外,所有事件周期邊界條件都被看作是一種觸發(fā)器,因此抽象出一個觸發(fā)器 接口Trigger 。事件周期中定義的各種的邊界條件, 如duation, repeatPeriod, stableSetInterval 等等都是抽象Tigger 的具體實現(xiàn)。因此抽象Trigger 可以理解為影響事 件周期開始和結束的觸發(fā)條件,而ALE 標準中所定義的ECTrigger 成為抽象Trigger 的其中 一種具體實現(xiàn)。在具體觸發(fā)器的創(chuàng)建過程中使用了抽象工廠模式,事件周期管理者在初始化 的時候調用工廠方法創(chuàng)建各種具體的觸發(fā)器。
4 結 論
使用事件驅動的方式設計和實現(xiàn)了 ALE 引擎,減低了各模塊之間的耦合度,有利于引 擎的維護和擴展。抽象了事件周期觸發(fā)器概念,令所有邊界觸發(fā)條件和觸發(fā)器能夠統(tǒng)一管理 和工作,簡化了把用戶自定義的觸發(fā)器加入引擎的過程,令觸發(fā)器系統(tǒng)有更好的擴展性。作 為RFID 中間件中重要的部分,該引擎為可重構的RFID 中間件提供了很好的支持。而采用 OSGi 技術實現(xiàn)ALE 引擎得以實現(xiàn)諸如動態(tài)更新數(shù)據(jù)處理和事件處理組件的需求,對于中小 型企業(yè)應用RFID 技術,可以動態(tài)地組合ALE 引擎的功能,不再需要一次性購買大量復雜 的RFID中間件產品,從而形成了一種快速的和可擴展的RFID 中間件解決方案,降低了RFID 應用技術的成本。
本文作者創(chuàng)新點:設計了基于事件驅動方式工作的ALE 引擎,并使用OSGi 技術對引擎進 行了實現(xiàn)。
參考文獻
[1] Himanshu Bhatt, Bill Glover, Mark Harrison, RFID Essentials[M], O'Reilly, January 2006
[2] 吳 永 祥 . 射 頻 識 別 ( RFID ) 技術研究現(xiàn)狀及發(fā)展展望[J]. 微 計 算 機 信 息2006,11-2,234-236.
作者簡介:梁嘉(1984-),男,廣東人,碩士研究生,上海交通大學,主要研究方向:RFID中間件技術;
王東(1969-),男,山東人,博士,副教授,碩士生導師,主要研究方向:供應鏈,RFID技術。
基金頒發(fā)部門:國家863 計劃;項目名稱:可重構RFID 中間件技術研究與開發(fā);編號:2006AA04A114;基金申請人:王東