王威
(遼寧省環(huán)境監(jiān)控中心,遼寧沈陽 110161)
應(yīng)急救援演練系統(tǒng)管理器的設(shè)計(jì)
王威
(遼寧省環(huán)境監(jiān)控中心,遼寧沈陽 110161)
應(yīng)急救援演練系統(tǒng)對(duì)于事故應(yīng)急管理具有重要的指導(dǎo)意義,系統(tǒng)管理器是應(yīng)急救援演練系統(tǒng)中重要組成部分,主要負(fù)責(zé)監(jiān)聽系統(tǒng)性能和應(yīng)用狀態(tài),并對(duì)監(jiān)聽到的數(shù)據(jù)進(jìn)行處理,最后反饋給用戶。本文基于應(yīng)急救援演練系統(tǒng)需求和架構(gòu),闡述系統(tǒng)管理器的工作原理及主要功能,最后設(shè)計(jì)系統(tǒng)管理器的模型。應(yīng)急救援演練系統(tǒng)管理器的模型包括系統(tǒng)管理器開關(guān)、應(yīng)用狀態(tài)監(jiān)聽器、系統(tǒng)性能監(jiān)聽器、數(shù)據(jù)處理模塊、顯示模塊、異常處理模塊這六個(gè)部分。
應(yīng)急救援 模擬演練 系統(tǒng)管理器 監(jiān)聽
遼寧省境內(nèi)遼河流域是重要的生態(tài)區(qū)、人口密集區(qū)、城市集中區(qū)、工業(yè)集群區(qū)和經(jīng)濟(jì)發(fā) 達(dá)區(qū),對(duì)流域水資源的高度開發(fā)和利用,導(dǎo)致事故的類型和危險(xiǎn)源的數(shù)量以及種類相應(yīng)的增多,這就給應(yīng)急救援帶來了一些困難[1]。因此必須重視應(yīng)急方案的制定以及事故處理措施,并且應(yīng)該對(duì)應(yīng)急救援進(jìn)行模擬演練,然而真實(shí)的模擬演練將耗費(fèi)大量的人力物力,會(huì)給生產(chǎn)以及資源造成一定的損失。為提高應(yīng)急救援各部門的協(xié)同作業(yè)能力,從而提高事故應(yīng)急處置行動(dòng)中的效率、成功率,應(yīng)急救援演練系統(tǒng)應(yīng)運(yùn)而生。
圖1 觀察者模式應(yīng)用類圖
圖2 消息流圖
系統(tǒng)管理器是應(yīng)急救援演練系統(tǒng)中的一個(gè)重要組成部分,它主要負(fù)責(zé)監(jiān)聽系統(tǒng)狀態(tài)和應(yīng)用狀態(tài)。系統(tǒng)狀態(tài)包括網(wǎng)絡(luò)狀態(tài)、線程狀態(tài)、事件狀態(tài)等;應(yīng)用狀態(tài)包括用戶身份、狀態(tài)、數(shù)量,應(yīng)用任務(wù)的狀態(tài)、數(shù)量,系統(tǒng)中角色的類別、狀態(tài)、數(shù)量。系統(tǒng)管理器同時(shí)反饋系統(tǒng)狀態(tài)以及應(yīng)用狀態(tài)的異常,通過系統(tǒng)管理器的實(shí)現(xiàn),指揮人員可以清楚的了解用戶狀態(tài)、角色狀態(tài)還有任務(wù)狀態(tài)等應(yīng)用狀態(tài)。而系統(tǒng)管理人員除了可以了解應(yīng)用狀態(tài),還可以獲得系統(tǒng)狀態(tài),發(fā)現(xiàn)異常,及時(shí)做出相應(yīng)的處理,監(jiān)聽整個(gè)應(yīng)急救援演練的進(jìn)行。系統(tǒng)管理器擬采用觀察者模式和消息監(jiān)聽機(jī)制實(shí)現(xiàn)。系統(tǒng)管理器中的網(wǎng)絡(luò)狀態(tài)監(jiān)聽和線程狀態(tài)監(jiān)聽采用觀察者模式,而事件監(jiān)聽和應(yīng)用狀態(tài)監(jiān)聽采用消息監(jiān)聽機(jī)制。
2.1 觀察者模式及其在系統(tǒng)管理器中的應(yīng)用
觀察者模式又叫做發(fā)布-訂閱(Publish/Subscribe) 模式、模型-視圖(Model/View)模式[2]。觀察者模式的目的是定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。觀察者模式實(shí)現(xiàn)的方式有多種,而系統(tǒng)管理器采用的是觀察者模式中比較直觀的一種形式,即“注冊(cè)—通知—撤銷注冊(cè)”的形式[3]。下面詳細(xì)的描述了這種實(shí)現(xiàn)形式:觀察者將自己注冊(cè)到被觀察者對(duì)象中,被觀察者將所有的觀察者都存放到容器中。如果被觀察者發(fā)生某種變化,就會(huì)通知容器中的所有觀察者,如果觀察者不再繼續(xù)觀察的話,那么被觀察者就將其從容器中刪除。本文以線程監(jiān)聽和網(wǎng)絡(luò)狀態(tài)監(jiān)聽為例,詳細(xì)介紹一下觀察者模式在系統(tǒng)管理器中的應(yīng)用,圖1是觀察者模式應(yīng)用類圖。
圖3 功能結(jié)構(gòu)圖
由圖1可知ThreadPool和NetComponent類繼承自Subject類,SystemListener類繼承自O(shè)bserver類,SystemListener類依賴于ThreadPool類和NetComponent類。當(dāng)線程池的線程狀態(tài)和網(wǎng)絡(luò)管理器的網(wǎng)絡(luò)狀態(tài)發(fā)生變化時(shí),系統(tǒng)性能監(jiān)聽器的相關(guān)狀態(tài)也隨之發(fā)生變化。
2.2 消息監(jiān)聽機(jī)制及其在系統(tǒng)管理器中的應(yīng)用
圖4 系統(tǒng)管理器架構(gòu)
應(yīng)急救援演練系統(tǒng)中采用的是Delta3d引擎,該引擎中角色和組件之間相互通信的方式是消息,Delta3d引擎中通過消息隊(duì)列存放待發(fā)送的消息,其中包括兩個(gè)消息隊(duì)列,分別是遠(yuǎn)程消息隊(duì)列和本地消息隊(duì)列。我們采用的消息監(jiān)聽機(jī)制是對(duì)D e l t a 3 d中GameManager的兩個(gè)消息隊(duì)列進(jìn)行監(jiān)聽,如圖2所示。當(dāng)消息進(jìn)入GameManager的隊(duì)列時(shí),觸發(fā)應(yīng)用狀態(tài)監(jiān)聽器進(jìn)行判定是否是所關(guān)心的消息類型并采取相應(yīng)的操作。系統(tǒng)管理器中所監(jiān)聽的事件是狀態(tài)改變的事件,應(yīng)急救援演練系統(tǒng)中定義了應(yīng)急救援演練開始、暫停、結(jié)束等事件。
事件的監(jiān)聽采用消息監(jiān)聽機(jī)制,當(dāng)事件發(fā)生時(shí),會(huì)生成事件并產(chǎn)生消息,GameManager將消息推進(jìn)消息隊(duì)列,由于我們監(jiān)聽消息隊(duì)列,因此我們就得知事件發(fā)生了。應(yīng)用狀態(tài)包括任務(wù)數(shù)量以及任務(wù)的完成程度,角色種類以及數(shù)量等。應(yīng)用狀態(tài)的監(jiān)聽也是采用消息監(jiān)聽機(jī)制,當(dāng)任務(wù)發(fā)布、角色創(chuàng)建時(shí)均生成相應(yīng)的消息,監(jiān)聽器在消息進(jìn)入隊(duì)列時(shí)監(jiān)聽到任務(wù)或者角色的變化。
3.1 系統(tǒng)管理器的功能
應(yīng)急救援演練系統(tǒng)中系統(tǒng)管理器的功能結(jié)構(gòu)如圖3所示。
由功能結(jié)構(gòu)圖可知,系統(tǒng)管理器分為兩個(gè)部分:系統(tǒng)狀態(tài)管理和應(yīng)用狀態(tài)管理。系統(tǒng)狀態(tài)管理主要是為了方便系統(tǒng)管理員和程序員及時(shí)地得知系統(tǒng)的性能和實(shí)時(shí)地獲取系統(tǒng)的狀態(tài)。應(yīng)用狀態(tài)管理是為了指揮人員能夠了解應(yīng)急救援演練過程中參加的角色數(shù)量,任務(wù)的完成情況等。
3.2 系統(tǒng)管理器的架構(gòu)
應(yīng)急救援演練系統(tǒng)中的網(wǎng)絡(luò)管理器負(fù)責(zé)網(wǎng)絡(luò)的連接以及數(shù)據(jù)包的捕獲和分析。而系統(tǒng)管理器所關(guān)心的是用戶連接的數(shù)量,以及用戶的連接狀況例如成功連接、斷開連接等,因此網(wǎng)絡(luò)監(jiān)聽只需要針對(duì)網(wǎng)絡(luò)管理器監(jiān)聽即可。應(yīng)用救援演練系統(tǒng)采用的是線程池技術(shù),線程池的結(jié)構(gòu)包括以下四個(gè)部分:線程池管理器、工作線程、任務(wù)隊(duì)列、任務(wù)接口[4]。通過線程池的結(jié)構(gòu)我們可以獲得工作線程數(shù)量,工作線程數(shù)量一般是固定的,因此我們只需針對(duì)任務(wù)隊(duì)列進(jìn)行監(jiān)聽,獲取任務(wù)隊(duì)列中待執(zhí)行的任務(wù)數(shù)量即可。
由上文可知Delta3d引擎的GameManager有兩個(gè)消息隊(duì)列存放待發(fā)送的系統(tǒng)中的所有消息,對(duì)GameManager進(jìn)行監(jiān)聽可以獲取所有的應(yīng)用狀態(tài)和事件產(chǎn)生信息。
由圖4可知,系統(tǒng)管理器的內(nèi)部包括系統(tǒng)管理器開關(guān)、應(yīng)用狀態(tài)監(jiān)聽器、系統(tǒng)性能監(jiān)聽器、數(shù)據(jù)處理、顯示窗口、異常處理。因?yàn)樵趹?yīng)急救援演練系統(tǒng)運(yùn)行時(shí),系統(tǒng)管理器的實(shí)時(shí)監(jiān)聽所造成的開銷比較大,所以為了提高效率滿足需求,系統(tǒng)管理器設(shè)置了三種運(yùn)行情況分別是:啞狀態(tài)、默認(rèn)狀態(tài)、調(diào)試狀態(tài)。應(yīng)急救援演練系統(tǒng)開始運(yùn)行時(shí),會(huì)有提示信息讓用戶選擇系統(tǒng)管理器的運(yùn)行狀態(tài),默認(rèn)選擇是默認(rèn)狀態(tài)。通過設(shè)置這三個(gè)運(yùn)行態(tài),使得系統(tǒng)管理器具有更大的靈活性,更方便用戶的使用。
系統(tǒng)性能監(jiān)聽器的監(jiān)聽對(duì)象是線程池和網(wǎng)絡(luò)管理器。應(yīng)用狀態(tài)監(jiān)聽器的監(jiān)聽對(duì)象是GameManager和任務(wù)管理器。當(dāng)系統(tǒng)管理器處于啞狀態(tài)時(shí)這兩個(gè)監(jiān)聽器全部關(guān)閉,系統(tǒng)管理器休眠。當(dāng)系統(tǒng)管理器處于默認(rèn)狀態(tài)時(shí)應(yīng)用狀態(tài)監(jiān)聽器開啟,系統(tǒng)性能監(jiān)聽器關(guān)閉。應(yīng)用狀態(tài)監(jiān)聽器獲得的數(shù)據(jù)交由數(shù)據(jù)處理模塊進(jìn)行數(shù)據(jù)整理和分析,處理完畢后送到顯示窗口。當(dāng)系統(tǒng)管理器處于調(diào)試狀態(tài)時(shí),應(yīng)用狀態(tài)監(jiān)聽器和系統(tǒng)性能監(jiān)聽器同時(shí)開啟,同理將實(shí)時(shí)監(jiān)聽到的數(shù)據(jù)送到數(shù)據(jù)處理模塊進(jìn)行處理最后顯示到界面。
本文首先敘述應(yīng)急救援演練系統(tǒng)管理器的原理,并詳細(xì)介紹觀察者模式和消息監(jiān)聽機(jī)制的原理以及在系統(tǒng)管理器中的應(yīng)用,提出系統(tǒng)管理器的功能結(jié)構(gòu)。根據(jù)以上原理和功能結(jié)構(gòu),最后設(shè)計(jì)系統(tǒng)管理器的模型。應(yīng)急救援演練系統(tǒng)管理器是應(yīng)急救援演練系統(tǒng)的重要部分,通過系統(tǒng)管理器的實(shí)現(xiàn),監(jiān)控應(yīng)急救援演練的進(jìn)行,指揮人員可以對(duì)應(yīng)急救援演練進(jìn)度有清楚的了解,及時(shí)發(fā)現(xiàn)網(wǎng)絡(luò)連接異常情況等并做出處理,該系統(tǒng)可廣泛應(yīng)用于遼河流域污染事故應(yīng)急。
[1]孫成江,劉林.應(yīng)急救援模擬演練系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)初探[J].石油工業(yè)計(jì)算機(jī)應(yīng)用,2010(3):3-6.
[2]閻宏.JAVA與模式[M].北京:電子工業(yè)出版社,2002:41-44.
[3]張寧,王越.觀察者模式及其在軟件開發(fā)中的應(yīng)用[J].大眾科技,2008(11):27-28.
[4]張淵,崔濱.線程池技術(shù)在網(wǎng)絡(luò)游戲服務(wù)器中的應(yīng)用[J].微計(jì)算機(jī)信息,2006(63):42-44.
Emergency rescue drill system has important guiding significance for accident emergency management. System manager is an important part of emergency rescue drill system, wh?major functions are listening system performance and application state, and processes the data what the system manager got, lastly feedbacks to the users. According to the system requirement and architecture of emergency rescue drill system, we designed a system manager model and expounded work principle and main functions of the model. Emergency rescue drill system manager has six parts, including the switch of the system manager, the listener of application state, the listener of system performance, the data processing module, the display module, the exception handling module.
Emergency Rescue; Simulation Training; System Manager; Listening