基础
TWaver设计模式
TWaver Flex采用基本的模型视图分离的设计思想,通过MV的组合嵌套,实现了以twaver.Data为基本数据元素,twaver.DataBox为基本数据容器的客户端数据模型,以及基本图形twaver.network.ui.ElementUI和数据容器组件(twaver.Network, twaver.Tree, twaver.Table...)的视图系统,三者共同构成了TWaver Flex的架构体系。
Twaver数据模型
TWaverFlex的基本数据元素是twaver.IData,基本数据容器定义为twaver.DataBox,基于这两类基本元素,TWaverFlex预定义了一系列业务对象,视图网元和管理容器,例如告警(twaver.IAlarm)和告警容器(twaver.AlarmBox),图层(twaver.ILayer)与图层管理容器(twaver.LayerBox) ,拓扑网元(twaver.IElement)和拓扑管理容器(twaver.ElementBox)......
数据元素结构图
数据管理容器结构图
其中拓扑管理容器(twaver.ElementBox)整合了其他几种容器,提供了丰富的拓扑元素(Dummy, Node, Link, Bus, ShapeNode, ShapeLink, Follower, Rack, Shelf, Slot, Card, Port, Grid, Group, SubNetwork......),为网管界面开发提供了强大的设计模型和业务功能的基础支持。 TWaverFlex以twaver.IData为最基本的数据单元,扩展定义了一系列具有图形和业务意义的数据类型,包括IAlarm, ILayer, IElement...
数据元素
TWaverFlex以twaver.IData为最基本的数据单元,扩展定义了一系列具有图形和业务意义的数据类型,包括IAlarm, ILayer, IElement...
?
twaver.IData
IData是TWaverFlex的数据元素基类接口,twaver.Data是对其实现类,定义了id, name, icon, toolTip, parent, children等基本属性,对事件派发做了封装,并支持xml数据的导入导出,为TWaver各平台间数据的可序列化奠定了基础。
Data继承于flash.events.EventDispatcher,这使他具有事件派发和监听的功能,可以通过调用下面的方法派发事件或者添加实现监听器:
flash.events.EventDispatcher#public 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;
此外,Data中还定义了其他功能函数
function get childrenCount():int; function get hasChildren():Boolean;
function isDescendantOf(data:IData):Boolean; function isParentOf(data:IData):Boolean; function isRelatedTo(data:IData):Boolean;
function toXML(context:XMLContext, newInstance:IData):void;
function parseXML(context:XMLContext, xml:XML):void;
function setPropertyValue(property:String, value:Object):void;
function getPropertyValue(property:String):Object;
下面分别介绍各个实现类
?
twaver.ILayer
图层,用于TWaver的图层管理,Layer实现了twaver.ILayer接口,有三个特殊属性:visible, editable, movable。TWaverFlex中的层次关系由LayerBox来管理,默认的层次顺序由父子关系和先后顺序决定,在拓扑图中,每个Element通过设置layerId与某个layer相关联以控制网元的显示层次。
?
twaver.IAlarm
告警,用来表示网管系统中设备故障或者网络异常的数据模型,基本实现类是Alarm。告警与Element相关联,用以反映网元的告警状态,Alarm中定义了级别,是否已清除,是否已确认以及相关联的网元编号。
TWaverFlex预定义了六种告警级别,告警级别的value属性可表示告警的严重程度,默认value值越大,告警越严重。 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
TWaver中告警使用AlarmBox进行管理,告警与网元通过AlarmBox来相关联,两者不直接引用,与网元直接引用的是AlarmState,用来反映新发告警的级别和数量
?
twaver.IElement
IElement是TWaver中最重要的数据元素,Element是其实现类,用于表示拓扑图中的网元对象,如节点,连线,子网,分组,板卡.......
TWaver预定义了丰富的网元类型(Dummy, Node, Link, Bus, ShapeNode, ShapeLink, Follower, Rack, Shelf, Slot, Card, Port, Grid, Group, SubNetwork......),每一种网元对应一个ElementUI类,对应网元在拓扑图中的呈现组件类型,两者构成一个模型与视图分离的模型结构。 通过设置网元的属性和样式可以表现出丰富的呈现效果和特性,用户也可以扩展这些预定义的Element,或者定制自己的ElementUI,已应对特殊的业务呈现需求。
Element数据可以用ElementBox管理, ElementBox可以驱动twaver.Network, twaver.Tree, twaver.Table等多种视图
Dummy
在拓扑图中不可见,可在树,表格中显示,通常用来表示无拓扑意义的逻辑分组
Node
表示拓扑图中的一个节点,是其他节点的基类
Link
表示连线,是其他连线类型的基类
Follower
表示跟随者,可以附着在另一个Node(称之为宿主节点)上,宿主节点移动,Follower也跟随着移动
Bus
继承于ShapeNode,是一种布局类型节点,可以与连接在它上面的节点们排布出总线布局那样的效果