论文部分内容阅读
摘要:传统桌面软件的GUI(Graphic User Interface)实现方式缺乏类似HTML模式的“页面描述机制”,这个弊端导致大量冗余工作的出现。而且软件GUI的运行时动态创建也存在问题。针对这些缺陷,该文提出了基于XML的图形用户界面的表达描述和实现,在这种方式下的GUI与软件属于无耦合方式,从而从根本上解决了跨平台的问题。另外,这种方式下GUI可以与插件系统进行对接,为界面的构件化提供了可能。
关键词:XML;桌面软件;GUI;构件
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)27-1962-04
Design and Application of Desktop Software’s GUI Based on XML
LI Chu
(Wuhan Maritime Communication Research Institute,Wuhan 430079,China)
Abstract:The implementation of the traditional desktop software’s GUI (Graphic User Interface) lacks the way of "the page description mechanism" that similar HTML mode, this abuse cause a great deal of emergence that the redundancy work. And the dynamic establish in the runtime of the software GUI also exist a problem. Aim at these problems, this paper provides the expression description and realization of GUI based on XML,in this way the coupling of GUI and software is incompact, thus resolving the problem of the cross-platform and by the root. Moreover, under this kind of way the GUI can carry on with the plug-in system and provide a possibility for the component of the interface.
Key words:XML;desktop software;GUI;component
1 引言
随着信息时代的发展,计算机软件的需求越来越复杂,规模越来越大,而且随着企业的发展和业务的扩展,需求变化是不可避免的。目前,大多数软件系统的界面、功能都是固定编码的,如果需求发生了变化,则必须修改源代码,然后将程序重新编译。需求变化中的很大一部分是类似但又十分琐碎的,然而,软件的开发人员的流动性很大,加上开发文档的缺乏,导致这种需求变化很难得到快速的满足。据统计,在一个应用程序中平均48%的代码用于用户界面,大约50%的执行时间用于执行用户界面程序[1]。随着软件系统规模的不断扩大,开发用户界面所耗费的时间和成本也将成倍增加[2],因此,怎样在较短的时间内设计出符合用户要求的用户界面,提高用户界面的开发效率,无疑是应用程序必须急待解决的一个问题。为此本文提出了一种基于XML 的用户界面实现方法。
2 传统桌面软件图形用户界面实现的优势与弊端
2.1 Web软件的优势
毋庸置疑,Web软件的动态性、易于部署和表现力丰富等等关键特征奠定了这类软件在现代软件应用中的优势,随着应用的积累,Web软件的聚合效应也日渐凸显,许多大型的门户已经开始基于这种聚合效应构建未来的软件服务模式。就软件的发展趋势而言,由于用户的硬件环境越来越强大、成本越来越低,因此,未来在用户的桌面上运行的不应该仅仅是基于HTML的轻量级的应用,但就今天的技术而言,人们还不能像编写HTML那样编写桌面特征的软件,因此,一个关键的问题浮现了,那就是如何架构一种软件开发模式,即可以发挥桌面软件的技术优势,又能够很好的体现Web软件的优势,同时也可以充分发挥Web服务器的威力、技术储备效应。通过将大量的框架性质的代码归结为XML描述,可以使桌面软件开发向着“页面化”的方向前进。
2.2 桌面软件的优势
显然,尽管Web软件有丰富的表现力,但更丰富的用户体验还是桌面软件体现的,因此,在交互性以及业务密集型的应用之中,桌面软件依然占据主流。由于需要本机安装,因此,桌面软件的部署是一个关键问题。
2.3 桌面软件图形用户界面实现的弊端
大量的软件组件积累来自于传统的软件开发技术,当我们面对一个功能有限、扩展性要求不高的软件需求时,传统的技术模式不会有所谓的“劣势”,传统的软件技术特别适合开发那些功能描述相对确定的、作用域不是很宽、大的软件系统,或一个功能局限的局部系统。从许多方面看,大量的功能具体的组件,都是基于传统的技术框架实现的,类似HTML等技术,往往是起到一个对传统技术组件“组织”的作用,从许多方面看,桌面软件的体验,对具体的用户而言还是非常重要的,因此,类似HTML之类的技术不能解决软件的全部问题,许多应用还需要桌面体验很强的软件进行支撑。但当一个系统出现功能扩展方面的需求的时候,问题就出来了,在Web领域,对一个Web应用的各种考虑,大体是一致的标准思考方式,然而对桌面开发而言,却受制于团队的技术积累等多方面因素。是否存在类似于Web方式的软件描述技术来改变现在的大型桌面软件的“僵化”状态呢? [3]
1) 桌面软件缺乏类似于HTML模式的“页面描述机制”,这是传统桌面软件开发最显而易见的弊端,这个弊端导致大量的冗余工作的出现,例如,在MFC开发中,针对不同的CMainFrame框架,我们往往必须对应不同的C 工程以解决CMainFrame的具体的表现形态,对VB6、Delphi以及.NET桌面开发都存在类似的冗余劳动;
2) 传统软件开发模式的第二个弊端是不能为桌面软件提供一个通用的“脚本”引擎以及UI引擎使得软件可以根据不同的情况形成不同的方案。这一点与Web开发也形成鲜明的对比;
3) 传统模式的第三个弊端是,通常情况下,对系统的扩展依赖于软件框架的源代码,尽管有“plug-in”概念,但这类概念的实现依赖于软件的技术积累,Plug-in不是通用的行为,而是“个案”。对大多数软件而言,缺乏编译后的扩展、二次开发功能,许多功能的体验完全取决于开发环节的工作,一旦开发结束,用户级别的扩展、二次开发等难度较大,成为软件适应用户不断增长的需求的关键障碍;
4) 传统桌面软件开发模式的第四个弊端是缺乏与Web技术的结合模式。
2.4 结合Web软件和桌面软件的必要性
现代软件发展的趋势是软件的服务必将替代软件销售。因此,软件发布、获取的模式正在日渐改变,随着桌面软件逐渐吸收Web软件的优点。最终,Web软件与桌面软件之间的差别会变得非常模糊。
桌面软件开发Web化的设想是将支撑功能组合的XML段落自然的写在HTML页面之中,不必进行那些重量级的编码,一样可以获得相同体验的GUI形式,这一点客观上将导致桌面系统构造工程的Web化。同时,开发者获得足够的时间去考虑如何形成功能更加强大的软件组合形式,如同网站聚合Web内容一样,这种变迁一定会发生在桌面开发过程之中。GUI页面化,不仅仅简化了软件的开发环节,同时也给软件部署的环节带来新的变化,那就是开发者可以利用成熟的HTTP协议部署、发布桌面软件功能了,这样考虑的优势是优秀技术的自然结合,而不是一种严酷的淘汰。面对大量的桌面组件的积累,更科学的考虑是如何结合现有的技术充分的利用这些积累。
3 XML元素
由于用户界面主要是由窗口、对话框和各种控件组成,用户操作界面是由事件驱动的, 因此我们不仅定义了界面元素,同时还定义了对应元素的事件和动作,加入了逻辑结构的判断语句。在XML 规范的基础上定义了针对界面元素的所需要的特定XML 元素、元素的属性以及元素和元素的属性之间的关系;其具体格式规范如下所介绍。
1) <Application>元素表示一个应用程序,所有的界面元素都包含在<Application>-- </Application>中;
2) <Form>元素表示一个窗体,它有ID 和Name 属性,其中ID 表示窗体号, Name 表示窗体名称;
3) <Components>元素表示控件的集合,它包含所有的<Component>元素;
4) <Component>元素表示在窗体中出现和使用的控件,它有id、type、name、posX、posY、width、height 和text 属性。其中id表示控件号, type 表示控件的类型,name 表示控件的名称,posX表示控件的x 轴坐标,posY 表示控件的y 轴坐标,width 表示控件的宽度, height 表示控件的高度,text 表示控件中包含的文本。
5) <Events>元素表示事件的集合,它包含所有的<Event>元素;
6) <Event>元素表示事件,它有id、name 和type。其中id 表示事件号,name 表示事件的名称, type 表示事件的类型;
7) <Actions>元素表示动作的集合,它包含所有的<Action>元素;
8) <Action>元素表示动作,它有id 和表示动作的名称。其中id 表示动作号,name 表示动作的名称;
9) <if>元素表示判断语句,它包含<elseif>和<else>元素,它的cond (条件)属性表示一个条件表达式,它的值可以是true 或false。如果cond 的属性的值计算为true,那么封装在<if>或者<elseif>元素中的指令将被执行。如果cond 属性的值计算为false,便访问下一个<elseif>或<else>;
10) <Vars>元素表示变量的集合,它包含所有的<Var>元素;
11) <Var>元素表示定义一个变量,它有type、name 和value属性,其中type 表示变量的类型,name 表示变量名,value 表示变量的值;
12) <Assign>元素表示对一个变量进行赋值,它有name 和value 属性,其中name 表示需要赋值的变量名,value 表示需要给变量赋的值。
4 基于XML的图形用户界面GUI的表达描述
4.1 基于XML的图形用户界面表达描述的特点
可扩展标记语言( eXtensible Markup Language,XML)是由互联网联合组织(World Wide Web Consortium,W3C)在1998 年制定的一种通用语言规范,它是一门新兴的、面向Internet 应用的标记语言。采用基于XML 的界面描述可以将界面元素(如按钮、树、文本框等) 定义为XML 的标签( Tag),可方便地将界面元素的属性(标题、位置、大小等)、事件、方法以及相关信息写入XML 文件中,此XML 文件即定义了相应的用户界面。采用基于XML 用户界面描述是基于以下的考虑[4]:
1) XML 采用树状存储格式,可以实现对界面信息的快速查询和数据提取;
2) XML 具有良好的扩展性和自描述性,适合对界面元素进行描述;
3) XML 的数据内容(DI)与描述数据显示方式(XSL)的信息相分离,可以动态地改变资源文件或结合其他标准,从而改变应用程序的风格和外观;
4) XML 具有语言无关性并有众多的支持工具,可实现跨平台异构应用程序之间的界面信息共享;
5) XML 提供了对多语种的支持,包括UTF27、UTF28、UNICODE、GB2312 (简体中文)、BIG5 (繁体中文)等,容易实现软件的国际化和本地化。
4.2 用户界面的XML描述
由于目前正处于第二代图形用户界面时代,而且大部分商业MIS 系统都是WIMP (Window 窗口、Icon 图标、Menu 菜单和Pointing Device 指点设备)风格的界面,因此将用前面介绍的XML 元素进行界面格式的具体描述。
1) 用户界面的层次结构描述
<?xml version="1.0" encoding="gb2312"?>
<Application><! - - 应用程序- - >
<Form><! - - 窗体- - >
<Vars><! - - 变量列表- - ><Var>
......</Vars>
<Components><! - - 控件列表- - >
<Component>
</Component>
......</Components>
<Actions><! - - 动作列表- - >
<Action></Action>......</Actions></Form>
</Application>
2) 变量的描述
<var type=’Button’ name=’MyButton’ value=’’ />
3) 控件的描述
<Components>
<! - - 按钮控件的定义- - >
<Component id="1001" type="appliction.component.Button" name="Button">
<Button width ="75" height="23" posX ="224" posY="368" name="add" text="添加" >
<! - - 事件的定义- - >
<Events id="100101"type = "click" name= "addNode" />
</Button>
.......
</Component>
.......
</Components>
4) 动作的描述
<Actions>
<Action id="10011" name=’TreeHandle’>
<if cond="cmd=Tree_loadXML" > <! - - 加载XML 文件- - >
<Tree_loadXML var1="load_xml_file" />
<elseif cond="cmd=Tree_AddNode" >
<Tree_AddNode var1="N_Add_PNode"/>
<assign name='cmd' value='Tree_loadXML' /> <assign name ='NodeP' value=' ' />
</Tree_AddNode>
</elseif>
</if>
</Action>
.......
</Actions>
5 应用实例
5.1 系统概述
以某军事项目文件规划系统为例。该系统根据用户需求科学有效地规划配置文件,辅助决策。由于用户的工作及所在部门职能不同,其功能和访问资源也不尽相同。用户需求变动要求界面生成能适应数据库结构变化。因此采用模块化的组件技术和基于XML 配置管理,实现数据层与表示层信息分离,系统在修改功能或数据结构时,只需调整相应功能模块或修改配置文件即可。
5.2 界面自动生成
此军事项目文件规划系统的菜单和按钮响应界面等是按不同的应用需求动态生成。以显示文件规划信息为例,界面动态生成模块需知道界面表示层信息(如动态生成控件名称)和数据层信息(如数据类型、具体值等)。前者存储在XML 文件中,后者由数据库中读取。界面动态生成流程如图1所示。
按用户操作获取显示文件规划信息的主键值,其次从XML 配置文件中读取界面表示层信息(显示项名称、查询表名、主键名等),再用SQL 语句读取数据库中数据层信息(字段类型、长度、是否非空和具体值等)保存在结构类型struColInfo 中,运行时循环生成界面元素,按显示字段类型的不同生成文本框、选择框或日期控件,并填充文件规划信息,最后添加按钮和功能处理函数。当添加数据库字段时,只修改XML 文件即可生成新的界面。
最后产生的界面如图2 所示。
6 小结
通过将桌面软件的架构模式与Web软件开发模式相结合,充分发扬了软件结构应该体现的可描述性、动态性、可扩展性等优秀特征,有效的避开了传统桌面软件开发过程中的许多冗余工作,使得个性和共性之间能够充分的结合。本文提出了基于XML 的图形用户界面的表达描述并应用到具体实例中。由于XML 是一种自解释、自描述的语言,这样基于XML 的用户界面不会依赖其所在的系统。所以它与后台系统之间完全属于无耦合方式,这样,就根本的解决了跨平台的问题。另外,将用户界面的数据结构和显示分离,从而使非常容易、快捷地实现个性化定制成为可能[5]。
参考文献:
[1] Myers B A,Rosson M B.Survey on User Interface Programming[R].New York:ACM Press,1992.
[2] 陈效路,程景云.人机界面工具研究评述[J].计算机辅助工程,1999,(4).
[3] 徐龙杰,万建成.基于模型的用户界面代码自动生成[J].计算机工程与应用,2004,(12).
[4] Natanya,著.XML技术内幕[M].北京:机械工业出版社,2002.
[5] 温薇,曹首军.基于XML 的无耦合图形用户界面GUI的表达描述[J].中国水运,2008,(1).
关键词:XML;桌面软件;GUI;构件
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)27-1962-04
Design and Application of Desktop Software’s GUI Based on XML
LI Chu
(Wuhan Maritime Communication Research Institute,Wuhan 430079,China)
Abstract:The implementation of the traditional desktop software’s GUI (Graphic User Interface) lacks the way of "the page description mechanism" that similar HTML mode, this abuse cause a great deal of emergence that the redundancy work. And the dynamic establish in the runtime of the software GUI also exist a problem. Aim at these problems, this paper provides the expression description and realization of GUI based on XML,in this way the coupling of GUI and software is incompact, thus resolving the problem of the cross-platform and by the root. Moreover, under this kind of way the GUI can carry on with the plug-in system and provide a possibility for the component of the interface.
Key words:XML;desktop software;GUI;component
1 引言
随着信息时代的发展,计算机软件的需求越来越复杂,规模越来越大,而且随着企业的发展和业务的扩展,需求变化是不可避免的。目前,大多数软件系统的界面、功能都是固定编码的,如果需求发生了变化,则必须修改源代码,然后将程序重新编译。需求变化中的很大一部分是类似但又十分琐碎的,然而,软件的开发人员的流动性很大,加上开发文档的缺乏,导致这种需求变化很难得到快速的满足。据统计,在一个应用程序中平均48%的代码用于用户界面,大约50%的执行时间用于执行用户界面程序[1]。随着软件系统规模的不断扩大,开发用户界面所耗费的时间和成本也将成倍增加[2],因此,怎样在较短的时间内设计出符合用户要求的用户界面,提高用户界面的开发效率,无疑是应用程序必须急待解决的一个问题。为此本文提出了一种基于XML 的用户界面实现方法。
2 传统桌面软件图形用户界面实现的优势与弊端
2.1 Web软件的优势
毋庸置疑,Web软件的动态性、易于部署和表现力丰富等等关键特征奠定了这类软件在现代软件应用中的优势,随着应用的积累,Web软件的聚合效应也日渐凸显,许多大型的门户已经开始基于这种聚合效应构建未来的软件服务模式。就软件的发展趋势而言,由于用户的硬件环境越来越强大、成本越来越低,因此,未来在用户的桌面上运行的不应该仅仅是基于HTML的轻量级的应用,但就今天的技术而言,人们还不能像编写HTML那样编写桌面特征的软件,因此,一个关键的问题浮现了,那就是如何架构一种软件开发模式,即可以发挥桌面软件的技术优势,又能够很好的体现Web软件的优势,同时也可以充分发挥Web服务器的威力、技术储备效应。通过将大量的框架性质的代码归结为XML描述,可以使桌面软件开发向着“页面化”的方向前进。
2.2 桌面软件的优势
显然,尽管Web软件有丰富的表现力,但更丰富的用户体验还是桌面软件体现的,因此,在交互性以及业务密集型的应用之中,桌面软件依然占据主流。由于需要本机安装,因此,桌面软件的部署是一个关键问题。
2.3 桌面软件图形用户界面实现的弊端
大量的软件组件积累来自于传统的软件开发技术,当我们面对一个功能有限、扩展性要求不高的软件需求时,传统的技术模式不会有所谓的“劣势”,传统的软件技术特别适合开发那些功能描述相对确定的、作用域不是很宽、大的软件系统,或一个功能局限的局部系统。从许多方面看,大量的功能具体的组件,都是基于传统的技术框架实现的,类似HTML等技术,往往是起到一个对传统技术组件“组织”的作用,从许多方面看,桌面软件的体验,对具体的用户而言还是非常重要的,因此,类似HTML之类的技术不能解决软件的全部问题,许多应用还需要桌面体验很强的软件进行支撑。但当一个系统出现功能扩展方面的需求的时候,问题就出来了,在Web领域,对一个Web应用的各种考虑,大体是一致的标准思考方式,然而对桌面开发而言,却受制于团队的技术积累等多方面因素。是否存在类似于Web方式的软件描述技术来改变现在的大型桌面软件的“僵化”状态呢? [3]
1) 桌面软件缺乏类似于HTML模式的“页面描述机制”,这是传统桌面软件开发最显而易见的弊端,这个弊端导致大量的冗余工作的出现,例如,在MFC开发中,针对不同的CMainFrame框架,我们往往必须对应不同的C 工程以解决CMainFrame的具体的表现形态,对VB6、Delphi以及.NET桌面开发都存在类似的冗余劳动;
2) 传统软件开发模式的第二个弊端是不能为桌面软件提供一个通用的“脚本”引擎以及UI引擎使得软件可以根据不同的情况形成不同的方案。这一点与Web开发也形成鲜明的对比;
3) 传统模式的第三个弊端是,通常情况下,对系统的扩展依赖于软件框架的源代码,尽管有“plug-in”概念,但这类概念的实现依赖于软件的技术积累,Plug-in不是通用的行为,而是“个案”。对大多数软件而言,缺乏编译后的扩展、二次开发功能,许多功能的体验完全取决于开发环节的工作,一旦开发结束,用户级别的扩展、二次开发等难度较大,成为软件适应用户不断增长的需求的关键障碍;
4) 传统桌面软件开发模式的第四个弊端是缺乏与Web技术的结合模式。
2.4 结合Web软件和桌面软件的必要性
现代软件发展的趋势是软件的服务必将替代软件销售。因此,软件发布、获取的模式正在日渐改变,随着桌面软件逐渐吸收Web软件的优点。最终,Web软件与桌面软件之间的差别会变得非常模糊。
桌面软件开发Web化的设想是将支撑功能组合的XML段落自然的写在HTML页面之中,不必进行那些重量级的编码,一样可以获得相同体验的GUI形式,这一点客观上将导致桌面系统构造工程的Web化。同时,开发者获得足够的时间去考虑如何形成功能更加强大的软件组合形式,如同网站聚合Web内容一样,这种变迁一定会发生在桌面开发过程之中。GUI页面化,不仅仅简化了软件的开发环节,同时也给软件部署的环节带来新的变化,那就是开发者可以利用成熟的HTTP协议部署、发布桌面软件功能了,这样考虑的优势是优秀技术的自然结合,而不是一种严酷的淘汰。面对大量的桌面组件的积累,更科学的考虑是如何结合现有的技术充分的利用这些积累。
3 XML元素
由于用户界面主要是由窗口、对话框和各种控件组成,用户操作界面是由事件驱动的, 因此我们不仅定义了界面元素,同时还定义了对应元素的事件和动作,加入了逻辑结构的判断语句。在XML 规范的基础上定义了针对界面元素的所需要的特定XML 元素、元素的属性以及元素和元素的属性之间的关系;其具体格式规范如下所介绍。
1) <Application>元素表示一个应用程序,所有的界面元素都包含在<Application>-- </Application>中;
2) <Form>元素表示一个窗体,它有ID 和Name 属性,其中ID 表示窗体号, Name 表示窗体名称;
3) <Components>元素表示控件的集合,它包含所有的<Component>元素;
4) <Component>元素表示在窗体中出现和使用的控件,它有id、type、name、posX、posY、width、height 和text 属性。其中id表示控件号, type 表示控件的类型,name 表示控件的名称,posX表示控件的x 轴坐标,posY 表示控件的y 轴坐标,width 表示控件的宽度, height 表示控件的高度,text 表示控件中包含的文本。
5) <Events>元素表示事件的集合,它包含所有的<Event>元素;
6) <Event>元素表示事件,它有id、name 和type。其中id 表示事件号,name 表示事件的名称, type 表示事件的类型;
7) <Actions>元素表示动作的集合,它包含所有的<Action>元素;
8) <Action>元素表示动作,它有id 和表示动作的名称。其中id 表示动作号,name 表示动作的名称;
9) <if>元素表示判断语句,它包含<elseif>和<else>元素,它的cond (条件)属性表示一个条件表达式,它的值可以是true 或false。如果cond 的属性的值计算为true,那么封装在<if>或者<elseif>元素中的指令将被执行。如果cond 属性的值计算为false,便访问下一个<elseif>或<else>;
10) <Vars>元素表示变量的集合,它包含所有的<Var>元素;
11) <Var>元素表示定义一个变量,它有type、name 和value属性,其中type 表示变量的类型,name 表示变量名,value 表示变量的值;
12) <Assign>元素表示对一个变量进行赋值,它有name 和value 属性,其中name 表示需要赋值的变量名,value 表示需要给变量赋的值。
4 基于XML的图形用户界面GUI的表达描述
4.1 基于XML的图形用户界面表达描述的特点
可扩展标记语言( eXtensible Markup Language,XML)是由互联网联合组织(World Wide Web Consortium,W3C)在1998 年制定的一种通用语言规范,它是一门新兴的、面向Internet 应用的标记语言。采用基于XML 的界面描述可以将界面元素(如按钮、树、文本框等) 定义为XML 的标签( Tag),可方便地将界面元素的属性(标题、位置、大小等)、事件、方法以及相关信息写入XML 文件中,此XML 文件即定义了相应的用户界面。采用基于XML 用户界面描述是基于以下的考虑[4]:
1) XML 采用树状存储格式,可以实现对界面信息的快速查询和数据提取;
2) XML 具有良好的扩展性和自描述性,适合对界面元素进行描述;
3) XML 的数据内容(DI)与描述数据显示方式(XSL)的信息相分离,可以动态地改变资源文件或结合其他标准,从而改变应用程序的风格和外观;
4) XML 具有语言无关性并有众多的支持工具,可实现跨平台异构应用程序之间的界面信息共享;
5) XML 提供了对多语种的支持,包括UTF27、UTF28、UNICODE、GB2312 (简体中文)、BIG5 (繁体中文)等,容易实现软件的国际化和本地化。
4.2 用户界面的XML描述
由于目前正处于第二代图形用户界面时代,而且大部分商业MIS 系统都是WIMP (Window 窗口、Icon 图标、Menu 菜单和Pointing Device 指点设备)风格的界面,因此将用前面介绍的XML 元素进行界面格式的具体描述。
1) 用户界面的层次结构描述
<?xml version="1.0" encoding="gb2312"?>
<Application><! - - 应用程序- - >
<Form><! - - 窗体- - >
<Vars><! - - 变量列表- - ><Var>
......</Vars>
<Components><! - - 控件列表- - >
<Component>
</Component>
......</Components>
<Actions><! - - 动作列表- - >
<Action></Action>......</Actions></Form>
</Application>
2) 变量的描述
<var type=’Button’ name=’MyButton’ value=’’ />
3) 控件的描述
<Components>
<! - - 按钮控件的定义- - >
<Component id="1001" type="appliction.component.Button" name="Button">
<Button width ="75" height="23" posX ="224" posY="368" name="add" text="添加" >
<! - - 事件的定义- - >
<Events id="100101"type = "click" name= "addNode" />
</Button>
.......
</Component>
.......
</Components>
4) 动作的描述
<Actions>
<Action id="10011" name=’TreeHandle’>
<if cond="cmd=Tree_loadXML" > <! - - 加载XML 文件- - >
<Tree_loadXML var1="load_xml_file" />
<elseif cond="cmd=Tree_AddNode" >
<Tree_AddNode var1="N_Add_PNode"/>
<assign name='cmd' value='Tree_loadXML' /> <assign name ='NodeP' value=' ' />
</Tree_AddNode>
</elseif>
</if>
</Action>
.......
</Actions>
5 应用实例
5.1 系统概述
以某军事项目文件规划系统为例。该系统根据用户需求科学有效地规划配置文件,辅助决策。由于用户的工作及所在部门职能不同,其功能和访问资源也不尽相同。用户需求变动要求界面生成能适应数据库结构变化。因此采用模块化的组件技术和基于XML 配置管理,实现数据层与表示层信息分离,系统在修改功能或数据结构时,只需调整相应功能模块或修改配置文件即可。
5.2 界面自动生成
此军事项目文件规划系统的菜单和按钮响应界面等是按不同的应用需求动态生成。以显示文件规划信息为例,界面动态生成模块需知道界面表示层信息(如动态生成控件名称)和数据层信息(如数据类型、具体值等)。前者存储在XML 文件中,后者由数据库中读取。界面动态生成流程如图1所示。
按用户操作获取显示文件规划信息的主键值,其次从XML 配置文件中读取界面表示层信息(显示项名称、查询表名、主键名等),再用SQL 语句读取数据库中数据层信息(字段类型、长度、是否非空和具体值等)保存在结构类型struColInfo 中,运行时循环生成界面元素,按显示字段类型的不同生成文本框、选择框或日期控件,并填充文件规划信息,最后添加按钮和功能处理函数。当添加数据库字段时,只修改XML 文件即可生成新的界面。
最后产生的界面如图2 所示。
6 小结
通过将桌面软件的架构模式与Web软件开发模式相结合,充分发扬了软件结构应该体现的可描述性、动态性、可扩展性等优秀特征,有效的避开了传统桌面软件开发过程中的许多冗余工作,使得个性和共性之间能够充分的结合。本文提出了基于XML 的图形用户界面的表达描述并应用到具体实例中。由于XML 是一种自解释、自描述的语言,这样基于XML 的用户界面不会依赖其所在的系统。所以它与后台系统之间完全属于无耦合方式,这样,就根本的解决了跨平台的问题。另外,将用户界面的数据结构和显示分离,从而使非常容易、快捷地实现个性化定制成为可能[5]。
参考文献:
[1] Myers B A,Rosson M B.Survey on User Interface Programming[R].New York:ACM Press,1992.
[2] 陈效路,程景云.人机界面工具研究评述[J].计算机辅助工程,1999,(4).
[3] 徐龙杰,万建成.基于模型的用户界面代码自动生成[J].计算机工程与应用,2004,(12).
[4] Natanya,著.XML技术内幕[M].北京:机械工业出版社,2002.
[5] 温薇,曹首军.基于XML 的无耦合图形用户界面GUI的表达描述[J].中国水运,2008,(1).