输出结果:
数据元素
数据元素是数据模型的基本要素,用于描述图形网元,业务网元,或者纯数据。TWaver Flex中所有数据元素都实现了接口twaver.IData。为不同功能的需要,预定义了三类数据类型twaver.IElement, twaver.IAlarm, twaver.ILayer,分别用来描述拓扑网元,告警和图层。其中拓扑网元扩展定义了十几种网元类型,用以描述丰富的拓扑网元特性,其中最常用的几类拓扑网元包括:基本网元,连线,子网,分组,设备面板...本章将详细介绍这些网元以及其他数据类型的特性,使用与扩展应用
基本数据元素
IData是TWaver Flex数据元素最基本的接口,Data是其实现类。Data中定义了id, name, icon, toolTip, parent, children等基本属性,对事件派发做了封装,并支持xml数据的导入导出,为TWaver跨平台数据交换奠定了基础。
Data继承于flash.events.EventDispatcher,这使他具有事件派发和监听的功能,可以通过调用下面的方法派发事件或者添加实现监听器:
flash.events.EventDispatcher#dispatchEvent(event:Event):Boolean
flash.events.EventDispatcher#addEventListener(type:String, listener:Function,
useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void
Data还实现了twaver.IData接口,实现了对属性变化事件的派发和监听
function dispatchPropertyChangeEvent(property:String, oldValue:Object, newValue:Object):Boolean;
function addPropertyChangeListener(listener:Function, priority:int = 0
, useWeakReference:Boolean = false):void;
function
removePropertyChangeListener(listener:Function):void; 定义了父子关系,每个元素都可以添加孩子,也可以设置父亲 function get childrenCount():int; function get hasChildren():Boolean;
function isDescendantOf(data:IData):Boolean; function isParentOf(data:IData):Boolean; function isRelatedTo(data:IData):Boolean; 定义了一些基本属性,包括编号,名称,图标,提示文本......
其中id是数据元素在数据容器中的唯一标识,不能重复,构造Data时,TWaver会自动设置唯一编号,当然用户也可以自己传入,id设置后不能再修改
public function Data(id:Object = null) public function get id():Object public function get/set name():String public function get/set icon():String public function get/set toolTip():String
如果用户需要设置其他属性,可以通过setPropertyValue(...)方法,类似Java中的HashMap存放元素属性
function setPropertyValue(property:String, value:Object):void;
function getPropertyValue(property:String):Object; 数据元素还具有导入导出功能,以便于数据的交换和传输
public function serializeXML(serializer:XMLSerializer, newInstance:IData):void
public function deserializeXML(serializer:XMLSerializer, xml:XML):void
告警元素
TWaver中定义了告警,每个告警有告警级别,用以反映告警的紧急程度,告警使用AlarmBox进行管理,将告警与拓扑网元相关联。网元本身不存储具体的告警,而只存储当前告警状态信息。
告警
用来表示网管系统中设备故障或者网络异常的数据模型,与Element关联以反映网元的告警信息,Alarm中预定义了告警级别、告警是否已清除,告警是否已确认以及发出告警的网元编号,用户也可以通过setPropertyValue(...)方法添加自己的属性。 告警中定义的属性如下:
public function Alarm(alarmID:Object = null, elementID: isAcked:Boolean = false, isCleared:Boolean = false) public function get elementID():Object public function get/set isAcked():Boolean public function get.set isCleared():Boolean
public function get/set alarmSeverity():AlarmSeverity
告警级别
告警级别用以反映告警的紧急程度,TWaverFlex中预定义了六种告警级别,告警级别的value属性表示告警的严重程度,默认值越大告警越严重
public static var CRITICAL:AlarmSeverity = register(500, \, \, 0xFF0000);
public static var MAJOR:AlarmSeverity = register(400, \, \, 0xFFA000);
public static var MINOR:AlarmSeverity = register(300, \, \, 0xFFFF00);
public static var WARNING:AlarmSeverity = register(200, \, \, 0x00FFFF);
public static var INDETERMINATE:AlarmSeverity = register(100, \, \, 0xC800FF);
public static var CLEARED:AlarmSeverity = register(0, \, \, 0x00FF00);
Severity CRITICAL MAJOR MINOR WARNING
Letter Value Color C M m W
500 400 300 200 100 0
Red Orange Yellow Cyan Purple Green
INDETERMINATE N CLEARED
R
告警级别中的级别都是静态变量,用户也可以全局注册或者卸载自己的告警级别,此外还提供清除所有告警级别的方法(因为是全局变量,删除告警级别会对整个程序影响,要小心使用)
public static function register(value:int, name:String, nickName:String, color:uint, displayName:String = null):AlarmSeverity
public static function
unregister(name:String):AlarmSeverity public static function clear():void
可以全局的监听告警级别的增减变化,如增加级别,卸载告警级别,清除所有告警级别
public static function
addAlarmSeverityChangeListener(listener:Function, priority:int = 0, useWeakReference:Boolean = false):void
public static function
removeAlarmSeverityChangeListener(listener:Function):void
告警状态AlarmState
实际应用中,告警的出现可能成千上万,面对告警风暴,直接与告警关联是沉重的,所以TWaver采用网元与告警分离,由告警容器去管理所有告警,网元本身只存储告警状态信息,如当前有多少条告警,最高级别是什么,而对于每条告警具体的信息存放在告警容器(AlarmBox)中。 网元告警状态用 twaver.AlarmState来定义,用来反映新发告警的级别和数量。
告警状态属性包括,确认告警的最高级别,新发告警的最高级别,该网元所有告警的最高级别,新发告警次高级别,自身告警最高级别,传递告警级别以及各级别告警的数量
public function get
highestAcknowledgedAlarmSeverity():AlarmSeverity
public function get highestNewAlarmSeverity():AlarmSeverity public function get hasLessSevereNewAlarms():Boolean public function get
highestOverallAlarmSeverity():AlarmSeverity public function get
highestNativeAlarmSeverity():AlarmSeverity
public function get/set propagateSeverity():AlarmSeverity public function
getAcknowledgedAlarmCount(severity:AlarmSeverity = null):int
public function getAlarmCount(severity:AlarmSeverity = null):int
public function getNewAlarmCount(severity:AlarmSeverity = null):int
public function setNewAlarmCount(severity:AlarmSeverity, count:uint):void
修改告警状态的相关方法:确认告警,清除告警,增加/减少确认告警,删除告警...
public function
increaseAcknowledgedAlarm(severity:AlarmSeverity, increment:uint=1):void
public function increaseNewAlarm(severity:AlarmSeverity, increment:uint=1):void
public function
decreaseAcknowledgedAlarm(severity:AlarmSeverity, decrement:uint=1):void
public function decreaseNewAlarm(severity:AlarmSeverity, decrement:uint=1):void
public function
acknowledgeAlarm(severity:AlarmSeverity):void
public function
acknowledgeAllAlarms(severity:AlarmSeverity = null):void