APP下载

调度自动化机房网络配线管理软件设计与实现

2016-03-17李伟青陈龙成梅咏武

计算机测量与控制 2016年2期
关键词:软件设计绘图机房

李伟青,陈龙成,梅咏武

(广东电网有限责任公司梅州供电局,广东 梅州 514021)



调度自动化机房网络配线管理软件设计与实现

李伟青,陈龙成,梅咏武

(广东电网有限责任公司梅州供电局,广东 梅州514021)

摘要:针对公司调度自动化机房网络配线无图纸管理和标签标识不规范的情况,自主研发了一套机房网络配线管理软件;首先,分析了配线可视化管理软件应对网络配线绘图和标签信息自动生成的功能需求,并运用MVC模式理论进行软件架构设计;其次,重点阐述了基于QT图形库的关键功能实现,包括核心图元类的构建、元件库组件可配置生成、图形序列化反序列操作、拓扑查找、设备图元属性管理及标签信息自动生成功能等;最后,通过举例说明该软件在实际机房管理中的使用方法和应用成效;应用结果表明,通过绘制整个机房的网络连接图并录入相关设备属性信息,有助于提高机房网络故障的诊断效率和降低机房系统的运维风险。

关键词:机房; 网络配线; 软件设计; 绘图; 标签

0引言

电力调度自动化系统主站机房是服务器、工作站、交换机、路由器等网络设备密集分布的场所。自动化系统通常采用星型的网络结构,因此主干交换机屏柜汇聚了大量设备的网络接入。为使布线整洁美观,设备机柜的网线往往捆绑成股,导致难以厘清网线与设备端口之间的对应关系。另外,不同屏柜之间的业务交互,需要通过机柜配线架跳线转接来实现,由此产生的众多网线标签依赖于人工手动编辑打印,难以保证标签描述的准确性和规范性。在网络接线无图纸参照,且标签不清晰或者不正确的情况下,一旦发生网络链路故障,管理人员需顺着端口接线逐一查找,不仅排查效率低,还容易因误插拔正常运行的网络,造成业务被中断。

基于以上事实,我们自主研发了一套机房网络配线可视化管理软件系统,通过采用面向对象思想进行架构设计[1],可实现机房网线连接关系图绘制和展示,端口快速查找高亮拓扑,标签按标准模板自动生成等功能。可视化管理系统实现了机房网络连接关系的数字化、图纸化,为网络链路故障诊断提供快速、准确的依据。原来依赖手动编辑制作的设备标签,现可通过管理系统关联设备属性信息自动生成,杜绝了标签标识内容不准确、格式不规范的情况。

1软件总体设计

1.1功能需求分析

在网络配线管理软件设计之前需对复杂的机房配线连接关系和机房管理过程进行分析,具体功能需求如下:

1)将机房设备之间的网络连接关系可视化、图纸化。机房设备包括服务器、工作站,集线器,交换机,配线架、网线等。通过基本的分析,可以将设备大体划归为两类:一类是带有含有一定数量网口的设备图元;另外一类是连通端口关系的连线图元。软件需具备绘图平台且图元可定制,提供图元连接关系的交互式操作、设备信息录入功能。

2) 能辅助调度自动化系统运维人员管理机房配线。机房配线管理的内容包括:对不同类型设备根据业务功能分类、编号、贴标签,通过名称或者IP快速检索到设备及设备之间的连接关系,高亮显示指定网络连接路径以便故障排查等。针对这些业务需要,给基本的两类图元进行添加属性绑定功能。将基本的管理功能数字化成对设备属性的过滤与检索,从而实现复杂的业务逻辑。

综上所述,软件系统需要提供如下的功能:

1)基本的图形绘制的功能,包括配置基本的机房图元,绘制图元之间的连接关系;

2)提供基本的图元与图形编辑功能,包括画布的大小配置,图元的移动缩放,图元属性的录入与修改等;

3)图形的持久化保存,载入重现,图纸打印等文件管理;

4)高阶应用功能,如连接关系的拓扑查找,设备标签按照指定格式生成并导出。

1.2系统的整体框架设计

鉴于软件的总体功能需求是基于图形的绘制及应用,本软件选用了开源跨平台的图形库QT平台进行开发。QT系统基于使用面向对象的C++语言开发,提供了丰富的控件库以及优秀的2D、3D绘制功能[2]。针对于大量2D图元绘制与管理的场景,QT图形库提供了优秀的Graphics View Framework来应对这样的问题[3]。

图3 核心图元类构造及其关系

