摘要:提出了基于傳感器網(wǎng)絡(luò)環(huán)境的上下文感知應(yīng)用開(kāi)發(fā)中間件原型的體系結(jié)構(gòu)MidCASE,重點(diǎn)闡述了中間件的體系結(jié)構(gòu)設(shè)計(jì)和軟件運(yùn)行時(shí)基于服務(wù)的分布式運(yùn)行架構(gòu)。討論了上下文感知過(guò)程中的兩個(gè)關(guān)鍵問(wèn)題,包括上下文信息建立的方法和感知過(guò)程中上下文信息與高層通信的調(diào)度模型。最后,以該中間件原型為基礎(chǔ),通過(guò)在醫(yī)療護(hù)理的場(chǎng)景下實(shí)現(xiàn)上下文感知應(yīng)用并證明了其易用性與支撐作用。
關(guān)鍵詞:中間件原型; 上下文感知; 服務(wù); 傳感器網(wǎng)絡(luò)
中圖分類號(hào):TP393文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2007)11-0243-05
近年來(lái),隨著傳感器技術(shù)、無(wú)線通信技術(shù)和人工智能理論以及軟件技術(shù)的不斷發(fā)展,上下文感知及其應(yīng)用逐漸成為研究的熱點(diǎn)問(wèn)題。尤其是在20世紀(jì)90年代Mark Weiser描述的Ubicomp概念中[1],計(jì)算工具將嵌入到人們?nèi)粘I町?dāng)中,自動(dòng)為用戶工作和生活中的各項(xiàng)活動(dòng)提供計(jì)算服務(wù)。在實(shí)現(xiàn)該過(guò)程中,上下文信息(context)往往是系統(tǒng)確定系統(tǒng)自身行為最為直接、有效的依據(jù)。交互上下文是指計(jì)算系統(tǒng)所處環(huán)境中的一組與當(dāng)前應(yīng)用相關(guān)的狀態(tài)或變量。其中某些狀態(tài)和變量可以直接改變系統(tǒng)的行為,而另一些則可能引起用戶興趣從而通過(guò)用戶影響系統(tǒng)行為。上下文感知計(jì)算是指計(jì)算系統(tǒng)自動(dòng)對(duì)上下文、上下文變化以及上下文歷史進(jìn)行感知與應(yīng)用,根據(jù)其調(diào)整自身的行為。
針對(duì)上下文感知的研究主要集中于上下文建模方法和感知過(guò)程機(jī)制兩個(gè)方面。同時(shí),上下文感知相關(guān)應(yīng)用通常是“一個(gè)場(chǎng)景,一次開(kāi)發(fā)”的特點(diǎn),因此,支持上下文感知應(yīng)用開(kāi)發(fā)工具的研究工作也廣泛開(kāi)展。A. K. Dey等人[2]提供了一個(gè)上下文感知工具集,該工具集通過(guò)向開(kāi)發(fā)者提供一些上下文感知開(kāi)發(fā)過(guò)程中可重用的組件來(lái)支持上下文感知原型系統(tǒng)的快速開(kāi)發(fā)。除了這種工具集的方式[3,4],支撐上下文感知應(yīng)用的快速開(kāi)發(fā)也采用了中間件的思想[5,6]。這種方式通常是將開(kāi)發(fā)過(guò)程中的通用過(guò)程抽象后,將過(guò)程抽象中的各類操作封裝成相應(yīng)接口,同時(shí)定義軟件運(yùn)行時(shí)結(jié)構(gòu)等規(guī)范來(lái)共同支持應(yīng)用的快速開(kāi)發(fā)。所有這些工作,都力求為上下文感知應(yīng)用提供一個(gè)統(tǒng)一的開(kāi)發(fā)步驟或可復(fù)用的編程模型或組件,以此來(lái)實(shí)現(xiàn)上下文感知應(yīng)用快速開(kāi)發(fā)。
這些研究層層深入,逐步建立了較為完整的上下文感知的結(jié)構(gòu)模型和方法,它們正是本文研究工作的基礎(chǔ)。
1中間件原型的體系結(jié)構(gòu)
支持上下文感知應(yīng)用的中間件原型系統(tǒng)結(jié)構(gòu)包括兩個(gè)方面的內(nèi)容,即分層的靜態(tài)邏輯體系結(jié)構(gòu)和分布式的動(dòng)態(tài)運(yùn)行時(shí)結(jié)構(gòu)。靜態(tài)邏輯結(jié)構(gòu)描述了中間件原型中各組件或模塊間的層次關(guān)系及功能劃分;同時(shí),通過(guò)描述動(dòng)態(tài)運(yùn)行時(shí)結(jié)構(gòu),可以清晰地看出靜態(tài)組件或模塊相互之間是如何交互、配合共同完成上下文感知應(yīng)用的。
1.1分層的體系結(jié)構(gòu)
首先,中間件要能夠?qū)Φ讓佑布绺黝悅鞲衅鞯挠布悩?gòu)性進(jìn)行屏蔽。同時(shí),它還要對(duì)應(yīng)用層各類場(chǎng)景的開(kāi)發(fā)起到支撐作用以使得開(kāi)發(fā)過(guò)程中的代價(jià)大大降低。這是通過(guò)提供可復(fù)用的應(yīng)用編程接口和開(kāi)發(fā)流程規(guī)范來(lái)實(shí)現(xiàn)的。在中間件抽象的過(guò)程中,首先根據(jù)具體的場(chǎng)景進(jìn)行上下文感知應(yīng)用的開(kāi)發(fā),然后分析開(kāi)發(fā)過(guò)程中通用的方法和流程,將其封裝成中間件中的編程接口和抽象類。根據(jù)上下文感知應(yīng)用的特點(diǎn),無(wú)線傳感器網(wǎng)絡(luò)環(huán)境下的上下文感知應(yīng)用系統(tǒng)主要由傳感器硬件環(huán)境、上下文感知應(yīng)用開(kāi)發(fā)支撐中間件和上下文感知應(yīng)用場(chǎng)景實(shí)現(xiàn)三個(gè)層次所構(gòu)成。中間件在其中的位置如圖1所示。
中間件自身的結(jié)構(gòu)分為五個(gè)層次,自底向上分別為上下文信息硬件接口層、服務(wù)注冊(cè)層、上下文建模層、感知和推理層以及應(yīng)用表示層。
1)上下文信息硬件接口
在該層中,筆者設(shè)計(jì)了上下文信息的硬件獲取接口,并通過(guò)該接口從無(wú)線傳感器網(wǎng)絡(luò)處獲得上下文信息。類似文獻(xiàn)[7]的思想,針對(duì)傳感器網(wǎng)絡(luò)設(shè)計(jì)處上下文獲取智能體,該獲取智能體程序運(yùn)行在傳感器節(jié)點(diǎn)上,獲取相應(yīng)的上下文信息。同時(shí),上下文感知應(yīng)用中用到的上下文信息來(lái)自于多種獲取途徑。這些獲取途徑中涉及到較多的硬件資源,如無(wú)線傳感器網(wǎng)絡(luò)、RFID、攝像頭等都是常見(jiàn)的獲取設(shè)備。該層的作用是為每一個(gè)獲取設(shè)備都設(shè)計(jì)并實(shí)現(xiàn)一個(gè)這樣的智能體,并將全部的智能體封裝成上下文信息通用獲取對(duì)象,在系統(tǒng)運(yùn)行時(shí)根據(jù)不同的硬件設(shè)備來(lái)調(diào)用不同的智能體,從而實(shí)現(xiàn)了對(duì)各類獲取硬件的屏蔽。
2)服務(wù)注冊(cè)層
上下文感知應(yīng)用功能的運(yùn)行是以服務(wù)為基礎(chǔ)的,即一次上下文感知的過(guò)程對(duì)應(yīng)一個(gè)感知服務(wù)。服務(wù)注冊(cè)層提供了一種混合式P2P結(jié)構(gòu)來(lái)實(shí)現(xiàn)上下文感知的服務(wù)注冊(cè)機(jī)制,同時(shí)還通過(guò)遠(yuǎn)程調(diào)用的方式實(shí)現(xiàn)不同服務(wù)間的通信。
3)上下文建模層
該層所提供的各組件及對(duì)象的目的是實(shí)現(xiàn)物理世界在計(jì)算機(jī)世界中的映射。整個(gè)上下文建模過(guò)程分為兩類主體和三個(gè)步驟。兩類主體,即實(shí)體和上下文信息。實(shí)體是對(duì)物理世界關(guān)注對(duì)象的建模,它的各類屬性反映了實(shí)體的狀態(tài),而這些屬性即是實(shí)體的上下文信息。傳感器網(wǎng)絡(luò)環(huán)境下上下文建模的三個(gè)步驟是指,首先從傳感器節(jié)點(diǎn)處獲取原始信息;然后經(jīng)過(guò)智能體程序?qū)⑦@些原始信息轉(zhuǎn)換為具有初步語(yǔ)義的上下文項(xiàng);最后根據(jù)應(yīng)用的具體需求將這些具有初步語(yǔ)義的上下文項(xiàng)融合為具有語(yǔ)義并能為系統(tǒng)所直接使用的上下文信息。
4)感知作用層
感知推理層主要實(shí)現(xiàn)兩個(gè)功能,即恰當(dāng)?shù)剡x擇上下文信息進(jìn)入推理引擎和確保感知的有效性。通過(guò)設(shè)計(jì)上下文代理和優(yōu)先級(jí)隊(duì)列來(lái)處理上下文信息以確保這兩個(gè)功能的實(shí)現(xiàn)。感知作用層是上下文感知過(guò)程的核心,該過(guò)程是通過(guò)基于規(guī)則的推理來(lái)實(shí)現(xiàn)的。在實(shí)現(xiàn)的過(guò)程中使用了Drools[8]推理引擎,并將該推理引擎嵌入中間件中。同時(shí),提供事實(shí)加載器和規(guī)則加載器,并通過(guò)它們將從實(shí)體處獲得的事實(shí)和具體實(shí)現(xiàn)場(chǎng)景中的規(guī)則加入到推理引擎當(dāng)中。最后,提供了將感知和推理結(jié)果作用于物理世界的機(jī)制。在實(shí)現(xiàn)的過(guò)程中,將感知和推理結(jié)果映射到相關(guān)的實(shí)體上,通過(guò)這些實(shí)體的屬性改變來(lái)產(chǎn)生上下文改變事件而觸發(fā)硬件行為,從而改變物理世界的狀態(tài)。該過(guò)程體現(xiàn)了上下文感知應(yīng)用中machine-to-machine的特點(diǎn)。
5)應(yīng)用接口
中間件最終能被編程者所使用的關(guān)鍵點(diǎn)是它能將所提供的各項(xiàng)功能封裝為可調(diào)用的API,該層的作用即為此。將封裝好的各種API按照不同的功能分類打包,然后形成完整的文檔說(shuō)明,支持應(yīng)用編程者二次開(kāi)發(fā)中的使用。
6)安全機(jī)制
中間件中的安全機(jī)制主要是針對(duì)上下文獲取硬件的認(rèn)證和上下文數(shù)據(jù)的訪問(wèn)權(quán)限控制而言。對(duì)于中間件的實(shí)現(xiàn)原型,本文沒(méi)有考慮更多的安全因素。
1.2混合式P2P服務(wù)注冊(cè)機(jī)制
中間件的體系結(jié)構(gòu)必須要能夠滿足上下文感知環(huán)境規(guī)模的不斷擴(kuò)展和感知對(duì)象不斷增加的需求。另外,一個(gè)感知對(duì)象通常處于不同的感知環(huán)境中,因此,中間件的體系結(jié)構(gòu)也必須滿足這種分布式的感知需求。感知服務(wù)間的通信通常以一種多連接圖的拓?fù)湫问酱嬖?,即服?wù)與服務(wù)間的通信連接沒(méi)有固定的規(guī)律,也沒(méi)有先后次序,是一種依據(jù)應(yīng)用需求的隨需應(yīng)變模式。
針對(duì)上述幾個(gè)需求,將中間件運(yùn)行時(shí)的體系結(jié)構(gòu)實(shí)現(xiàn)為一種混合式peer-to-peer的形式(圖2)。其工作機(jī)制如下:
a) 首先啟動(dòng)上下文服務(wù)器,該服務(wù)器進(jìn)程啟動(dòng)后開(kāi)始監(jiān)聽(tīng)向其注冊(cè)的上下文服務(wù)客戶端;
b) 應(yīng)用處的上下文服務(wù)開(kāi)始啟動(dòng),首先向上下文服務(wù)器請(qǐng)求注冊(cè),如圖2中步驟①;
c) 上下文服務(wù)器確認(rèn)該上下文服務(wù)(圖2中步驟②),并為其分配惟一的上下文服務(wù)ID地址編號(hào);同時(shí),所有的上下文服務(wù)都是通過(guò)a)b)兩步進(jìn)行注冊(cè);
d) 每個(gè)服務(wù)通過(guò)服務(wù)注冊(cè)進(jìn)程后,就針對(duì)其特定的感知環(huán)境開(kāi)始獨(dú)立運(yùn)行;
e) 如果某上下文應(yīng)用場(chǎng)景需要兩個(gè)或兩個(gè)以上的上下文服務(wù)配合工作,如某上下文服務(wù)中實(shí)體上的上下文信息依賴于另一個(gè)上下文服務(wù)中某實(shí)體的上下文,則此兩上下文服務(wù)通過(guò)上下文服務(wù)器確定ID地址后,直接開(kāi)始進(jìn)行通信,同時(shí)將通信關(guān)系記錄在各自的服務(wù)日志中。
通過(guò)這樣一種機(jī)制,實(shí)現(xiàn)了一種可擴(kuò)展的軟件體系結(jié)構(gòu),并以此來(lái)適應(yīng)規(guī)模不斷增加、需求不斷增多的上下文感知的應(yīng)用。
1.3基于服務(wù)的運(yùn)行機(jī)制
在中間件實(shí)現(xiàn)面向服務(wù)的思想過(guò)程中,將場(chǎng)景中的上下文感知過(guò)程封裝成上下文感知服務(wù),即通過(guò)產(chǎn)生實(shí)體對(duì)象建模場(chǎng)景中的物體或人,通過(guò)載入推理規(guī)則并運(yùn)行推理引擎來(lái)完成對(duì)環(huán)境的感知。服務(wù)注冊(cè)后便開(kāi)始運(yùn)行,通過(guò)傳感器硬件不斷獲得上下文信息,同時(shí)依據(jù)信息的改變運(yùn)行服務(wù)來(lái)完成上下文感知的過(guò)程。
每個(gè)上下文服務(wù)包括如圖3所示的四個(gè)子過(guò)程,這四個(gè)過(guò)程先后執(zhí)行,共同實(shí)現(xiàn)上下文感知的全部過(guò)程。首先是上下文建模,即從原始的環(huán)境數(shù)據(jù)形成具有語(yǔ)義的上下文信息。通過(guò)運(yùn)行在傳感器網(wǎng)絡(luò)上的數(shù)據(jù)獲取程序,環(huán)境信息將通過(guò)傳感器匯集到網(wǎng)關(guān)節(jié)點(diǎn)。然后,這些數(shù)據(jù)通過(guò)智能體程序的分析,將分別寫進(jìn)中心上下文數(shù)據(jù)庫(kù)的各個(gè)表項(xiàng)中。此時(shí)即形成了具有初步語(yǔ)義的上下文項(xiàng)。最后根據(jù)筆者設(shè)計(jì)的上下文信息表結(jié)構(gòu),同時(shí)結(jié)合應(yīng)用的具體情況,將存儲(chǔ)在數(shù)據(jù)庫(kù)中的上下文項(xiàng)融合為具備明確語(yǔ)義的上下文信息。
系統(tǒng)需要設(shè)計(jì)相應(yīng)機(jī)制來(lái)保證上下文感知應(yīng)用的時(shí)間有效性和空間有序性特點(diǎn)。通過(guò)實(shí)現(xiàn)三級(jí)優(yōu)先級(jí)隊(duì)列來(lái)控制上下文信息與高層應(yīng)用的通信。其中上下文改變事件具有最高的優(yōu)先級(jí)。每當(dāng)發(fā)生了上下文改變事件,它搶占其他所有上下文信息通信進(jìn)程。同時(shí),建模的實(shí)體通過(guò)實(shí)體容器進(jìn)行封裝。該容器提供了維護(hù)實(shí)體的機(jī)制,保證了實(shí)體和其對(duì)應(yīng)的上下文信息的對(duì)應(yīng)以及實(shí)體狀態(tài)變化的時(shí)新性。上下文信息與高層應(yīng)用的通信過(guò)程實(shí)質(zhì)是依次進(jìn)入推理引擎的過(guò)程。通過(guò)與用戶寫入的推理規(guī)則相匹配,它可以依據(jù)現(xiàn)有情況判斷出應(yīng)當(dāng)發(fā)生什么樣的事件,從而體現(xiàn)上下文感知。在最后的環(huán)節(jié),通過(guò)不同設(shè)備的控制客戶端實(shí)現(xiàn)了不同實(shí)體的狀態(tài)改變。此時(shí)具體實(shí)現(xiàn)了上下文感知的應(yīng)用。
在中間件的實(shí)現(xiàn)過(guò)程中定義了相關(guān)的接口以及方法,它們的存在使得中間件在建模過(guò)程中體現(xiàn)以下三個(gè)方面的作用:通過(guò)定義接口中方法來(lái)提供建模工具;通過(guò)這些工具接口和類之間的繼承關(guān)系來(lái)規(guī)范建模的流程;通過(guò)定義這些方法間的調(diào)用關(guān)系來(lái)示范建模的過(guò)程。在上下文建模的過(guò)程中,實(shí)體的選定及其屬性和方法的確定扮演最為重要的角色。首先,實(shí)體的選定表示上下文感知過(guò)程中感知對(duì)象(研究對(duì)象)的確定;對(duì)于確定的感知對(duì)象,為了表征其在物理世界中的狀態(tài)和行為能力,必須還要規(guī)定對(duì)應(yīng)實(shí)體的屬性和方法。這個(gè)過(guò)程完成后,就在虛擬世界中構(gòu)建了感知環(huán)境的靜態(tài)視圖。實(shí)體間的交互和通信是通過(guò)上下文事件來(lái)激發(fā)和實(shí)現(xiàn)的,這一過(guò)程構(gòu)建了感知環(huán)境的動(dòng)態(tài)視圖。
2上下文感知過(guò)程中的關(guān)鍵技術(shù)
上下文感知過(guò)程中的關(guān)鍵技術(shù)主要包括上下文信息建模,基于優(yōu)先級(jí)隊(duì)列的感知過(guò)程調(diào)度算法和感知同步機(jī)制。
2.1上下文信息建立模型
上下文建模機(jī)制旨在為計(jì)算機(jī)提供建模真實(shí)世界的工具。從初級(jí)的原始數(shù)據(jù)到具有語(yǔ)義信息且為系統(tǒng)可用需要三個(gè)步驟。首先,通過(guò)運(yùn)行在傳感器節(jié)點(diǎn)上的程序來(lái)采集物理世界中的原始數(shù)據(jù)(raw data)。通常,這些節(jié)點(diǎn)以一種Ad hoc模式進(jìn)行工作,并將它們采集到的數(shù)據(jù)通過(guò)多跳的方式傳送到網(wǎng)關(guān)節(jié)點(diǎn)。然后,這些原始數(shù)據(jù)被與網(wǎng)關(guān)節(jié)點(diǎn)連接的PC進(jìn)行處理,得到具有初級(jí)語(yǔ)義信息的上下文項(xiàng)(context element)。盡管這些上下文項(xiàng)片段性地表達(dá)了信息,但是這些信息可以被人直觀地理解,而不是原始的0/1串。最后,通過(guò)定義的上下文信息結(jié)構(gòu),可將上述上下文項(xiàng)融合為具有實(shí)際意義的上下文信息。
2.1.1從原始數(shù)據(jù)生成上下文項(xiàng)
當(dāng)傳感器網(wǎng)絡(luò)采集到原始的物理數(shù)據(jù)后,這些數(shù)據(jù)通過(guò)多跳的方式傳送到傳感器網(wǎng)絡(luò)的網(wǎng)關(guān)節(jié)點(diǎn)。如圖3所示,網(wǎng)關(guān)節(jié)點(diǎn)上運(yùn)行智能體程序,該程序運(yùn)行專門的轉(zhuǎn)換公式將這些數(shù)據(jù)轉(zhuǎn)換為初步的上下文信息,即上下文項(xiàng)。上下文項(xiàng)不是原始的0/1串,而是具備語(yǔ)義的數(shù)據(jù)值。例如原始數(shù)據(jù)按照傳感器網(wǎng)絡(luò)數(shù)據(jù)幀的形式是“01101110111”,經(jīng)過(guò)智能體程序的轉(zhuǎn)換,可以得知這一串所代表的數(shù)據(jù)值為“溫度=42℃”。
針對(duì)不同類型的傳感器網(wǎng)絡(luò)而言,轉(zhuǎn)換公式通常是不一樣的。因此,從中間件的角度考慮,筆者只是為該功能設(shè)計(jì)好接口即可,如:
Public interface RawData2RawContext {
//translate battery
public static xconvert_battery_sensor( );
//translate temperature
public static xconvert_thermistor_temperature( );
//translate accelerator
public static xconvert_accel( );
……
}
硬件設(shè)備確定后,開(kāi)發(fā)者只需要根據(jù)硬件設(shè)備的特點(diǎn)實(shí)現(xiàn)接口中的方法,將轉(zhuǎn)換公式實(shí)現(xiàn)在方法中即可得到上下文項(xiàng)。
2.1.2從上下文項(xiàng)合成上下文信息
與原始數(shù)據(jù)相比,部分上下文項(xiàng)已經(jīng)具備了明確的語(yǔ)義信息,同時(shí)這些信息可以被系統(tǒng)所使用。然而,絕大多數(shù)的上下文項(xiàng)所反映的信息是初級(jí)且簡(jiǎn)單的,它們僅僅反映了交互環(huán)境中的某個(gè)方面。為了形成面向應(yīng)用的語(yǔ)義明確、更有價(jià)值的上下文信息,就需要研究這些上下文項(xiàng)間的關(guān)系,然后將這些項(xiàng)按照具體應(yīng)用來(lái)進(jìn)行融合。這些具備語(yǔ)義的上下文信息有著直接的意義和功能,因此,它們就是最終的上下文信息。因?yàn)樯鲜鲈?,上下文?xiàng)聚合是生成上下文信息的關(guān)鍵步驟。幾乎所有的上下文信息都是由語(yǔ)義元素組成的。事實(shí)上,這些上下文項(xiàng)是這些語(yǔ)義元素的載體。另外,知識(shí)庫(kù)是根據(jù)上下文項(xiàng)語(yǔ)義結(jié)構(gòu)建立的。其中記錄了上下文信息和上下文項(xiàng)之間的關(guān)系以及具體的元素融合策略,它就是上下文項(xiàng)融合的依據(jù)。
通常來(lái)說(shuō),上下文信息的形成由實(shí)體來(lái)配合。實(shí)體建模了用戶關(guān)注的物理世界中的主體信息,即不同的實(shí)體代表了現(xiàn)實(shí)世界中不同的現(xiàn)實(shí)物體。以護(hù)士—醫(yī)生—監(jiān)視器作為實(shí)體為例(上下文合成策略如圖4所示),目標(biāo)對(duì)象的狀態(tài)和能力就是實(shí)體的屬性和方法。建模實(shí)體及其屬性和方法的選擇,是建模過(guò)程的關(guān)鍵步驟。上下文服務(wù)域是由上下文元組空間和上下文信息代理以及推理引擎共同組成,它們實(shí)現(xiàn)了上下文感知應(yīng)用過(guò)程。上下文元組空間又是由實(shí)體和其上的上下文信息組成,它可以建立整個(gè)上下文感知過(guò)程中的主體信息。上下文代理控制上下文信息與高層應(yīng)用的通信過(guò)程,而感知過(guò)程中的推理則是由推理引擎實(shí)現(xiàn)的。上下文元組空間可以表示為以下的形式:
prientitywaittime stampRcontext content
每個(gè)域可以表示如下:
Pri——該上下文信息的優(yōu)先級(jí)。
Entity——上下文信息的主體,與上下文信息關(guān)聯(lián)的實(shí)體。
Wait——該上下文信息在優(yōu)先級(jí)隊(duì)列中等待的時(shí)間。
Time stamp——該上下文信息的時(shí)間戳,任何一個(gè)上下文信息都具有實(shí)效性限制。
R——該上下文信息與高層通信時(shí)是否具備可搶占性。如果R=1, 則當(dāng)前的上下文信息可以搶占其他上下文信息與高層應(yīng)用進(jìn)行通信的進(jìn)程;R=0則不可搶占。
Context content——具體的上下文信息內(nèi)容。
圖4上下文合成策略
系統(tǒng)為每個(gè)上下文信息對(duì)應(yīng)的上下文元組空間設(shè)置初值并保存。至此,經(jīng)過(guò)多級(jí)的抽象和融合后將傳感器網(wǎng)絡(luò)處得到的原始數(shù)據(jù)轉(zhuǎn)換為具有明確語(yǔ)義信息和指向性的上下文信息,并將其表示為統(tǒng)一的格式。上下文元組空間中的上下文信息就是交互系統(tǒng)中存在的最終狀態(tài)。
2.2上下文感知同步性機(jī)制
同步性機(jī)制的核心是上下文代理組件。上下文代理是上下文服務(wù)與上下文事件、上下文事件與實(shí)體設(shè)備間的橋梁。一方面它能夠訪問(wèn)上下文服務(wù)中采集的各類上下文信息,根據(jù)這些信息判斷是否產(chǎn)生上下文事件;另一方面它將推理引擎產(chǎn)生的結(jié)果與響應(yīng)的實(shí)體設(shè)備發(fā)生正確的映射關(guān)系,指導(dǎo)設(shè)備產(chǎn)生實(shí)際行為。在這兩個(gè)方面的工作中,同步性的好壞直接影響了實(shí)際運(yùn)行效果。當(dāng)上下文感知服務(wù)開(kāi)始工作時(shí),傳感器網(wǎng)絡(luò)處采集到的數(shù)據(jù)轉(zhuǎn)換為上下文信息后將存儲(chǔ)到實(shí)體相應(yīng)的屬性當(dāng)中。一個(gè)基于事件驅(qū)動(dòng)的同步模型用來(lái)實(shí)現(xiàn)這個(gè)過(guò)程,保證上下文信息的時(shí)效性。其工作流程如圖5所示。
圖5上下文感知同步機(jī)制示意圖
a)上下文代理每隔一個(gè)時(shí)間片就去訪問(wèn)與其相關(guān)上下文服務(wù)中的知識(shí)庫(kù)而獲取某實(shí)體的上下文信息。
b)將該實(shí)體的上下文信息按照時(shí)間序列進(jìn)行對(duì)比。如果上下文信息發(fā)生變化或超過(guò)某規(guī)定的閥值,則相應(yīng)地產(chǎn)生一個(gè)上下文改變事件。
c)該事件將促使實(shí)體的屬性發(fā)生變更,此時(shí)就可將最新的上下文信息寫入該實(shí)體的屬性。
d)更新過(guò)的實(shí)體及其上下文信息注入推理引擎,新的感知過(guò)程開(kāi)始。這樣就保證了感知過(guò)程的同步性。
值得注意的是時(shí)間片的設(shè)置。如果太長(zhǎng),會(huì)影響同步效果;太短,則會(huì)帶來(lái)較大的系統(tǒng)開(kāi)銷。因此,該時(shí)間片應(yīng)當(dāng)根據(jù)具體應(yīng)用場(chǎng)景來(lái)進(jìn)行設(shè)定。
3中間件原型驗(yàn)證環(huán)境
目前,該中間件的原型系統(tǒng)已經(jīng)可以支持較多場(chǎng)景的上下文感知的開(kāi)發(fā)。筆者在應(yīng)用中將場(chǎng)景定位于醫(yī)療護(hù)理領(lǐng)域,并且已經(jīng)在應(yīng)用中取得了較為滿意的效果。在該應(yīng)用的上下文獲得環(huán)節(jié),使用的無(wú)線傳感器網(wǎng)絡(luò)設(shè)備為Berkely的Mote以及RFID設(shè)備。下面介紹中間件的驗(yàn)證環(huán)境及場(chǎng)景實(shí)現(xiàn)。場(chǎng)景的示意圖如圖6所示。
圖6驗(yàn)證環(huán)境示意圖
1)Scene 1——病人周圍環(huán)境的上下文感知
在病人的周圍運(yùn)行上下文感知的服務(wù)。該上下文感知服務(wù)包括獲取病人的監(jiān)護(hù)狀態(tài)信息,如體溫、血壓、心率等生理參數(shù)。這些參數(shù)經(jīng)過(guò)過(guò)濾分類后,存儲(chǔ)在上下文數(shù)據(jù)庫(kù)中作為病人的屬性值保存。這樣的一個(gè)監(jiān)測(cè)狀態(tài)一直運(yùn)行,持續(xù)地感知病人的各項(xiàng)生理信息。這些生理信息通過(guò)前述的上下文形成的過(guò)程,從原始的0/1數(shù)據(jù)流生成具有基本語(yǔ)義的上下文項(xiàng),此時(shí)具有語(yǔ)義的上下文項(xiàng)已經(jīng)可以表示病人的生理信息;然后,這些上下文項(xiàng)根據(jù)上下文表的結(jié)構(gòu)生成上下文信息,這些信息就可以直接被感知過(guò)程和推理引擎所使用。與此同時(shí),在獲得這些數(shù)據(jù)的同時(shí),病人面前的顯示器顯示病人自己定制的節(jié)目。
2)Scene 2——相繼進(jìn)入服務(wù)活動(dòng)區(qū)域,感知過(guò)程
在該場(chǎng)景中,護(hù)士和醫(yī)生分別進(jìn)入了病人的上下文感知的服務(wù)區(qū)域。進(jìn)入的過(guò)程通過(guò)RFID的標(biāo)簽進(jìn)行定位并確認(rèn)護(hù)士或醫(yī)生身份。其中,醫(yī)生比護(hù)士具有更高的優(yōu)先級(jí),他查看的病人信息也更多。服務(wù)得知護(hù)士進(jìn)入病房后,發(fā)生上下文改變事件,該事件通過(guò)上下文代理使顯示設(shè)備停止播放病人定制的節(jié)目信息,轉(zhuǎn)換至顯示病人的各項(xiàng)生理信息,同時(shí)還提供了病人的基本信息和用藥方案。醫(yī)生進(jìn)入病房后,再次發(fā)生上下文改變事件,該事件導(dǎo)致顯示器運(yùn)行線程的改變,搶占原先的護(hù)士進(jìn)程,顯示屏更改顯示內(nèi)容至醫(yī)生所定制的內(nèi)容,并且提示醫(yī)生是否更改用藥方案。
3)Scene 3——離開(kāi)服務(wù)活動(dòng)區(qū)域
最后一個(gè)場(chǎng)景顯示為護(hù)士和醫(yī)生離開(kāi)病人的上下文感知服務(wù)區(qū)域。當(dāng)醫(yī)生和護(hù)士分別離開(kāi)時(shí),通過(guò)RFID得到離開(kāi)的上下文信息,并將這些信息存儲(chǔ)到上下文容器中。通過(guò)上下文代理同步的訪問(wèn)上下文容器,產(chǎn)生上下文改變事件,即醫(yī)生/護(hù)士離開(kāi)事件。該事件觸發(fā)推理引擎,再次通過(guò)上下文代理與顯示屏設(shè)備進(jìn)行交互,交互的結(jié)果是顯示屏結(jié)束播放病人生理信息的線程后重啟病人所定制節(jié)目的播放線程,讓病人再次觀看自己愿意觀看的節(jié)目。
至此,一個(gè)完整的上下文感知過(guò)程結(jié)束。
4結(jié)束語(yǔ)
本文提出了傳感器網(wǎng)絡(luò)環(huán)境下支持上下文感知應(yīng)用開(kāi)發(fā)的中間件,描述其體系結(jié)構(gòu)和關(guān)鍵技術(shù)。在中間件的體系結(jié)構(gòu)設(shè)計(jì)過(guò)程中 ,采用了面向服務(wù)的實(shí)現(xiàn)思想,提出了“一個(gè)場(chǎng)景,一次服務(wù),一次上下文感知”的基本結(jié)構(gòu)。該結(jié)構(gòu)良好地適應(yīng)了具體應(yīng)用開(kāi)發(fā)中的場(chǎng)景定制。在感知的推理過(guò)程中,運(yùn)用了人工智能方法——基于規(guī)則的推理來(lái)實(shí)現(xiàn),體現(xiàn)了良好的人機(jī)交互環(huán)境。在利用中間件原型的上下文感知應(yīng)用開(kāi)發(fā)過(guò)程中,展現(xiàn)了其良好的體系結(jié)構(gòu)和高效的運(yùn)行機(jī)制。在驗(yàn)證場(chǎng)景中,使用了除無(wú)線傳感器網(wǎng)絡(luò)外更多的感知設(shè)備來(lái)協(xié)同工作,對(duì)此,中間件也顯示了良好的支撐效果,證明了軟件的可用性和易用性。但是,在感知過(guò)程中基于規(guī)則的推理自我學(xué)習(xí)能力較差,因此,系統(tǒng)的智能性還有待提高。引入如何基于統(tǒng)計(jì)理論的分析方法,是本文后續(xù)的重點(diǎn)工作。
參考文獻(xiàn):
[1]WEISER M. The computers for the twenty-first century [J]. Scientific American, 1991,265(3):94-104.
[2]DEY A K, SALBER D, ABOWD G D. A conceptual framework and a toolkit for supporting the rapid prototyping of context-aware applications [J]. Human-Computer Interaction (HCI), 2001,16(2-4):97-166.
[3]MOSTFAOUI G K, PASQUIER-ROCHA J, BRZILLON P. Context-aware computing: a guide for the pervasive computing community[C]//Proc of the IEEE/ACS International Conference on Pervasive Services. 2004:39-48.
[4]KIANI S L, RIAZ M,LEE S Y,et al. A distributed middleware solution for context awareness in ubiquitous system[C]//Proc of the 11th IEEE International Conference on Embedded and Real-time Computing System and Applications.Washington D C:IEEE Computer Society,2005:451-454.
[5]RANGANATHAN A, CAMBELL R H. A middleware for context-aware agents in ubiquitous computing environments[C]//Proc of ACM/IFIP/USENIX International Middleware Conference. Brazil:[s.n.],2003:143-161.
[6]BARDRAM J E. Application of context-aware computing in hospital work- example and design principles[C]//Proc of ACM Symposium on Applied Computing. New York:ACM Press, 2004:1574-1579.
[7]SCHILIT W N. A system architecture for context-aware mobile computing[D]. New York: Columbia University,1995:66-94.
[8]BEADLE H W P,HARPER B, MAGUIRE Jr G Q, et al. Location aware mobile computing[C]//Proc of IEEE/IEE International Confe ̄rence on Telecommunications. Melbourne:[s.n.],1997:1319-1324.
“本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文”