葉楓
(廣東輕工職業(yè)技術(shù)學(xué)院繼續(xù)教育學(xué)院,廣東廣州 510300)
基于復(fù)雜事件處理的圖書館無線網(wǎng)絡(luò)監(jiān)控系統(tǒng)*
葉楓
(廣東輕工職業(yè)技術(shù)學(xué)院繼續(xù)教育學(xué)院,廣東廣州 510300)
設(shè)計(jì)了一個(gè)基于復(fù)雜事件處理(CEP)技術(shù)的圖書館無線網(wǎng)絡(luò)監(jiān)控系統(tǒng),建立了系統(tǒng)的框架流程,使用復(fù)雜事件處理(CEP)引擎實(shí)時(shí)遠(yuǎn)程監(jiān)控和檢測(cè)圖書館的復(fù)雜環(huán)境事件,發(fā)出警告并執(zhí)行相應(yīng)動(dòng)作。該系統(tǒng)具有靈活性與實(shí)時(shí)性,能滿足圖書館復(fù)雜多變的應(yīng)用場(chǎng)景的監(jiān)控要求。
復(fù)雜事件處理;無線傳感器;實(shí)時(shí)性
隨著我國(guó)教育事業(yè)的不斷發(fā)展,圖書館的規(guī)模也越來越大,如何保證圖書館的安全和創(chuàng)造好的藏書環(huán)境也成為非常迫切的問題。對(duì)圖書館進(jìn)行實(shí)時(shí)遠(yuǎn)程監(jiān)控,可及時(shí)發(fā)現(xiàn)問題并采取有效措施。圖書館的安全主要受火災(zāi)和漏水威脅;藏書環(huán)境主要受庫(kù)房空氣的溫濕度的影響較大,過低的空氣濕度會(huì)導(dǎo)致圖書發(fā)霉或腐爛,降低了圖書品質(zhì)和收藏時(shí)間。目前大部分圖書館的監(jiān)控系統(tǒng)僅僅局限在視頻監(jiān)視上,無法及時(shí)發(fā)現(xiàn)和處理火災(zāi)、漏水以及調(diào)節(jié)圖書館內(nèi)空氣的溫濕度等緊急情況。
復(fù)雜事件處理(CEP) 技術(shù)被用于從大量低層次事件(原子事件)中按照一定模式在截止期內(nèi)匹配得出高層次事件(復(fù)雜事件)[1-2]。實(shí)時(shí)CEP技術(shù)能滿足圖書館無線網(wǎng)絡(luò)監(jiān)控的需求。主要是由于CEP技術(shù)的復(fù)雜事件模式描述語(yǔ)言能夠描述復(fù)雜情景[3],同時(shí)支持重配置復(fù)雜事件模式,以及近年來CEP的快速發(fā)展,包括高性能的復(fù)雜事件處理技術(shù)[4]和實(shí)時(shí)CEP系統(tǒng)框架等。因此,本文擬構(gòu)建基于CEP的圖書館無線網(wǎng)絡(luò)監(jiān)控系統(tǒng),以具備實(shí)時(shí)性和數(shù)據(jù)查詢能力,使用無線傳感器網(wǎng)絡(luò)監(jiān)控圖書館環(huán)境狀態(tài),實(shí)時(shí)CEP引擎根據(jù)預(yù)定義的復(fù)雜事件模式實(shí)時(shí)檢測(cè)復(fù)雜事件,為異常情況作出正確的反饋。
本圖書館網(wǎng)絡(luò)監(jiān)控系統(tǒng)如圖1所示,由無線傳輸網(wǎng)絡(luò)、原子事件抽取器、CEP引擎以及動(dòng)作執(zhí)行器四個(gè)部分構(gòu)成。
無線傳輸網(wǎng)絡(luò)主要是監(jiān)控圖書館的溫度、濕度等環(huán)境狀態(tài)以及火焰情況。所有數(shù)據(jù)均由無線傳感器網(wǎng)絡(luò)中間層收集處理,形成數(shù)據(jù)流并打包輸出到原子事件抽取器中。由于圖書館面積較大,樓層較多,采用無線傳感器發(fā)揮了其無布線和易于靈活布置的優(yōu)點(diǎn)。
圖1 圖書館網(wǎng)絡(luò)監(jiān)控系統(tǒng)框架
原子事件抽取器主要通過對(duì)無線傳輸?shù)臄?shù)據(jù)流進(jìn)行篩選整理,抽取已經(jīng)發(fā)生的原子事件來構(gòu)成原子事件流,并打包輸送到實(shí)時(shí)CEP引擎中。
實(shí)時(shí)CEP引擎主要承擔(dān)根據(jù)預(yù)設(shè)值的復(fù)雜事件模式從原子事件流中檢測(cè)出復(fù)雜事件。其中,原子事件存儲(chǔ)內(nèi)有原子事件流,復(fù)雜事件模式庫(kù)儲(chǔ)存有以中間語(yǔ)言描述的復(fù)雜事件模式,檢測(cè)模塊負(fù)責(zé)檢測(cè)復(fù)雜事件,檢測(cè)到的復(fù)雜事件被置于復(fù)雜事件存儲(chǔ)中,并打包輸送到動(dòng)作執(zhí)行器中。
動(dòng)作執(zhí)行器根據(jù)檢測(cè)到的復(fù)雜事件內(nèi)容,可選擇聲音報(bào)警、開啟滅火裝置、開啟空氣調(diào)節(jié)裝置及開啟排泄裝置。
本系統(tǒng)的復(fù)雜事件處理描述語(yǔ)言支持各種邏輯操作符,利用操作符的嵌套,可對(duì)復(fù)雜情景進(jìn)行描述;本系統(tǒng)具有較高的靈活性,可進(jìn)行監(jiān)控內(nèi)容的調(diào)整和修改。
2.1 復(fù)雜事件處理流程
復(fù)雜事件處理(CEP)的目標(biāo)就是從軟件系統(tǒng)應(yīng)用各個(gè)層次的事件流中,獲取其中所包含的信息,理解其對(duì)上層管理目標(biāo)和業(yè)務(wù)過程的影響,并做出實(shí)時(shí)的反應(yīng)。復(fù)雜事件處理流程依次為事件生產(chǎn)、事件通道、事件處理以及事件動(dòng)作的驅(qū)動(dòng)。
事件生成:每一個(gè)事件都是由事件源生成的。這個(gè)源可能是一個(gè)程序、數(shù)據(jù)存儲(chǔ)、服務(wù)、業(yè)務(wù)過程、發(fā)射器、傳感器,或者合作工具(及時(shí)消息軟件、電子郵件)。
事件通道:一般是傳輸消息的主干,在事件生成、事件處理和下游的訂閱者間傳輸標(biāo)準(zhǔn)格式化的事件。
事件處理:在事件處理層收到一個(gè)事件后,會(huì)根據(jù)事件處理規(guī)則對(duì)這個(gè)事件進(jìn)行評(píng)估,再觸發(fā)相應(yīng)動(dòng)作。事件處理的規(guī)則和相應(yīng)動(dòng)作是根據(jù)事件消費(fèi)者的興趣和需求來制定的,而不是取決于事件生產(chǎn)者。事件由引擎來處理,復(fù)雜的事件處理引擎在處理一個(gè)事件的發(fā)生時(shí),會(huì)結(jié)合其之前已發(fā)生或之后將要發(fā)生的事件上下文來處理。
事件驅(qū)動(dòng)的動(dòng)作:一個(gè)事件可能會(huì)引起在下游的若干個(gè)動(dòng)作發(fā)生。一個(gè)動(dòng)作可能由事件處理引擎來直接觸發(fā)(啟動(dòng)服務(wù)、業(yè)務(wù)過程觸發(fā)、通知等等),或者由事件的訂閱者來發(fā)起。訂閱者可能是人、應(yīng)用程序、活動(dòng)的業(yè)務(wù)過程等等。事件必須以標(biāo)準(zhǔn)格式發(fā)布,而一般由企業(yè)集成主干系統(tǒng)負(fù)責(zé)將事件或動(dòng)作觸發(fā)信息轉(zhuǎn)換成訂閱者所需要的格式。
2.2 復(fù)雜事件處理模塊
CEP工程的EPN(Event Process Network)如圖2所示。該EPN圖包括五個(gè)模塊:事件源模塊(hel?loworldAdapter)、事件通道(helloworldInputChannel和helloworldOutputChannel)、事件處理模塊(hello?worldProcessor)、事件輸出模塊(helloworldBean)。待處理的數(shù)據(jù)被包裝成事件,從事件源出發(fā),經(jīng)事件處理模塊處理后由事件輸出模塊輸出。
圖2 CEP工程的EPN圖
事件源模塊:事件源模塊主要負(fù)責(zé)把數(shù)據(jù)轉(zhuǎn)換為CEP工程可以理解的格式,然后輸入給事件處理模塊。CEP支持多種多樣的Adapter:JMS Adapter、HTTP Publish-Subscribe Server Adapter、Custom Adapter、High Available Adapter。通過這些Adapter,CEP能夠輕松的讀取數(shù)據(jù)庫(kù)、EXCEL文檔、網(wǎng)絡(luò)數(shù)據(jù)流等多種形式的數(shù)據(jù)。例如,可以將Adapter配置如下:
<wlevs:adapter id="helloworldAdapter"class="com.bea. wlevs.adapter.example.helloworld.HelloWorldAdapter">
<wlevs:instance-property name="message"value= "HelloWorld-the current time is:"/>
<wlevs:instance-property name="nam"value=""/>
<wlevs:instance-property name="num"value=""/>
<wlevs:instance-property name="sex"value=""/>
<wlevs:instance-property name="age"value=""/>
<wlevs:instance-property name="score"value=""/>
<wlevs:instance-property name="year"value=""/>
<wlevs:instance-property name="month"value=" "/>
</wlevs:adapter>
此時(shí),Adapter就是一個(gè)JavaBean文件(com. bea.wlevs.adapter.example.helloworld.HelloWorld?
Adapter),在該Bean文件中,可以通過如下代碼讀取到一個(gè)Excel文檔中的數(shù)據(jù):
Workbook book=Workbook.getWorkbook(new File("E: \test.xls"));
Sheet sheet=book.getSheet(0);
//j=sheet.getRows();
j=0;
i=1;
System.out.println(sheet.getCell(j, i).getCon?
tents());
String message=this. message + dateFormat.for?mat(new Date());
HelloWorldEvent event=new HelloWorldEvent();
suspended=false;
while(i<sheet.getRows()){//Generate messages for?ever...
event.setMessage(message);
event.setName(sheet.getCell(j++,i).getContents());
event.setNum(sheet.getCell(j++,i).getContents());
event.setSex(sheet.getCell(j++,i).getContents());
event.setAge(sheet.getCell(j++,i).getContents());
event.setScore(sheet.getCell(j++,i).getContents());
event.setYear(sheet.getCell(j++,i).getContents());
event.setMonth(sheet.getCell(j++,i).getContents());
eventSender.sendInsertEvent(event);
//generateHelloMessage(i);
j=0;
i++;
try{
synchronized(this){
wait(SLEEP_MILLIS);
}
}catch(InterruptedException e){
e.printStackTrace();
}
}
通過配置不同的Adapter,可以讀取各種各樣的數(shù)據(jù)源。
事件通道:它的作用很多,如事件緩沖,并發(fā)查詢控制。另外,實(shí)際的CEP工程并不會(huì)像圖1所示的那樣簡(jiǎn)單,更多的CEP工程會(huì)相當(dāng)復(fù)雜,有多個(gè)事件處理模塊,對(duì)事件流進(jìn)行多步處理,產(chǎn)生多個(gè)事件輸出流。事件輸入流經(jīng)過事件處理模塊處理后可能產(chǎn)生多條事件輸出流,這時(shí)候就需要用通道區(qū)分相應(yīng)的事件流。
事件處理模塊:它是CEP的關(guān)鍵部分,用于處理事件流,主要用到CQL(Complex Query Lan?guage)語(yǔ)言。CQL語(yǔ)言是一種基于SQL的查詢語(yǔ)言,但是在SQL中加入了用于數(shù)據(jù)流處理的部分,因此適合用于CEP的事件流處理。通過CQL語(yǔ)言,可以輕松的對(duì)一個(gè)或多個(gè)事件流進(jìn)行復(fù)雜的處理并提供一個(gè)或多個(gè)事件輸出流。下面的代碼就是一個(gè)簡(jiǎn)單的事件處理模塊配置代碼:
<processor>
<name>MRQosOfElecLevelProcessor</name>
<rules>
<view id="S"schema="startTimeperoid BSC UtranCell carrierIndex">
<![CDATA[
Rstream(select* from MRQosOfElecLevelIn?putChannel[now])
]]>
</view>
<query id="MRCellElecLevelUpStream2">
<![CDATA[select*from MRQosOfElecLevelIn?putChannel
]]>
</query>
<view id="VMRCellElecLevelUp"schema="startTime BSC UtranCell ElecLevel01 ElecLevel2 ElecLevel34 ElecLev?el56 ElecLevel7">
<![CDATA[select startTime,BSC,UtranCell, from S
]
]>
</view>
<query id="MRCellElecLevelUpQuery">
<![CDATA[
select startTime,BSC from VMRCellElecLevelUp
]]>
</query>
</rules>
</processor>
事件輸出模塊:主要用于事件流的輸出,把處理后的數(shù)據(jù)呈現(xiàn)出來??梢园褦?shù)據(jù)保存到數(shù)據(jù)庫(kù)、文件或者以界面形式提供給CEP的使用者。
3.1 系統(tǒng)應(yīng)用環(huán)境
本系統(tǒng)擬采用美國(guó)Crossbow Technology公司生產(chǎn)的無線傳感器網(wǎng)絡(luò)套件進(jìn)行數(shù)據(jù)測(cè)量,包括空氣的溫度、濕度以及火焰?zhèn)鞲衅?。在Eclipse開發(fā)環(huán)境下采用Java編程語(yǔ)言實(shí)現(xiàn)其他工具。所有工具均在Windows7操作系統(tǒng)下。
3.2 系統(tǒng)情景分析
情景一:電線短路或人為因素著火?;鹧?zhèn)鞲衅靼巡蹲降降幕鹧媪炼绒D(zhuǎn)化為電平信號(hào)輸入中央處理器,進(jìn)行無線網(wǎng)絡(luò)發(fā)送和CEP引擎處理,發(fā)出聲音警報(bào),開啟滅火裝置,并切斷圖書館電源。
情景二:圖書館內(nèi)漏水。圖書館內(nèi)漏水主要為水管漏水、樓板頂層漏水和窗戶漏水,當(dāng)水都一定高度,漏水傳送器將及時(shí)發(fā)送信號(hào)和聲音警報(bào),并開啟排泄裝置,提醒工作人員進(jìn)行檢修。
情景三:圖書館內(nèi)濕度過大。在空氣濕度較大的季節(jié)里,當(dāng)庫(kù)房?jī)?nèi)空氣相對(duì)含濕量超過a%時(shí),濕度傳感器將信號(hào)傳遞給CEP引擎處理,開啟空氣調(diào)節(jié)設(shè)備(主要為抽濕機(jī)),當(dāng)相變含濕量低于b%時(shí),停止空氣調(diào)節(jié)設(shè)備,這里a大于b。
當(dāng)前我國(guó)圖書館的監(jiān)控系統(tǒng)不能完全市場(chǎng)滿足需求,本文基于復(fù)雜事件處理(CEP)技術(shù)實(shí)現(xiàn)了一個(gè)針對(duì)圖書館無線網(wǎng)絡(luò)監(jiān)控系統(tǒng),建立了系統(tǒng)的框架流程,通過無線傳感器網(wǎng)絡(luò)監(jiān)控圖書館環(huán)境事件,根據(jù)預(yù)設(shè)置的復(fù)雜事件模式實(shí)時(shí)檢測(cè)復(fù)雜事件并執(zhí)行動(dòng)作。該系統(tǒng)將在圖書館實(shí)時(shí)監(jiān)控中得到廣泛的應(yīng)用,具有很好的應(yīng)用前景。
[1]李想,范玉順,喬穎,等.基于實(shí)時(shí)復(fù)雜事件處理的智能家居監(jiān)控系統(tǒng)[J].計(jì)算機(jī)研究與發(fā)展,2012,49(增刊):372-376.
[2]Luckham D.C.The power of events:An introduction to complex event processing in distributed enterprise systems[M].Boston:Addision-Wesley Longman Publishing Co.lnc,2001.
[3]Qiao Ying,Zhong Kang,Wang Hongan,et al.Develop?ing event-condition-action rules in real-time active data?base[A].Proc of ACM Symp on Applied Computing[C].New York:ACM,2007:511-516.
[4]Wu E,Diao Y,Rizvi S.High-performance complex event processing over streams[A].Proc of ACM SIG?MOD 06[C].New York:ACM,2006:407-418.
Library Wireless Network Monitoring System Based on Complex Event Processing
YE Feng
(Guangdong Industry Technical College,School of Continuing Education,Guangzhou510300,China)
This paper designed library wireless network monitoring system based on complex event processing,built the framework of the system process.The complex event processing engine in real-time was used to monitor and detect complex environment event,sound a warning and perform the corresponding action.The system has the flexibility and the real-time performance,which can satisfy the monitoring requirement of the application scenario for the library.
complex event processing;wireless sensor;real-time
TP277
A
1009-9492(2014)05-0077-04
10.3969/j.issn.1009-9492.2014.05.019
葉 楓,男,1983年生,湖北武漢人,碩士,實(shí)驗(yàn)師。研究領(lǐng)域:計(jì)算機(jī)應(yīng)用。已發(fā)表論文5篇。
(編輯:向 飛)
*廣東省自然科學(xué)基金資助項(xiàng)目(編號(hào):S2011010001403)
2014-01-15