软件基于QT提供的Graphics View 框架进行开发。QT的Graphics View 框架提供View-Scene-Item的三类对象,供用户使用:Item作为是所有图元的基类,封装了图元公共属性;Scene场景类,管理所有的Item;并提供一个支持缩放与旋转的视图类View开对管理的图元进行显示。准确讲,QT提供的这个框架只是一个基于item的Model-View框架,为了方便将显示与控制逻辑进行解耦[4],参考经典的MVC架构加加入了控制器类GraphContext类,:Model类继承至框架本身已有的QScene类;Graph类继承QT的QGraphicsView类;加入了自定义的Controller类GraphContext类。三者的关系如图1所示[5]。网络配线管理系统同其它绘图的GUI系统一样,是事件驱动交互式用户界面系统,而GUI的用户输入事件只有按键与鼠标两类事件。用户的输入事件经由视图类Graph捕捉到后,交由控制器类GraphContext类进行处理。GraphContext控制器类,负责维护当前绘图的状态,并根据当前绘图系统状态(这也是类名取名context的原因),决定如何响应该用户事件。例如,同是鼠标点击事件,在连线绘制时,触发的是连线的绘制功能,而在正常的浏览状态下,鼠标移动则是执行的图元选择功能。

图1 MVC组件类型及功能

GraphContext类作为系统的核心类,其需要管理的一张绘图系统的方方面面,为从功能上解耦系统的各个模块,将系统功能细分为如图2所示的几大类功能模块,每个模块功能实现由专门的模块类予以实现。再由GraphContext将各个模块的功能组合在一起完成复杂的绘图系统。

图2 GraphContext类的管理功能

2关键功能实现

2.1核心图元组件的构造

本软件面向机房配线管理,主要涉及如服务器、工作站、交换机、路由器,防火墙、机柜及其配线架等有关于网络连接的设备,因此在编程中都将以上设备抽象为节点(Node)图元。节点内包含不定数量的网口(Connector)图元,网口之间连接存在两种连接:一种是模拟实际网线的连接(Link);另一种是配线架之间预连接的端口跳线(ShortcutLink)。各类图元均继承于GraphItem和QGraphicsItem这两个父类,具体关系如图3所示。

QGraphicsItem类是QT视图框架的一部分,是在一个QGraphicsScene中所有基本图形的父类,它为绘制item提供了一个轻量级的窗口,包括声明item的位置,碰撞检测,绘制重载和item之间的事件处理等。GraphItem是自定义的基类,用于包含所有类的基本属性和操作,如所有图元的外边轮廓、保存和恢复状态、属性配置等接口。

Node类是对现场设备的抽象,在场景中以矩形作为外边框,内含一定数量的“凸”形网口,通过双击事件可以触发节点属性管理窗口。构造Node类时还需注意外形与画布网格对其关系,Node文字标注与外形位置相对关系,Node中心坐标与Connector坐标之间的关系等等。

Connector是对设备网口的抽象,附属在Node中存在的非独立图元。网口具有上下两种朝向,网口之间可以通过Link和ShortcutLink两种图元连接;当网口捕捉到鼠标时,网口内的矩形热点会高亮;当网口位移变化时需要重新规划所连的接线或跳线。

Link是对网线的抽象,两端依赖于Connector而存在。连线具有线型、粗细、颜色等基本属性同时,还具备所连端口、承载业务、所属屏柜等应用属性用于高级功能。连线具有端口跟踪和可编辑功能,用于节点端口位置变化后,具有虚线跟踪端口新位置,为用户更新连线提供线路指引。

ShortcutLink与Link类似,但不需像Link根据画布的最小单元网格横平竖直走线,而是在两个网口之间以直线短接。在正常浏览、编辑状态下不显示短接线,这也是符合机房配线实际情形,因为短接线是机房建设预布置的固定走线,系统管理人员更多关注的是根据业务接入连线。

2.2基于XML可配置自动生成的图元库

机房网络设备的网口数量不一,在图元设计时如果固定设备的网口数,将难以满足现场网口多样性的需求。本文采用QT提供的QtXml模块,调用QXmlStreamReader解析XML配置文件自动生成图元库的方法[6-7]。用户只需按标准的XML格式编写,预先定义Node图元的大小、名称、网口图元大小、端口数量及朝向、端口热点大小等图元基本参数,并存放到系统指定路径,当系统启动时,自动读取配置,生成相应的设备图元,在图元库悬浮窗口中显示。配置文件格式如下所示:

1

80

2.3序列化与反序列化

