专利名称:一种软件界面的构造方法
技术领域:
本发明涉及一种界面开发方法,尤其涉及一种应用于电信网管软件图形界面 (GUI )的快速开发方法。
背景技术:
在目前的一些电信网管系统中,由于管理内容庞杂且管理的设备不同,所以 网管的操作界面多样复杂,网管软件的开发人员往往需要编写大量的界面代码来构 造客户需要的信息界面。例如网络中的网元信息的展现,网元产生的告警信息的 展现,以及对网络设备的图形化配置、管理。这些都需要在网管软件的客户端开发 人员使用大量的图形组件来实现。在当前网管系统的界面中,对控件的使用还停留 在提供部分特殊功能的组件上,但是这并不能解决在网管系统中需要编写大量界面 代码的问题,软件开发人员仍然需要花费大量的时间来编写界面代码,增加了软件 开发人员的负担。
在目前的电信网管系统的开发中,由于软件语言本身的特殊性,软件开发人 员需要先对界面布局进行设计,需首先确定界面使用语言中的哪种界面布局的方 式,而后再开始编写界面的代码,在软件的编码过程中,软件开发人员需要重复的 进行控件组装的工作。编写完成后需要运行界面代码,查看显示的界面是否达到了 自己设计的界面要求。如果界面复杂,则界面的布局设计就必须非常的清晰,否贝'J, 如果某个控件的布局不对,就可能需要再次的对整个布局重新分析设计。
由于界面定制的代码共享程度不够,在有些界面从外观上、包含的操作上都 具有相似性,分别单独开发的都是重复的硬代码,只有一些定制性代码有所改变, 这样使得界面开发工作量大,开发出来的界面不统一。
发明内容
本发明的目的在于解决上述问题,提供了一种软件界面的构造方法,能使软
件开发人员快速的开发易用、 一致的电信网管界面,并且不失各个界面的独立特征。 本发明的技术方案为 一种软件界面的构造方法,包括
(1)发人员根据界面开发需求编写符合界面描述语法的界面配置文件,以定
义软件界面的形式;
(2 )加载该界面配置文件并进行语法校验,生成界面对象模板并存储在预设 的界面模板存储空间;
(3) 用户程序请求使用界面对象,该些界面对象模板解析成实际的界面对 象,并存储于独立的名字空间;
(4) 开发人员对该些界面对象通过编码或者其他程序控制的手段加以扩展 和/或进行额外的设置,以控制该些界面对象,从而完成软件图形界面 的构造。
上述的软件界面的构造方法,其中,步骤(l)中该界面配置文件符合XML 规范和自定义的XML DTD或Schema约束,同时采用Java Swing平台。 上述的软件界面的构造方法,其中,步骤(2)和(3)进一步包括 (a)加载指定范围的符合DTD定义的界面配置文件,并将其作为一组文件加 以隔绝;
(b )将该些界面配置文件转换为可被一界面信息引擎识别的对象化的原始信
息;
(c )该界面信息引擎将该原始信息转换为可被一界面构建引擎识别的界面信
息;
(d)该界面构建引擎将该界面信息组装或构建为界面对象,并存储在独立的 名字空间中。
上述的软件界面的构造方法,其中,所述界面信息标识界面对象、代表界面对 象的属性和界面对象之间的关系。
上述的软件界面的构造方法,其中,所述实际的界面对象包括 表格类对象,通过一个表头和表身展现具有相同属性的数据; 树类对象,通过树形结构展现具有层次结构的数据; 网络图类对象,通过网络分层图展现图形对象; 设备面板类对象,通过组合图形展现电信设备的视对象属性类对象,通过组合基本的对象展现对象的属性集; 组合类对象,通过内部关联关系展现多个界面对象的组合。
上述的软件界面的构造方法,其中,步骤(4)还包括在名字空间中查找界面
对象的过程,该过程包括
该界面解析器接收所请求的界面对象的ID参数;
判断该ID的界面对象是否在默认的名字空间中,若存在则返回该界面对象, 否则根据该ID的界面对象的界面模板类型构造该界面对象,将其保存在默认的名 字空间并返回该对象。
本发明对比现有技术有如下的有益效果本发明根据界面描述语法编写配置 文件,通过界面解析器生成软件开发人员需要的界面,并可以对此界面重复使用。 本发明解决了软件开发人员需要花费时间精力编写重复的界面代码的问题,节约软 件开发人员需大量编写界面代码、组装界面代码工作的时间,让软件开发人员可以 将更多的精力投入到实现电信网管系统业务中,从而提高了工作效率。
图1是本发明的软件界面构造方法的一个较佳实施例的流程图。
图2是本发明的表;f各类组件的一个实施例的示意图。
图3是本发明的X几解析过程的示意图。
图4是图1所示实施例的步骤S2和S3的详细流程图。
图5是图1所示实施例的步骤S4中查找界面对象的详细流程图。
具体实施例方式
下面结合附图和实施例对本发明作进一步的描述。
图1示出了本发明的软件界面构造方法的一个较佳实施例的流程。请参见图 1,下面是对流程中各步骤的详细描述。
步骤Sl:开发人员根据界面开发需求编写符合界面描述语法的界面配置文件, 以定义软件界面的形式。
在本实施例中采用X几的界面描述语法。X几是XML to Java Swing Language 的简称,XML (扩展标签语言)说明XJL文件和语法符合XML规范,是采用XML的
格式,XJL语法也符合XMLDTD(文档类型定义文件)或者Schema约束。Java Swing 是X几产品默认转化出来的界面对象所基于的平台,用于定义典型的网管界面。
本实施例的X几界面描述语法定义了七种界面元素(分别对应实际的七种界 面对象)以及它们之间的相互关系。这七种界面元素分别是表格类,通过一个表 头和表身展现一系列具有相同属性的数据;树类,通过树形结构展现一系列具有层 次结构的数据;网络图类,通过网络分层图展现一系列图形对象;设备面板类,通 过组合图形模拟展现电信设备的视图;对象属性类,通过基本的元素组合起来以展 现某个电信业务对象的属性集;组合类,将以上的界面元素按照特定的需求和电信 对象内部关联关系组合展现(例如树表联动界面是将树界面和表界面组合,向导类 是将多个对象属性界面组合展现等);其他比较小的界面交互形式的元素,例如对 话框、欢迎的闪屏等。
界面元素之间的相互关系包括组合、扩展、引用等。在电信网管系统中需 要创建、修改、删除对象的操作,对于那些属性较多的业务对象,需要将业务对象 分解在不同的系统界面中展现,软件开发人员可以在界面配置文件中定义多个不同 的界面信息,然后根据界面描述语法定义此界面的组合信息。
下面以一个界面表格组件为例,请参见图2,表格中展现的是一个人的部分信 息,表格的表头部分显示此人的属性信息,例如姓名、年龄等。表格中显示这些属 性的4直。
软件开发人员根据界面所显示的Table对象来定义Table控件类型,又由于 Table中显示数据的属性包含有姓名和年龄,还需要定义数据的Bean对象,这个 Bean对象包含两个属性就是姓名和年龄。由此可定义出如下的界面配置文件 <GUI>
<TableSet>
<Table id= "personTable" <BeanInfo id= "person" /> <Column reference- "name" <Column reference = "age" 〈/Table〉 </TableSet>
title= "Person List" >
title= "Name" width= "30" /> tUle= "AGE" width= "30" /〉
<BeanSet>
〈Beanlnfo id= "person" class= "com. alleninfo. domain.Person" > <Property name= "name" /> 〈Property name- "age" /> </BeanInfo〉 </BeanSet> </GUI〉
根据XJL界面描述语法的规则,定义的Table对象必须包含在TableSet中。 Table对象的属性有id、 title等,id的属性值作为此对象在TableSet存储空间 中的唯一标识,title的属性值是Table控件的自身属性,用以作为表格的标题。 Table描述中的Beanlnfo字段表明此Table所引用的对象的描述信息Beanlnfo, Table的每个Column的属性包括有reference属性。Reference属性值和Beanlnfo 中的此Column的属性对应,Title属性的属性值是此Column的显示名称,width 是此Column的宽度值。
表中所包含的数据需要定义相同的数据Bean信息Beanlnfo, id的属性值作 为此对象在BeanSe t存储空间中的唯一标识,c 1 as s指定了此数据对象所引用的对 象路径,Beanlnfo的描述信息包括Property (属性),即这个Beanlnfo数据对象 的属性名称,要注意的是在这里属性name的值,必须和程序中定义的类的类变量的 名称保持一致,否则XJL界面解析器将无法解析出正确的对象。
下面是前面的XJL界面配置文件所定义的对象的伪代码,所有类都继承自 Taglnfo类。Taglnfo类作为XJL中每个对象信息的基类。
class Tablelnfo extends Taglnfo { String id', String title; Bean beanlnfo; LisKColuranInfo〉 columns;
从上面的伪代码可看出Tablelnfo对象从Taglnfo类继承,定义了四个类变 量,分另'J是Table的属'f生id、 title、 beanlnfo、 colunms。其中类变量columns 是Table的列属性,使用Col画Info来描述其属性。
而Column Info的类定义如下
class Col咖nlnfo extends Taglnfo { String reference; String title; int width;
Columnlnfo类也继承自Taglnfo,定义了 3个类变量,分别是Colu咖的属性 reference, title, width。其中reference是的值必须和指向的Bean中的哪个字 段的名称相对应。
结合之前配置的X几界面配置文件的相关描述
<Table id= "personTable,' title- "Person List" > <BeanInfo id= "person" />
<Column reference- "name" title- "Full Name" width- "30" /> <Column reference = "age"title- "AGE" width- "30" /> 〈/Table>
Table中引用的Beanlnfo是person,那么在Person字段中有name类变量, 那么这里Column的reference的^f直就必须为name。 Column的Title的值是此 Column的列名,width的值是此列在显示时的宽度。
Beanlnfo类也继承自Taglnfo, Beanlnfo主要是封装Table对象的数据实体, 有3个属性,id是Beanlnfo在其容器BeanSet中的唯一标识,className是这个 Beanlnfo所引用的对象路径,propert ies是这个对象的属性名称的集合。Beanlnfo
类定义如下
class Beanlnfo extends Taglnfo { String id; String className; List<PropertyInfo> properties;
Propertylnfo类也继承自Taglnfo类,Propertylnfo类主要是描述Bean中 的字段名称,只有一个属性名称Name,它的值就是字段的名称。类定义的伪代码 如下
class Propertylnfo extends Taglnfo { String name;
同样可以从X几界面配置文件中看出
<BeanInfo id= "person" class= "com. alleninfo. domain. Person"〉
<Property name= "name" /〉
<Property name= "age" /> </BeanInfo>
上述的伪代码和说明描述了一个表格控件在XJL界面配置文件中是如何设计的。
步骤S2:界面解析器加载该界面配置文件并进行语法校验,生成界面对象模 板并存储在预设的界面模板存储空间。
步骤S3:用户程序请求使用界面对象,该些界面对象模板解析成实际的界面
对象,并存储于独立的名字空间。
请同时参见图3,界面解析器按功能分为界面信息引擎和界面构建引擎。首先, 界面信息引擎31加载指定范围的符合DTD定义的界面配置文件33。然后,将这些 界面配置文件33转换为可被界面信息引擎31识别的对象化的原始信息34。再次, 界面信息引擎31将原始信息34转换为可被界面构建引擎32识别的界面信息35。 界面信息引擎31转换得到的界面信息35可标识界面对象,代表界面对象的属性和 界面对象之间的关系。最后,界面构建引擎32将界面信息35组装或构建为界面对 象36,并存储在独立的名字空间中。
界面构建引擎32负责如下的工作将界面信息解析为具体的界面对象;提供 名字空间管理、鉴别和关联机制,并按照不同的名字空间存储和管理界面对象。
对于加栽界面配置文件这一过程,首先构造一个资源加载器。例如步骤S1中 编写的界面配置文件保存的路径是"com. a lleninfo. domain, resc"下,那么在使 用资源加载器时需要将此路径传递给资源加载器。资源加载器获得此路径后能够遍 历此路径下的资源,提供所有资源名称列表。
加栽所有的XJL资源的原理如下
第一,遍历所有的资源加载器提供的资源(即界面配置文件)名称,过滤出 符合条件的XJL资源文件。第二,在读取每个文件流的同时,借助DTD约束对文件 进行语法检查,检查通过的文件将每个界面配置文件解析称为Dom Document对象, 语法检查不通过的文件不会被解析,但不会影响解析后面的文件。第三,对读取到 的X几文件按照Dom(文档对象模型)对象的类型将所有的Document对象中的Dom 对象解析成为相应的界面对象。
图4示出了步骤S2和S3的一个实现流程。 步骤S21:资源加载器首先读取DTD文件。 步骤S22:资源加载器接收界面配置文件所在的文件路径参数。 步骤S23:资源加载器读取该路径下所有可识别的界面配置文件。 步骤S2^对读入的界面配置文件的格式进行校验,检查是否满足DTD文件的 定义。若满足则进入步骤S25,否则进入步骤S26。
步骤S25:将界面配置文件解析为可识别的界面对象并存入存储空间中。 步骤SM:检查是否还有未读取的界面配置文件。若有则返回步骤S23,否则退出检测,流程结束,界面配置文件加载完成。
步骤S4:开发人员对该些界面对象通过编码或者其他程序控制的手段加以扩
展和/或进行额外的设置,以控制该些界面对象,从而完成软件图形界面的构造。
通过步骤S2中将一个界面配置文件读入存储空间中,此时在存储空间中的对 象并不是真正可使用的界面对象,它们只是单个的实例。如果要成为真正的对象还 要将这些分开的实例解析为遵循开发语言的界面结构的对象。当用户程序第一次请 求某个界面对象时,才将解析出来的Tag对象解析成用户所能看到的界面组件。
在解析Tag对象之前,必须首先获得界面配置文件中所定义的对象。例如, 在步骤S2中已经解析出TableTag对象。用户在请求获得这个Table对象时将 "personTable"作为此对象的唯一 id作为参^t调用API (应用编程接口 )中专门 查找Table对象的接口,那么当X几界面解析器找到此id的TableTag对象后,将 其解析为真正的界面组件对象。
请参见图5,详细描述了查找界面对象的流程。
步骤S41:界面解析器接收所请求的界面对象的id参数。
步骤S":在默认的名字空间下查找该id的界面对象。
步骤SW:是否存在此id参数的界面对象。若是则返回该界面对象,流程结 束;否则进入步骤S44。
步骤S44:根据此id参数的界面对象的界面模板类型来解析在存储空间中的 此id的X几Tag,因为组件的类型是已经定义的,所以相同组件类型的TagResolver 相同,构造该界面对象,将其存储在默认的名字空间并返回该对象,流程结束。
这样,当软件开发人员第二次在相同的名字空间获取此对象时,不需要再次 解析,直接从默认的名字空间中获得此对象。
上述实施例是提供给本领域普通技术人员来实现或使用本发明的,本领域普 通技术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或 变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提 到的创新性特征的最大范围。
权利要求
1一种软件界面的构造方法,包括(1)开发人员根据界面开发需求编写符合界面描述语法的界面配置文件,以定义软件界面的形式;(2)加载该界面配置文件并进行语法校验,生成界面对象模板并存储在预设的界面模板存储空间;(3)用户程序请求使用界面对象,该些界面对象模板解析成实际的界面对象,并存储于独立的名字空间;(4)开发人员对该些界面对象通过编码或者其他程序控制的手段加以扩展和/或进行额外的设置,以控制该些界面对象,从而完成软件图形界面的构造。
全文摘要
本发明公开了一种软件界面的构造方法,能使软件开发人员快速的开发易用、一致的电信网管界面,并且不失各个界面的独立特征。其技术方案为构造方法,包括开发人员根据界面开发需求编写符合界面描述语法的界面配置文件,以定义软件界面的形式;加载该界面配置文件并进行语法校验,生成界面对象模板并存储在预设的界面模板存储空间;用户程序请求使用界面对象,该些界面对象模板解析成实际的界面对象,并存储于独立的名字空间;开发人员对该些界面对象通过编码或者其他程序控制的手段加以扩展和/或进行额外的设置,以控制该些界面对象,从而完成软件图形界面的构造。本发明应用于电信网管软件图形界面(GUI)的软件开发领域。
文档编号G06F9/44GK101192143SQ20061011894
公开日2008年6月4日 申请日期2006年12月1日 优先权日2006年12月1日
发明者尹逖鹏, 张玉柱, 杰 熊 申请人:上海亚伦科技有限公司