引 言
無線射頻識別技術(shù)(Radio Frequency Identification,以下簡稱RFID)是從20 世紀(jì)90 年代 興起的一項自動識別技術(shù),它利用無線射頻方式進行非接觸雙向通信,以達(dá)到識別目的并交 換數(shù)據(jù)。隨著RFID 技術(shù)和應(yīng)用的發(fā)展,RFID 系統(tǒng)日趨復(fù)雜,RFID中間件的出現(xiàn)很好地解 決了將物理基礎(chǔ)架構(gòu)收集到的信息傳遞給企業(yè)應(yīng)用程序的問題。中間件的主要任務(wù)是對讀寫 器傳來的與標(biāo)簽相關(guān)的事件、數(shù)據(jù)進行過濾、匯集和計算,減少從讀寫器傳往企業(yè)應(yīng)用的巨 量原始數(shù)據(jù)、增加抽象出的有意義的信息量,并提供應(yīng)用程序級別的接口來查詢RFID事件 。
ALE是應(yīng)用層事件簡稱,最初作為Savant 應(yīng)用的一部分開發(fā)而成,如今歸屬于國際 標(biāo)準(zhǔn)組織EPCglobal,它是旨在把低層的電子產(chǎn)品代碼(EPC)數(shù)據(jù)和高層的企業(yè)系統(tǒng)相互連 接的EPCglobal 網(wǎng)絡(luò)計劃的一部分,現(xiàn)在已成為標(biāo)準(zhǔn)。RFID中間件應(yīng)該提供符合ALE 標(biāo) 準(zhǔn)的接口供企業(yè)系統(tǒng)或者第三方組件訪問,擴大中間件的適用范圍,因此設(shè)計和開發(fā)可重構(gòu) 的、可靠的ALE 引擎對實現(xiàn)成熟的RFID中間具有重要意義。
1 相關(guān)研究
1.1 應(yīng)用層事件(ALE)標(biāo)準(zhǔn)
RFID 讀寫器在工作時不停地讀取標(biāo)簽,造成同一個標(biāo)簽在短時間內(nèi)可能被讀到很多次, 這些數(shù)據(jù)如果直接發(fā)送給應(yīng)用程序?qū)?a href="http://hljzzgx.com/tongxin/" target="_blank">通信網(wǎng)絡(luò)帶來很大的負(fù)擔(dān),所以需要RFID 中間件對 這些原始數(shù)據(jù)進行一層收集和過濾的處理。ALE的出現(xiàn)就是為了減少原始數(shù)據(jù)的冗余性,為 應(yīng)用系統(tǒng)從大量數(shù)據(jù)中提煉出有效的業(yè)務(wù)邏輯。ALE 層介于應(yīng)用業(yè)務(wù)邏輯和原始標(biāo)簽讀取層 之間,它接收從數(shù)據(jù)源(一個或多個讀寫器)中讀取的標(biāo)簽信息,而后按照時間間隔等條件 收集數(shù)據(jù),將重復(fù)或不敢興趣的EPC數(shù)據(jù)剔除過濾,同時可以進行計數(shù)及組合等操作,最 后將這些信息對應(yīng)用系統(tǒng)進行匯報。
在 ALE 中,應(yīng)用系統(tǒng)可以定義這些內(nèi)容:在什么地方(地點可以映射一個或多個讀寫 器及天線)讀取標(biāo)簽,將在怎樣的時間間隔內(nèi)(決定時間、某個外部事件觸發(fā))收集數(shù)據(jù), 如何過濾數(shù)據(jù),如何整理數(shù)據(jù)報告內(nèi)容(按照公司、商品還是標(biāo)簽分類),標(biāo)簽出現(xiàn)或消失 時是否對外報告,以及統(tǒng)計讀取到的標(biāo)簽數(shù)目等。
ALE 標(biāo)準(zhǔn)定義的是一組接口,它不牽涉到具體實現(xiàn)。在EPCglobal 組織的規(guī)劃中,支 持ALE 標(biāo)準(zhǔn)是RFID中間件的最基本的一個功能;這樣,在統(tǒng)一的標(biāo)準(zhǔn)下,應(yīng)用層上的調(diào)用 方式就可統(tǒng)一,應(yīng)用系統(tǒng)也就可以快速部署。因此,實現(xiàn)ALE 引擎對RFID中間件具有重要意義。
1.2 OSGi
OSGi(Open Systems Gateway Initiative)[4]規(guī)范為網(wǎng)絡(luò)服務(wù)定義了一個標(biāo)準(zhǔn)的、面向組件 的計算環(huán)境,在此環(huán)境中軟件組件可以從運行中被安裝、升級或者移除而不需要中斷設(shè)備的 操作,還可以動態(tài)的發(fā)現(xiàn)和使用其他庫或者應(yīng)用程序。采用OSGi的一種考慮是因為中間件 的開發(fā)要依據(jù)組件概念來進行設(shè)計,這些組件被開發(fā)為軟件包,通過引用的方式來進行互調(diào)。 在OSGi框架中,應(yīng)用程序可以單獨進行部署,以軟件包的形式進行開發(fā)。正確的使用該模 型可以使軟件包進行重用和快速替換,并且使第三方軟件包重用成為可能。
2 引擎設(shè)計
如圖1所示,ALE引擎由引擎內(nèi)核、數(shù)據(jù)處理和事件處理三大模塊組成,它們結(jié)合起來 滿足ALE標(biāo)準(zhǔn)所要求的接口功能。
圖1 ALE引擎架構(gòu)
2.1 事件處理模塊
事件處理模塊分為四個字模塊:應(yīng)用層事件接口是符合 ALE 標(biāo)準(zhǔn)的程序接口,提供標(biāo) 準(zhǔn)的方法供應(yīng)用程序調(diào)用以獲取ALE標(biāo)準(zhǔn)的功能;事件請求模塊分析應(yīng)用程序的事件請求,即ALE 標(biāo)準(zhǔn)中定義的ECSpec ,并根據(jù)請求對事件報告組建模塊、引擎內(nèi)核、數(shù)據(jù)過濾模 塊、數(shù)據(jù)分組模塊和數(shù)據(jù)格式轉(zhuǎn)換模塊進行相應(yīng)的配置;事件報告組建模塊負(fù)責(zé)按照應(yīng)用程 序的事件請求生成數(shù)據(jù)報告,數(shù)據(jù)報告有統(tǒng)一的格式,但是應(yīng)用程序可以指定報告的種類(當(dāng) 前讀取標(biāo)簽/消失標(biāo)簽/新增標(biāo)簽)和數(shù)據(jù)分組的規(guī)則;根據(jù)ALE標(biāo)準(zhǔn)應(yīng)用程序可以以異步 的方式請求數(shù)據(jù)報告,報告分發(fā)模塊提供了以異步方式向事件報告訂閱者發(fā)送報告的功能, 發(fā)送方式可以是HTTP, FTP, Web Service 等多種方式。
2.2 引擎內(nèi)核
事件管理是 ALE 引擎中最核心的功能,引擎內(nèi)核模塊負(fù)責(zé)管理事件的生命周期,如圖 2 所示。在ALE 模型中有幾個最基本的概念:讀周期(Read Cycle),事件周期(Event Cycle)和事件周期定義(ECSpec)。讀周期是和讀寫器交互的最小時間單元,一個讀周期的 結(jié)果是一組EPCs集合,讀周期的時間長短和具體的天線、無線射頻協(xié)議有關(guān),讀周期的輸 出就是ALE 層的數(shù)據(jù)來源。事件周期可以是一個或多個讀周期,它是從用戶的角度來看待 讀寫器的,并可以將一個或多個讀寫器當(dāng)作一個整體,是ALE 接口和用戶交互的最小時間 單元。應(yīng)用業(yè)務(wù)邏輯層的客戶在ALE 中定義好ECSpec之后,就可接收相應(yīng)的事件周期的 數(shù)據(jù)報告。
圖2 事件周期定義(ECSpec)狀態(tài)轉(zhuǎn)移圖
2.3 數(shù)據(jù)處理模塊
數(shù)據(jù)處理模塊分為四個子模塊:數(shù)據(jù)隊列模塊負(fù)責(zé)緩存數(shù)據(jù),當(dāng)讀寫器讀取到一個標(biāo)簽 時會把數(shù)據(jù)放入相應(yīng)的隊列,其他的數(shù)據(jù)處理模塊會把數(shù)據(jù)從隊列中取出然后進行處理,當(dāng) 隊列滿了或者超時數(shù)據(jù)會從隊列中刪除;數(shù)據(jù)格式轉(zhuǎn)換模塊根據(jù)應(yīng)用的要求對數(shù)據(jù)做出格式 轉(zhuǎn)換;數(shù)據(jù)過濾模塊根據(jù)ECSpec的定義對數(shù)據(jù)進行過濾,過濾規(guī)則包括‘包含模式’和‘排除模式’兩種模式[3],最后出現(xiàn)在報告中的標(biāo)簽信息至少要與‘包含模式’列表中的一 個模式匹配,并且不能與任何出現(xiàn)在‘排除模式’中的模式匹配;數(shù)據(jù)分組模塊根據(jù)ECSpec 的定義對過濾后的數(shù)據(jù)進行分組和統(tǒng)計。
3 引擎內(nèi)核實現(xiàn)
引擎內(nèi)核采用事件驅(qū)動的方式實現(xiàn),見圖 3。
圖3 引擎內(nèi)核實現(xiàn)
一個 ECSpec 在內(nèi)核里對應(yīng)著一個事件周期管理者,應(yīng)用層對于ALE 讀接口的調(diào)用會 映射到具體的事件周期管理者上,由事件周期管理者來完成接口提供的功能。當(dāng)一個 ECSpec 被定義時(即調(diào)用define 或immediate方法),引擎就會為這個ECSpec 創(chuàng)建 對應(yīng)的事件周期管理者,同時創(chuàng)建一個事件周期對象和各種觸發(fā)器。當(dāng)ALE 接口調(diào)用請求 者第一次對某個ECSpec發(fā)出調(diào)用請求時(例如調(diào)用subscribe, poll, immediate 方法)將激活對應(yīng)的事件周期管理者,此時由這個事件周期管理者所控制的事件周期對象和各個觸 發(fā)器也被激活,事件周期對象開始按照ECSpec中所定義的邊界條件開始和結(jié)束激活狀態(tài), 并收集RFID 標(biāo)簽數(shù)據(jù)。當(dāng)最后一個接口調(diào)用請求的調(diào)用方法返回時,事件周期管理者再次 進入休眠狀態(tài),對應(yīng)的事件周期對象和各個觸發(fā)器也停止運行,直到被再次喚醒或者隨著該 ECSpec 的撤銷被撤銷。
ECSpec 會在未請求、已請求和活躍狀態(tài)三種狀態(tài)的之間遷移,狀態(tài)策略模塊根據(jù)狀 態(tài)轉(zhuǎn)換的規(guī)則轉(zhuǎn)換ECSpec的狀態(tài)。外部調(diào)用請求會導(dǎo)致狀態(tài)的變遷,不同的狀態(tài)下接收 到相同的調(diào)用請求除了執(zhí)行不同的操作外還可能使ECSpec 變遷為不同的后繼狀態(tài),因此 這里使用了狀態(tài)模式。每一時刻ECSpec 都會處于某一種狀態(tài)中,事件周期管理者接收到 接口調(diào)用請求后都會把請求代理給狀態(tài)策略模塊,由當(dāng)前狀態(tài)策略決定對調(diào)用如何響應(yīng)和確 定后繼狀態(tài)是什么。
ALE 標(biāo)準(zhǔn)中定義了事件周期觸發(fā)器,并且具體定義了一個時間觸發(fā)器。在引擎中,除了 這個時間觸發(fā)器外,所有事件周期邊界條件都被看作是一種觸發(fā)器,因此抽象出一個觸發(fā)器 接口Trigger 。事件周期中定義的各種的邊界條件, 如duation, repeatPeriod, stableSetInterval 等等都是抽象Tigger 的具體實現(xiàn)。因此抽象Trigger 可以理解為影響事 件周期開始和結(jié)束的觸發(fā)條件,而ALE 標(biāo)準(zhǔn)中所定義的ECTrigger 成為抽象Trigger 的其中 一種具體實現(xiàn)。在具體觸發(fā)器的創(chuàng)建過程中使用了抽象工廠模式,事件周期管理者在初始化 的時候調(diào)用工廠方法創(chuàng)建各種具體的觸發(fā)器。
4 結(jié) 論
使用事件驅(qū)動的方式設(shè)計和實現(xiàn)了 ALE 引擎,減低了各模塊之間的耦合度,有利于引 擎的維護和擴展。抽象了事件周期觸發(fā)器概念,令所有邊界觸發(fā)條件和觸發(fā)器能夠統(tǒng)一管理 和工作,簡化了把用戶自定義的觸發(fā)器加入引擎的過程,令觸發(fā)器系統(tǒng)有更好的擴展性。作 為RFID 中間件中重要的部分,該引擎為可重構(gòu)的RFID中間件提供了很好的支持。而采用 OSGi 技術(shù)實現(xiàn)ALE 引擎得以實現(xiàn)諸如動態(tài)更新數(shù)據(jù)處理和事件處理組件的需求,對于中小 型企業(yè)應(yīng)用RFID技術(shù),可以動態(tài)地組合ALE 引擎的功能,不再需要一次性購買大量復(fù)雜 的RFID中間件產(chǎn)品,從而形成了一種快速的和可擴展的RFID 中間件解決方案,降低了RFID應(yīng)用技術(shù)的成本。
責(zé)任編輯:ct
評論
查看更多