网线配线管理系统不仅要提供图形绘制功能,还需要提供以文档形式保存与恢复图形的功能,这在软件工程上称之为序列化/反序列化[8]。具体来说,序列化即是将画布上图元对象及其属性数据以特定格式存入磁盘空间,以文件的形式实现持久保存的过程。相对应地,反序列化即是系统载入图形文件后,重现图元对象、连接关系、属性记录等信息的过程。系统的序列化过程是根据Item类别遍历场景内的所有Item输出到磁盘文件。对于基本的QT自带的文字,矩形,直线等图元,其本身并没有与其它对象产生相互引用的关系,依赖QT提供的接口即可完成其序列化与反序列的。但对于自定义的Node,Link等,对象之间通过C++指针建立起相互引用的树状关系。而指针只是对象在内存中的地址,如果直接将地址存入文件中,待反序列化恢复文件时,却不能保证新生成的文件依然在同一内存地址。显然,简单以保存内存地址的方式来序列化对象之间的引用关系行不通。为此,通过对系统中相互引用的对象,给其分配一个全局唯一ID,保存对象之间引用关系时,存入文件中的不是其地址而是对象的ID。同时,两两对象之间的引用关系转换成一对ID存入一张新的引用关系表(叫做ID引用关系表)中。反序列化时,系统首先构造新对象;然后通过反序列化接口恢复其内部状态(其ID会恢复成序列化时存入文件的ID);最后,当所有对象都恢复后,遍历ID引用关系表,恢复所有对象之间的引用关系。通过这种方式,即可以保证强关联的树状对象系统能得以正确的序列化与反序列化。在ID的生成方面, 系统引入UUID(Universally Unique Identifier)通用唯一标识[9],其16个字节的长度足以保证ID的唯一性。

2.4图形拓扑查找

调度自动化机房的网络接线比较复杂,一旦网络物理链路出现故障时,系统管理人员需根据已绘制的系统网络全图进行有针对性的排查。为提高故障诊断效率,本文开发了图形拓扑快速查找功能,即可通过选定某端口快速索引与其连接的所有端口及连线,或根据网络承载业务在网络全图中拓扑高亮标识。在绘制网络接线图时,端口之间通过连线建立了映射关系,应用拓扑算法实现指定端口连通的网络路径高亮显示,类似电力调度自动化系统中的电压拓扑着色功能[10],从而便于系统管理人员索引、分析各根网线的连接情况和承载业务。

图形拓扑查找的关键是通过连线建立起来的“路由表”,查找的工作只是按照一定的算法在表中快速串联各图元对象,以按名字查找为例,伪代码实现如下:

