王威
(辽宁省环境监控中心,辽宁沈阳 110161)
应急救援演练系统管理器的设计
王威
(辽宁省环境监控中心,辽宁沈阳 110161)
应急救援演练系统对于事故应急管理具有重要的指导意义,系统管理器是应急救援演练系统中重要组成部分,主要负责监听系统性能和应用状态,并对监听到的数据进行处理,最后反馈给用户。本文基于应急救援演练系统需求和架构,阐述系统管理器的工作原理及主要功能,最后设计系统管理器的模型。应急救援演练系统管理器的模型包括系统管理器开关、应用状态监听器、系统性能监听器、数据处理模块、显示模块、异常处理模块这六个部分。
应急救援 模拟演练 系统管理器 监听
辽宁省境内辽河流域是重要的生态区、人口密集区、城市集中区、工业集群区和经济发 达区,对流域水资源的高度开发和利用,导致事故的类型和危险源的数量以及种类相应的增多,这就给应急救援带来了一些困难[1]。因此必须重视应急方案的制定以及事故处理措施,并且应该对应急救援进行模拟演练,然而真实的模拟演练将耗费大量的人力物力,会给生产以及资源造成一定的损失。为提高应急救援各部门的协同作业能力,从而提高事故应急处置行动中的效率、成功率,应急救援演练系统应运而生。
图1 观察者模式应用类图
图2 消息流图
系统管理器是应急救援演练系统中的一个重要组成部分,它主要负责监听系统状态和应用状态。系统状态包括网络状态、线程状态、事件状态等;应用状态包括用户身份、状态、数量,应用任务的状态、数量,系统中角色的类别、状态、数量。系统管理器同时反馈系统状态以及应用状态的异常,通过系统管理器的实现,指挥人员可以清楚的了解用户状态、角色状态还有任务状态等应用状态。而系统管理人员除了可以了解应用状态,还可以获得系统状态,发现异常,及时做出相应的处理,监听整个应急救援演练的进行。系统管理器拟采用观察者模式和消息监听机制实现。系统管理器中的网络状态监听和线程状态监听采用观察者模式,而事件监听和应用状态监听采用消息监听机制。
2.1 观察者模式及其在系统管理器中的应用
观察者模式又叫做发布-订阅(Publish/Subscribe) 模式、模型-视图(Model/View)模式[2]。观察者模式的目的是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式实现的方式有多种,而系统管理器采用的是观察者模式中比较直观的一种形式,即“注册—通知—撤销注册”的形式[3]。下面详细的描述了这种实现形式:观察者将自己注册到被观察者对象中,被观察者将所有的观察者都存放到容器中。如果被观察者发生某种变化,就会通知容器中的所有观察者,如果观察者不再继续观察的话,那么被观察者就将其从容器中删除。本文以线程监听和网络状态监听为例,详细介绍一下观察者模式在系统管理器中的应用,图1是观察者模式应用类图。
图3 功能结构图
由图1可知ThreadPool和NetComponent类继承自Subject类,SystemListener类继承自Observer类,SystemListener类依赖于ThreadPool类和NetComponent类。当线程池的线程状态和网络管理器的网络状态发生变化时,系统性能监听器的相关状态也随之发生变化。
2.2 消息监听机制及其在系统管理器中的应用
图4 系统管理器架构
应急救援演练系统中采用的是Delta3d引擎,该引擎中角色和组件之间相互通信的方式是消息,Delta3d引擎中通过消息队列存放待发送的消息,其中包括两个消息队列,分别是远程消息队列和本地消息队列。我们采用的消息监听机制是对D e l t a 3 d中GameManager的两个消息队列进行监听,如图2所示。当消息进入GameManager的队列时,触发应用状态监听器进行判定是否是所关心的消息类型并采取相应的操作。系统管理器中所监听的事件是状态改变的事件,应急救援演练系统中定义了应急救援演练开始、暂停、结束等事件。
事件的监听采用消息监听机制,当事件发生时,会生成事件并产生消息,GameManager将消息推进消息队列,由于我们监听消息队列,因此我们就得知事件发生了。应用状态包括任务数量以及任务的完成程度,角色种类以及数量等。应用状态的监听也是采用消息监听机制,当任务发布、角色创建时均生成相应的消息,监听器在消息进入队列时监听到任务或者角色的变化。
3.1 系统管理器的功能
应急救援演练系统中系统管理器的功能结构如图3所示。
由功能结构图可知,系统管理器分为两个部分:系统状态管理和应用状态管理。系统状态管理主要是为了方便系统管理员和程序员及时地得知系统的性能和实时地获取系统的状态。应用状态管理是为了指挥人员能够了解应急救援演练过程中参加的角色数量,任务的完成情况等。
3.2 系统管理器的架构
应急救援演练系统中的网络管理器负责网络的连接以及数据包的捕获和分析。而系统管理器所关心的是用户连接的数量,以及用户的连接状况例如成功连接、断开连接等,因此网络监听只需要针对网络管理器监听即可。应用救援演练系统采用的是线程池技术,线程池的结构包括以下四个部分:线程池管理器、工作线程、任务队列、任务接口[4]。通过线程池的结构我们可以获得工作线程数量,工作线程数量一般是固定的,因此我们只需针对任务队列进行监听,获取任务队列中待执行的任务数量即可。
由上文可知Delta3d引擎的GameManager有两个消息队列存放待发送的系统中的所有消息,对GameManager进行监听可以获取所有的应用状态和事件产生信息。
由图4可知,系统管理器的内部包括系统管理器开关、应用状态监听器、系统性能监听器、数据处理、显示窗口、异常处理。因为在应急救援演练系统运行时,系统管理器的实时监听所造成的开销比较大,所以为了提高效率满足需求,系统管理器设置了三种运行情况分别是:哑状态、默认状态、调试状态。应急救援演练系统开始运行时,会有提示信息让用户选择系统管理器的运行状态,默认选择是默认状态。通过设置这三个运行态,使得系统管理器具有更大的灵活性,更方便用户的使用。
系统性能监听器的监听对象是线程池和网络管理器。应用状态监听器的监听对象是GameManager和任务管理器。当系统管理器处于哑状态时这两个监听器全部关闭,系统管理器休眠。当系统管理器处于默认状态时应用状态监听器开启,系统性能监听器关闭。应用状态监听器获得的数据交由数据处理模块进行数据整理和分析,处理完毕后送到显示窗口。当系统管理器处于调试状态时,应用状态监听器和系统性能监听器同时开启,同理将实时监听到的数据送到数据处理模块进行处理最后显示到界面。
本文首先叙述应急救援演练系统管理器的原理,并详细介绍观察者模式和消息监听机制的原理以及在系统管理器中的应用,提出系统管理器的功能结构。根据以上原理和功能结构,最后设计系统管理器的模型。应急救援演练系统管理器是应急救援演练系统的重要部分,通过系统管理器的实现,监控应急救援演练的进行,指挥人员可以对应急救援演练进度有清楚的了解,及时发现网络连接异常情况等并做出处理,该系统可广泛应用于辽河流域污染事故应急。
[1]孙成江,刘林.应急救援模拟演练系统设计与实现初探[J].石油工业计算机应用,2010(3):3-6.
[2]阎宏.JAVA与模式[M].北京:电子工业出版社,2002:41-44.
[3]张宁,王越.观察者模式及其在软件开发中的应用[J].大众科技,2008(11):27-28.
[4]张渊,崔滨.线程池技术在网络游戏服务器中的应用[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