FiterConnectorByName(string a) {

foreach (Connector*c, scene->connectors()) {

//遍历场景中的所有网口

if (c.name.contains(a)) { //匹配端口名称

.....

}

}

2.5属性管理及标签自动生成

将绘制图元增加应用属性是本软件的重要功能特性。除了图元的基本几何信息外,应用属性主要还包括设备位置、名称、端口ID、对端端口ID、端口IP等。图元属性数据需与画布中的图元动态关联,例如通过设置属性列表中图元名称的更改,可动态更新至画布中。

属性列表以悬浮窗口RightDockWidget类实现,该类继承于QT的 “停靠”窗口QDockWidget父类,在窗口内创建treeWidget对象用于树形结构的属性内容视图。软件图元的双击事件触发到属性窗口显示,再利用QT的“信号与槽”机制实现属性值与图元数据的同步,即属性窗口检测到属性值变化后向绘图区域发送信号。例如:

connect (treeWidget, SIGNAL(itemChanged

(QTreeWidgetItem*, int)), RightDockWidget,

SLOT(propertyItemChanged(QTreeWidgetItem*,

int)));

标签管理一直是自动化机房标识管理的难点,存在包括线端数量多、描述格式不统一等问题。本软件在绘图功能的基础上结合图元属性管理,具有自动生成端口连接网线两端的标准标签功能。实现该功能的思路是遍历场景内的连接线,首先由连线找出两端网口编号ID、设备所属机柜、承载业务,然后通过文本处理组织构成标签的起点、终点、业务三要素信息,调用QT的QAxObject类将标签输出生成Excel文档,最后由专业标签打印设备关联Excel文档,批量输出可粘贴的纸质标签。

QAxObject对COM对象进行了封装,QAxObject派生自QAxBase,而后者提供了一组API通过IUnknown指针直接访问COM对象,Excel作为一个COM对象, 因此可以通过QAxObject来操作它。生成Excel文档的代码示例:

void newExcel(const QString &fileName) {

QAxObject *pApplication = new QAxObject();

//创建QAxObject对象

pApplication->setControl("Excel.Application");

//连接Excel控件

}

3管理系统的使用

图4 系统应用截图

配线可视化管理软件已在我公司调度自动化机房中得到应用。使用初期首先要收集机房现有设备及其网络连接关系信息,然后根据现场设备的安装位置在管理系统绘制整个机房设备网络连接全景图,最后完成相关设备属性的录入工作。图4是一台工作站和服务器跨机柜接入主干交换机的典型连接关系图。为简化模型,#13屏柜的配线架和交换机都只画出24个网口。图中#1机柜配线架#1网口与#13机柜配线架#1网口已预先布置跳线用于机柜间的互联,以虚线表示短接。系统开启拓扑功能后,例如选择#1工作站网口,即可高亮展示该网络连接路径图。当网络连接复杂至难以分辨时,该功能可以快速查定位网口、网络拓扑路径,有助于网络故障诊断和排查。

4结语

本文从机房管理存在的实际问题出发,深入分析系统业务功能需求,并基于MVC设计模式进行软件架构设计,通过采用QT图形库平台进行软件功能开发。可视化管理软件的实际应用,基本解决了我局机房配线管理“无图可依”和标签混乱的局面。机房网络连接全景图有助于减少网络故障排查时间;标签信息自动生成功能,大大减少标签维护工作量,同时保证了标签标识的准确性和规范性。

参考文献:

[1] 王治国,尹成,丁峰,等. 地震多属性分析系统的面向对象设计及敏捷开发过程[J]. 计算机应用,2008, 28(12):148-151.

[2] 罗俊松,邓飞,卢涵宇,等. 基于Qt的三维可视化技术研究[J].计算机测量与控制,2013,21(3):797-799.

[3] Jasmin B, Mark S著. C++ GUI Qt4编程[M]. 闫锋欣,曾泉人,等译.第2版. 北京:电子工业出版社, 2013.

[4] 温浩宇,刘芬芳,刘燕燕. 多视图下的生产线建模与仿真[J]. 计算机工程与科学, 2014, 36(9):1619-1622.

[5] 胡腾波,叶建栲. 基于MVC模式的WebGIS仿真系统[J]. 计算机应用研究, 2009,26(1):247-249.

[6] 吴洁明,范国梅. 基于 XML 的标准符合性测试方案[J]. 计算机应用,2012,32(2):551-553.

[7] Hu T, Chen G. Adaptive XML to relational mapping: an integrated approach [J]. Journal of Zhejiang University Science A, 2008,9(6): 758-769.

[8] 林菲. 软件事务内存的动态竞争管理策略[J]. 计算机工程与设计, 2010,21(7):1510-1512.

[9] 张孝飞,张振国,王亮,等. 实现J2EE项目可移植的策略研究[J]. 计算机工程与设计,2008,29(11):5494-5497.

[10] 邓其军,周洪,鲁觉. 面向图形对象的配电网单线图绘制与使用[J]. 电力自动化设备, 2009, 29(7):97-100.

Design and Implementation of Dispatching Automation Room′s Network Wiring Management Software

Li Weiqing,Chen Longcheng,Mei Yongwu

(Guangdong Power Grid Co., Ltd. Meizhou Power Supply Bureau, Meizhou514021, China)

Abstract:For the company dispatch automation room’s wirings hadn’t drawing management and the labels were not standard, a set of computer room network wiring management software was developed independently. Firstly, the functional requirements of visual wiring management software to deal with drawing network wiring and generating label information automatically were analyzed, and the software architecture based on MVC model theory was designed; Secondly, the implementation of the key functions based on QT graphics library platform were elaborated, including the construction of the graphic class, the generation of components library that can be configured, the graph serialization and anti-serialization operation, topology search, the attribute management of components and the automatic generation of label information; Finally, the actual usage and application effect of the software was illustrated through an example. The results of application show that drawing the entire room network connection diagram and input the device attribute information help to improve the efficiency of network fault diagnosis and reduce the risk of system operation and maintenance.

Keywords:computer room; network wiring; software design; drawing; label

文章编号:1671-4598(2016)02-0304-03

DOI:10.16526/j.cnki.11-4762/tp.2016.02.084

中图分类号:TP311

文献标识码:A

作者简介:李伟青(1986-),男,广东梅州人,硕士,工程师,主要从事应用软件开发,电力调度自动化系统维护方向的研究。

收稿日期:2015-09-06;修回日期:2015-09-27。

猜你喜欢

软件设计绘图机房
来自河流的你
“禾下乘凉图”绘图人
垂涎三尺
基于STM8S903K3的序列打螺丝夹具的软件设计
一种VHDL语言代码重用的方法
N通信公司机房节能技改实践
某IDC机房结构设计
新型有线电视机房UPS系统的配置
大功率发射机房冷却送风改造
Surfer和ArcView结合在气象绘图中的应用