CN101334728B - 一种基于xml文档描述的界面生成方法和装置 - Google Patents

一种基于xml文档描述的界面生成方法和装置 Download PDF

Info

Publication number
CN101334728B
CN101334728B CN2008101172777A CN200810117277A CN101334728B CN 101334728 B CN101334728 B CN 101334728B CN 2008101172777 A CN2008101172777 A CN 2008101172777A CN 200810117277 A CN200810117277 A CN 200810117277A CN 101334728 B CN101334728 B CN 101334728B
Authority
CN
China
Prior art keywords
interface
document
pattern
node
control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2008101172777A
Other languages
English (en)
Other versions
CN101334728A (zh
Inventor
吕江花
郑雯
李先军
余丹
李重文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN2008101172777A priority Critical patent/CN101334728B/zh
Publication of CN101334728A publication Critical patent/CN101334728A/zh
Application granted granted Critical
Publication of CN101334728B publication Critical patent/CN101334728B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Document Processing Apparatus (AREA)

Abstract

本发明提出了一种基于XML文档描述的界面生成方法和平台。界面生成引擎查找编写好的界面请求映射文件,获取样式描述文档的存储地址,并查找样式描述文档,调用样式文档解析模块生成对应的样式模型树,根据样式模型树的根节点属性设置界面布局,并以深度优先方式遍历,采用反射机制和脚本方式生成样式模型树的叶节点对应界面控件的监听器的事件执行代码,生成界面控件并形成最终界面。采用样式模型缓存界面样式描述文件,减少了界面生成引擎读取文件的次数,提高界面生成引擎的执行效率;分析特定应用背景下的界面的特点,预编写反映通用界面需求的模板文件,通过引用这些模板文件,提高已有工作的可复用性,减少二次开发阶段的工作量。

Description

一种基于XML文档描述的界面生成方法和装置
技术领域
本发明属于计算机应用领域,涉及一种界面生成方法和平台,具体涉及一种基于XML文档描述的界面生成方法和平台。
背景技术
随着计算机技术的不断发展,交互式界面生成技术越来越受到关注。反射技术提供了一种在运行时环境中,程序动态获取和维护类信息、调用类对象的方法的手段。目前的主流编程语言都实现了对反射技术的支持,例如,Java语言中的java.lang.reflect包封装了若干API,通过这些API,可以运行时加载和使用编译期间程序未知的类。由于反射技术具有不需要提前对目标类进行编译的特性,它可以用来实现动态界面控件关联事件。反射技术虽然能够实现复杂的控件事件,但对于处理某些数量众多的界面控件所关联的简单控件事件则会导致大量的编码工作。
Java脚本语言允许在运行时环境中,修改变量的类型及内容,以及改变自身执行逻辑。BSH脚本解释器是用Java写成的小型嵌入式的Java源代码解释器,它使用Java反射API来实时解释执行Java语句和表达式,并可以透明地访问任何Java对象和API,用来在运行时动态执行预定义Java脚本实现控件关联事件,但是其实现逻辑不易理解,且没有成熟的编辑环境,因而仅能依靠开发人员本身来保证脚本书写的正确性,不适合编写界面控件所关联的复杂控件事件。
目前,在一般的交互式软件开发过程中,常用的开发方式是采用硬编码的方式生成交互界面。由于硬编码方法可以实现设计层次非常复杂,控件非常丰富的用户界面,在界面代码编写量不大的情况下,具有较高的应用价值。但在需要根据不同的界面请求创建出不同的界面,而且界面请求数量众多的情况下,采用硬编码方式就会导致开发效率的低下,软件可维护性和可扩展性的降低。另外,硬编码的界面生成方法没有将业务逻辑和界面应用逻辑分离,两者相混杂的结果会导致开发过程的混乱、程序逻辑的不易理解,主要表现在以下两个方面:
(1)系统开发效率不高。由于界面请求数量众多,就需要为每一个界面请求编写其业务逻辑和界面逻辑,另外界面请求的界面控件无论在外观、布局或者操作上呈现很大的相似性,导致很多编码都是简单的重复性劳动。而业务逻辑和界面逻辑紧耦合性,使得系统开发人员不仅要关注业务功能的具体实现,还要考虑交互界面的设计和呈现方式,无法将全部精力集中在业务逻辑的实现上,影响了系统开发的效率。
(2)系统可维护性和可扩展性不高。对于每一个新增的界面请求,都需要重新编写一套界面逻辑,已有工作的复用性很低,并且需要重新编译系统和部署,二次开发效率低下。另外由于界面生成模型和业务模型混合在一起使用,当业务模型发生改变时,界面模型也随之发生相应的改变,工作量大并且容易产生新的错误;同时,随着界面复杂程度的增加,界面模型的复杂度也会加大,实现界面模型也会变得十分困难。造成系统的可维护性和可扩展性都很低。
目前提出的界面生成方法在界面请求数目众多的情况下,定制界面开发的复杂度较大,代码共享度低,尤其无法减少二次开发的工作量,降低了系统的可维护性和可扩展性。
发明内容
本发明的目的是提供一种基于XML文档描述的界面生成方法和平台。根据界面请求,界面生成引擎调用已编辑好的样式描述文档生成界面信息模型,进而生成界面控件,并实现界面控件的关联事件。本方法采用了业务模型和界面模型分离的方法和模块化的设计思路,简化开发步骤,降低编码量,提高开发效率,并且各种界面需求都可以生成外观、风格一致的用户界面,提高了用户体验。
一种基于XML文档描述的界面生成方法,包括如下步骤:
步骤1:样式文档生成模块根据数据资源中已存在界面控件信息,从数据资源中读取界面控件信息,并将资源类型传递给数据驱动模块,数据驱动模块查找数据资源,并将界面控件信息以原始数据资源相应的文件格式返回给样式文档生成模块,样式文档生成模块根据这些界面控件信息和附加的业务数据生成样式描述文档集合,并存储于系统指定目录。
步骤2:编写界面请求映射文件,供界面生成引擎调用,提供界面请求与样式描述文档路径的映射关系。
步骤3:提交的界面请求发送给界面生成引擎,界面生成引擎根据界面请求顺序查找界面请求映射文件,获取样式描述文档的存储地址,并查找样式描述文档;若与界面请求相一致的样式描述文档不存在,则返回相应的提示信息,界面生成流程结束;若该文档存在,则界面生成引擎根据样式描述文档,调用样式文档解析模块生成与样式描述文档对应的样式模型树。
步骤4:界面生成引擎得到样式模型树根节点,根据根节点属性设置界面布局,接着以深度优先方式遍历此样式模型树。
步骤5:如果遍历的当前节点为叶节点,则生成界面控件,设置界面控件的静态属性并依据在样式描述文档中的事件类型在此控件的事件监听器中嵌入事件体;若当前控件对应的事件含有多个操作,且其中又包含嵌套调用,则事件处理采用反射方式执行;反射类定义事件包含的所有操作,通过反射机制生成反射类的实例,利用所调用的实例的方法实现事件体; 反之,则事件处理采用脚本方式执行;脚本中定义事件体,通过调用脚本解析器提供的API执行脚本,实现事件体;若当前节点为中间节点,则继续遍历;直至样式模型树的所有节点遍历完毕。
所述步骤1中的样式描述文档根据应用需求生成,生成时为样式描述文档的集合,用以描述界面控件的布局信息、属性信息以及事件信息。
所述步骤1中的如果数据资源中不存在界面控件信息,样式描述文档直接采用XML编辑器手工编写得到,并存储于系统指定目录。
所述步骤1中的样式描述文档采用统一的描述规范,此描述规范用一个schema文件描述,根节点表示最终生成界面,中间节点表示一个界面控件组,叶节点表示界面包含的控件;其中,根节点是中间节点的有序集合,中间节点是叶节点的有序集合,各个中间节点的相对顺序代表了在最终界面上各组控件的相对顺序,一中间节点的各个叶节点的相对顺序代表了一组控件中的各控件相对顺序;中间节点表示的界面控件组内容既能够来自已有的模板样式描述文档,也能够由一组叶节点构成。
所述步骤2中的界面请求映射文件采用schema描述,其中叶节点代表界面请求标识符和样式描述文档存储路径之间的一对一映射关系。
所述步骤3中的样式文档解析模块解析样式描述文档;若读取的当前节点是中间节点,且其子节点来自已有的模板样式描述文档,则继续读取模板文件内容,将模板文件中叶节点添加入现有样式模型,如果其子节点直接存在于本样式描述文档中,则将此中间节点的子节点写入样式模型;若样式模型树的当前节点为叶节点,则直接将其写入样式模型;直至解析过程结束,得到样式模型树。
一种基于XML文档描述的界面生成平台,包括如下模块:
样式文档生成模块,根据数据资源中已存在界面控件信息,从数据资源中读取界面控件信息,并将资源类型传递给数据驱动模块;并根据返回的原始数据资源相应的文件格式生成样式描述文档的集合,并存储于系统指定目录。
数据驱动模块,根据资源类型查找数据资源,并将界面控件信息以原始数据资源相应的文件格式返回给样式文档生成模块。
界面请求映射文件,供界面生成引擎调用,提供界面请求与样式描述文档路径的映射关系。
界面生成引擎,根据提交的界面请求顺序查找界面请求映射文件,获取样式描述文档的存储地址,并查找样式描述文档;若与界面请求相一致的样式描述文档不存在,则返回相应的提示信息,界面生成流程结束;若该文档存在,则根据样式描述文档,生成与之对应的样式模型树;并得到样式模型树根节点,根据根节点属性设置界面布局,接着以深度优先方式 遍历此样式模型树;如果遍历的当前节点为叶节点,则生成界面控件,设置界面控件的静态属性并依据在样式描述文档中的事件类型在此控件的事件监听器中嵌入事件体;若此控件对应的事件含有多个操作,且其中又包含嵌套调用,则事件处理采用反射方式执行;反射类定义事件包含的所有操作,通过反射机制生成反射类的实例,利用所调用的实例的方法实现事件体;反之,则事件处理采用脚本方式执行;脚本中定义事件体,通过调用脚本解析器提供的API执行脚本,实现事件体;若当前节点为中间节点,则继续遍历;直至样式模型树的所有节点遍历完毕。
样式文档解析模块,生成与样式描述文档对应的样式模型树。
所述样式文档生成模块根据应用需求生成样式描述文档,生成时为样式描述文档的集合,用以描述界面控件的布局信息、属性信息以及事件信息。
所述样式文档生成模块中如果数据资源中不存在界面控件信息,样式描述文档直接采用XML编辑器手工编写得到,并存储于系统指定目录。
所述样式文档生成模块生成的样式描述文档采用统一的描述规范,此描述规范用一个schema文件描述,根节点表示最终生成界面,中间节点表示一个界面控件组,叶节点表示界面包含的控件;其中,根节点是中间节点的有序集合,中间节点是叶节点的有序集合,各个中间节点的相对顺序代表了在最终界面上各组控件的相对顺序,一中间节点的各个叶节点的相对顺序代表了一组控件中的各控件相对顺序;中间节点表示的界面控件组内容既能够来自已有的模板样式描述文档,也能够由一组叶节点构成。
所述界面请求映射文件采用一个schema文件描述,其中叶节点代表界面请求标识符和样式描述文档存储路径之间的一对一映射关系。
所述样式文档解析模块解析样式描述文档;若读取的当前节点是中间节点,且其子节点来自已有的模板样式描述文档,则继续读取模板文件内容,将模板文件中叶节点添加入现有样式模型,如果其子节点直接存在于本样式描述文档中,则将此中间节点的子节点写入样式模型;若样式模型树的当前节点为叶节点,则直接将其写入样式模型;直至解析过程结束,得到样式模型树。
本发明一种基于XML文档描述的界面生成方法和平台,相对于传统的设计方式,本发明的优点在于:
(1)本发明降低了系统开发的复杂性。由于界面设计工作与系统功能实现工作分离,将系统开发人员从繁冗的界面设计工作中解脱出来,更多的精力可以放在系统的设计和功能的实现上。而界面开发人员可以通过对具体业务的深入研究,设计更贴近用户使用习惯和方式的用户界面。
(2)本发明有助于提高系统的可维护性和可扩展性。修改样式描述文档就可以实现对界面 上控件的增加、删除、更新等操作,并且这些改变在下次界面请求到来时就可以呈现出来,不需要重新编译和部署系统。避免了硬编码方式中,所有内容混杂在一起的缺点,对系统的维护和新界面生成需求的满足提供了便利。
(3)本发明有助于提高系统开发过程对已有工作的复用性。根据对系统界面需求的分析和总结,构造一些代表一类通用界面需求的模板界面文档,编写样式描述文档时直接引用这些模板界面文档,从而提高已有工作的复用性。随着系统开发的进行,模板界面文档会逐渐积累,其可复用度提高,进一步提高系统开发效率。
(4)本发明采用反射和脚本技术相结合的方式实现控件关联事件,当控件对应的事件含有多个操作,且其中又包含嵌套调用的情况下采用反射技术,其他情况则采用脚本技术。两种技术分别处理自己优势的事件类型,从而增强了平台应对控件事件的灵活性,并提高开发效率。
附图说明
图1为本发明一种基于XML文档描述的界面生成方法的模块关系图;
图2为本发明一种基于XML文档描述的界面生成方法的流程图;
图3为本发明一种基于XML文档描述的界面生成方法的样式描述文档格式规范schema;
图4为本发明一种基于XML文档描述的界面生成方法的样式描述文档实例;
图5为本发明一种基于XML文档描述的界面生成方法的界面请求映射文件格式规范schema;
图6为本发明一种基于XML文档描述的界面生成方法的界面请求映射文件实例;
图7为本发明一种基于XML文档描述的界面生成方法和平台的界面生成效果图。
图中:1.样式文档生成模块  101.样式描述文档  102.业务数据  2.数据驱动模块3.界面生成引擎  301.最终界面  302.SWT控件集  4.样式文档解析模块401.样式模型树  5.界面请求映射文件  6.数据资源
具体实施方式
下面将结合附图和实施例对本发明作进一步的详细说明。
一种基于XML文档描述的界面生成平台,如图1所示,包括样式文档生成模块1、数据驱动模块2、界面生成引擎3、样式文档解析模块4和界面请求映射文件5。样式文档生成模块1根据需求生成样式描述文档101。数据驱动模块2根据样式文档生成模块1的控制信息在数据资源6中查找对应的数据资源,并将界面控件信息以原始数据资源相应的文件格式返回给样式文档生成模块1。界面生成引擎3根据样式模型树401和界面请求映射文件5并调用SWT控件集302生成最终界面301。样式文档解析模块1生成与样式描述文档101 对应的样式模型树401。界面请求映射文件5提供了界面请求与样式描述文档101路径的映射关系。
界面请求通过界面生成引擎3提交,界面生成引擎3根据界面请求顺序查找编写好的界面请求映射文件5,获取样式描述文档101的存储地址。样式文档生成模块1连接数据驱动模块2,将数据资源6中的界面控件信息传递给数据驱动模块2,数据驱动模块2将界面控件信息以原始数据资源相应的文件格式返回给样式文档生成模块1,样式文档生成模块1根据得到的界面控件信息和附加的业务数据102生成样式描述文档101的集合。界面生成引擎3查找样式描述文档101,调用样式文档解析模块4生成与样式描述文档101对应的样式模型树401。界面生成引擎3得到样式模型树401的根节点,根据根节点属性设置界面布局,接着以深度优先方式遍历此样式模型树401,用反射机制和脚本方式生成样式模型树401的叶节点对应界面控件的监听器的事件执行代码,调用SWT控件集302生成界面控件并形成最终界面301。
一种基于XML文档描述的界面生成方法,结合图2说明其流程,包括如下步骤:
步骤一:样式文档生成模块1根据需求生成样式描述文档101。样式描述文档101有两种生成方式,如果数据资源6中不存在界面控件信息,则使用XML编辑器手工编写;反之则由样式文档生成模块1调用数据驱动模块2实现,数据驱动模块2访问数据资源6得到界面样式信息,界面样式信息在数据资源6中的存储格式依照数据资源类型各有不同,例如,数据库中则按字段存储,文件中则以文本方式存储。通过屏蔽数据来源的差异以及不同数据来源其数据格式的不同,数据驱动模块2为样式文档生成模块1提供一个一致的调用接口。
本实施例中,界面样式信息由数据驱动模块2访问数据资源6得到,资源类型为数据库资源,采用的数据库为Oracle9i,版本号为9.2.0.1.0。样式文档生成模块1将资源类型发送给数据驱动模块2,数据驱动模块2根据此资源类型连接相应的数据资源6。数据驱动模块2连接数据库UIDB,从数据库中查找界面样式信息表UIINFO,得到所需记录构成的结果集,并返回给样式文档生成模块1,后者依照样式描述文档规范schema,遍历该结果集,根据需要添加业务数据102生成样式描述文档101的集合。这些样式描述文档101描述了针对不同界面请求的目标界面的布局信息、控件的属性信息和事件信息,并存储于系统指定目录下。采用界面控件描述规范schema可以使生成的界面控件描述文档具有统一的格式,从而界面生成引擎3可以采用同一个方法生成界面,提高生成效率。
样式描述文档101的规范schema具体内容如图3所示,包括以下内容:界面标示Page,包括布局信息(layout)和组标示(Group);组标示Group,包括组标识符(name)、引用模板文件路径(reuseRef)和控件标示(Control);控件标示Control,包括属性信息(标识符name、控件数据来源类型dsType、控件数据源dataSource、是否可编辑标示editable、 控件类型ctrType)和事件信息(事件类型eventType、事件体eventMethod)。
以样式描述文档101采用样式描述文档集合中的fromDBUI.xml为例进行说明各个属性的具体含义。如图4所示,Page表示一个界面,其布局属性layout值为“grid”,表示采用GridLayout来设置界面上控件的布局。Group表示一个可复用的界面控件组,其属性name值为“upGroup”,即其标识符;属性reuseRef值为“getInstComp.xml”,表示upGroup的内容来自getInstComp.xml文件,这样引用现有的模板文件既能减少界面开发人员的工作量,也可缩短文档长度,使其便于开发人员理解;若属性reuseRef值为空,则表示本Group内容由Control的有序集合构成。Control表示界面控件,其属性name表示本控件的标识符,值为“checkbutton_1”;属性dsType表示控件的数据来源类型,有3种可选项:如果dsType的值为0,表示控件数据值为属性dataSource的值,直接读取dataSource的值即可;如果dsType的值为1,表示控件数据来源于dataSource属性,但需要按照自定义规则解析后才能得到真正的控件数据;如果dsType的值为2,表示控件数据具体由业务数据来决定,属性dataSource的值为业务数据的接口,引擎通过调用此接口,得到真正的控件数据。此处属性daType值为0,说明dataSource属性值即本控件的数据内容;属性editable用来指示控件是否可编辑,此处值为true,说明此控件可编辑;属性ctrType为“checkbutton”,即这个控件类型为复选按钮;属性eventType表示与控件关联的事件类型,有3种选项:如果eventType的值为0,表示本控件无关联事件;如果eventType的值为1,表示以脚本方式执行事件;如果eventType的值为2,表示以反射方式执行事件。此处属性eventType值为1,说明这个控件关联的事件采用脚本方式实现;本实施例中其他的xml文件的相应标示也相同。
在此文档中,Page是Group的有序集合,Group是Control的有序集合,各个Group的相对顺序代表了在最终界面上的各Group的相对顺序,各个Control的相对顺序也代表了在最终界面上的一个Group中Control的相对顺序。
步骤二:编写界面请求映射文件5,供界面生成引擎3调用,提供界面请求与样式描述文档101路径的一对一映射关系;
界面请求映射文件5的schema如图5所示,包括如下内容:根标示Root,包括映射标示(Mapping);映射标示Mapping,包括界面请求(UIID)和样式描述文档101的路径(Path)。
下面根据界面请求映射文件5的schema编写示例界面请求映射文件mapping.xml,如图6所示,叶节点Mapping表示一个界面请求-样式描述文档101的映射关系,如果到来的界面请求UIID为字符串“1”,则对应的样式描述文档101的路径Path为fromDBUI.xml,这个文档路径会返回给界面生成引擎3。通过这个文档的映射作用,将由 引擎无法解析的界面请求信息得到其能够解析的路径信息。
步骤三:界面请求发送给界面生成引擎3,顺序查找界面请求映射配置文件5,根据得到的路径查找对应的样式描述文档101并生成与之对应的样式模型树401。
本实施例中,界面请求为字符串“1”,当界面生成引擎3得到此界面请求后,遍历界面请求映射文件mapping.xml获取样式描述文档101的存储路径fromDBUI.xml。若在系统指定目录下查找fromDBUI.xml不成功,则返回相应的提示信息,界面生成流程结束;若查找成功,则界面生成引擎3调用样式文档解析模块4提供的getParser()接口,得到解析器实例,解析器实例调用JDOM API,以样式描述文档101绝对路径作为参数传入JDOM API中的parse(String path)方法,解析得到界面信息模型。解析过程中,若Group的reuseRef属性值不为空,则继续读取模板文件内容,将其内容添加入现有样式模型树401。直至解析流程结束,样式模型树401生成完毕。
本实施例中生成的样式模型树401的根节点为ControlModelPage类,包含界面的布局信息属性以及一个列表ListGroup,是中间节点ControlModelGroup类的有序集合。ControlModelGroup类包含组控件信息以及一个列表ListControler,是叶节点ControlModel类的有序集合。ControlModel类对应一个具体的控件,包含此控件的所有静态属性和事件信息;样式模型树提供接口getControlModelPage(),根据这个接口得到此模型树的根节点ControlModelPage类。
步骤四:界面生成引擎3得到样式模型树401的根节点,根据根节点属性设置界面布局,接着以深度优先方式遍历此样式模型树401;此样式模型以树结构形态存储于内存中,起到数据缓存的作用,之后的操作完全在内存中进行,这种方式能够大大减少界面生成过程中界面生成引擎3与样式描述文档101的IO交互次数,提高界面生成效率。
本实施例中,ControlModelPage类中布局属性layout值为“grid”,表示采用SWT提供的GridLayout来设置界面上控件的布局。
步骤五:界面生成引擎3遍历此样式模型树401,如果遍历的当前节点为叶节点,调用SWT控件集302中对应控件类生成界面控件,设置界面控件的静态属性,并依据在样式描述文档101中的事件类型在此控件的事件监听器中嵌入事件体;
若当前控件对应的事件含有操作较少,调用简单,则事件处理采用脚本方式执行。以本实施例中名为combo_1的界面控件生成过程说明一个界面控件的生成流程:首先根据其ctrType属性为“combo”,选取SWT控件集中相应org.eclipse.swt.widgets.Combo类来模拟生成此控件,具体执行代码org.eclipse.swt.widgets.Combo cb=newCombo(group,SWT.BORDER),构造了一个下拉框控件。接下来为此下拉框设加入数据,由于其dsType属性为″1″,则读取其dataSource属性值“放电:1;充电:0”,并循环执行 combo.add(key),combo.setData(key,value)将数据填入。接下来为此下拉框的监听器添加事件执行代码,由于其eventType属性为″1″,因此采用脚本方式,eventMethod属性为″script2.txt″,即执行脚本存放于script2.txt文件中,接着调用BSH脚本解析器提供的Interpreter类的source(String)接口执行,具体代码为newIntepreter().source(″script2.txt″),将其放入org.eclipse.swt.widgets.Combo类的实例cb的监听器中。当界面生成完毕后,用户操作激发本下拉框控件事件体中脚本文件script2.txt的执行。
若当前控件对应的事件含有多个操作,且其中又包含嵌套调用,则事件处理采用反射方式执行。以本实施例中名为button_1的界面控件生成过程说明一个界面控件的生成流程:首先根据其ctrType属性为“button”,选取SWT控件集中相应org.eclipse.swt.widgets.Button类来模拟生成此控件,具体执行代码org.eclipse.swt.widgets.Button bt=newButton(group,SWT.NONE),构造了一个按钮控件。接下来为此按钮加入数据,由于其dsType属性为″0″,则读取其dataSource属性值“选择时间参数”,调用bt.setText(dataSource)方法将数据填入。接下来为此按钮的监听器添加事件执行代码,由于其eventType属性为″2″,因此采用反射方式,eventMethod属性为″its.prepare.atomedit.properties.control.ParamDialog″,那么接着利用Java反射机制的类库java.lang.reflect包得到反射类实例,接着将调用其执行方法代码放入org.eclipse.swt.widgets.Button类的实例bt的监听器中。当界面生成完毕后,用户操作激发本按钮控件事件体中反射类its.prepare.atomedit.properties.control.ParamDialog实例的执行方法createSubDialog(),此方法的执行会打开一个时间参数选择子窗口。
若当前节点为中间节点,则继续遍历;直至样式模型树401的所有节点遍历完毕。界面生成完毕,本方法结束,最终界面301呈现。
图7为最终效果图。如图7所示,界面的上部为引用已有模板生成的控件组,调用模版getInstComp.xml生成;中间部分是依据样式描述文档101生成的控件组,其中的下拉框采用脚本方式生成,文本为“选择时间参数”的按钮采用Java反射机制的类库java.lang.reflect包生成;下部是引用已有模板生成的控件组,调用模版getResultComp.xml生成。两个模板文件的使用,使得该界面的样式描述文档101的长度缩短了将近2/3,在增加已有工作的复用性同时,也减少了界面开发人员的工作量。
在本实施例中,采用样式模型缓存样式描述文件101,减少了界面生成引擎3读取文件的次数,提高界面生成引擎3的执行效率;分析特定应用背景下的界面的特点,预编写反映通用界面需求的模板文件,通过引用这些模板文件,提高已有工作的可复用性,减少二次开发阶段的工作量。
综上所述,本发明是界面请求众多的情况下,生成相应界面的一种有效方案,通过本发明,简化了用户界面的开发量和开发难度,可以应用到管理信息系统(MIS)等具有类似界面需求的应用中去。

Claims (12)

1.一种基于XML文档描述的界面生成方法,其特征在于,包括如下步骤: 
步骤一:样式文档生成模块根据数据资源中已存在界面控件信息,从数据资源中读取界面控件信息,并将资源类型传递给数据驱动模块,数据驱动模块查找数据资源,并将界面控件信息以原始数据资源相应的文件格式返回给样式文档生成模块,样式文档生成模块根据这些界面控件信息和附加的业务数据生成样式描述文档集合,并存储于系统指定目录; 
步骤二:编写界面请求映射文件,供界面生成引擎调用,提供界面请求与样式描述文档路径的映射关系; 
步骤三:提交的界面请求发送给界面生成引擎,界面生成引擎根据界面请求顺序查找界面请求映射文件,获取样式描述文档的存储地址,并查找样式描述文档;若与界面请求相一致的样式描述文档不存在,则返回相应的提示信息,界面生成流程结束;若该文档存在,则界面生成引擎根据样式描述文档,调用样式文档解析模块生成与样式描述文档对应的样式模型树; 
步骤四:界面生成引擎得到样式模型树根节点,根据根节点属性设置界面布局,接着以深度优先方式遍历此样式模型树; 
步骤五:如果遍历的当前节点为叶节点,则生成界面控件,设置界面控件的静态属性并依据在样式描述文档中的事件类型在此控件的事件监听器中嵌入事件体;若当前控件对应的事件含有多个操作,且其中又包含嵌套调用,则事件处理采用反射方式执行;反射类定义事件包含的所有操作,通过反射机制生成反射类的实例,利用所调用的实例的方法实现事件体;反之,则事件处理采用脚本方式执行;脚本中定义事件体,通过调用脚本解析器提供的API执行脚本,实现事件体;若当前节点为中间节点,则继续遍历;直至样式模型树的所有节点遍历完毕。 
2.根据权利要求1所述一种基于XML文档描述的界面生成方法,其特征在于:所述步骤一中的样式描述文档根据应用需求生成,生成时为样式描述文档的集合,用以描述界面控件的布局信息、属性信息以及事件信息。 
3.根据权利要求1所述一种基于XML文档描述的界面生成方法,其特征在于:所述步骤一中的如果数据资源中不存在界面控件信息,样式描述文档直接采用XML编辑器手工编写得到,并存储于系统指定目录。 
4.根据权利要求1所述一种基于XML文档描述的界面生成方法,其特征在于:所述步骤一中的样式描述文档采用统一的描述规范,此描述规范用一个schema文件描述,根节点表示最终生成界面,中间节点表示一个界面控件组,叶节点表示界面包含的控件;其中,根节点是中间节点的有序集合,中间节点是叶节点的有序集合,各个中间节点的相对顺序代表了在最终界面上各组控件的相对顺序,一中间节点的各个叶节点的相对顺序代表了一组控件中的各控件相对顺序;中间节点表示的界面控件组内容既能够来自已有的模板样式描述文档,也能够由一组叶节点构成。 
5.根据权利要求1所述一种基于XML文档描述的界面生成方法,其特征在于:所述步骤二中的界面请求映射文件采用一个schema文件描述,其中叶节点代表界面请求标识符和样式描述文档存储路径之间的一对一映射关系。 
6.根据权利要求1所述一种基于XML文档描述的界面生成方法,其特征在于:所述步骤三中的样式文档解析模块解析样式描述文档;若读取的当前节点是中间节点,且其子节点来自已有的模板样式描述文档,则继续读取模板文件内容,将模板文件中叶节点添加入现有样式模型,如果其子节点直接存在于本样式描述文档中,则将此中间节点的子节点写入样式模型;若样式模型树的当前节点为叶节点,则直接将其写入样式模型;直至解析过程结束,得到样式模型树。 
7.一种基于XML文档描述的界面生成装置,其特征在于,包括如下模块:
样式文档生成模块,根据数据资源中已存在界面控件信息,从数据资源中读取界面控件信息,并将资源类型传递给数据驱动模块;并根据数据驱动模块返回的原始数据资源相应的文件格式生成样式描述文档的集合,并存储于系统指定目录;所述的数据驱动模块根据资源类型查找数据资源,并将界面控件信息以原始数据资源相应的文件格式返回给样式文档生成模块;
界面请求映射文件,供界面生成引擎调用,提供界面请求与样式描述文档路径的映射关系;
界面生成引擎,根据提交的界面请求顺序查找界面请求映射文件,获取样式描述文档的存储地址,并查找样式描述文档;若与界面请求相一致的样式描述文档不存在,则返回相应的提示信息,界面生成流程结束;若该文档存在,则根据样式描述文档,调用样式文档解析模块,生成与样式描述文档对应的样式模型树;并得到样式模型树根节点,根据根节点属性设置界面布局,接着以深度优先方式遍历此样式模型树;如果遍历的当前节点为叶节点,则生成界面控件,设置界面控件的静态属性并依据在样式描述文档中的事件类型在此控件的事件监听器中嵌入事件体;若本控件对应的事件含有多个操作,且其中又包含嵌套调用,则事件处理采用反射方式执行;反射类定义事件包含的所有操作,通过反射机制生成反射类的实例,利用所调用的实例的方法实现事件体;反之,则事件处理采用脚本方式执行;脚本中定义事件体,通过调用脚本解析器提供的API执行脚本,实现事件体;若当前节点为中间节点,则继续遍历;直至样式模型树的所有节点遍历完毕。 
8.根据权利要求7所述一种基于XML文档描述的界面生成装置,其特征在于:所述样式文档生成模块根据应用需求生成样式描述文档,生成时为样式描述文档的集合,用以描述界面控件的布局信息、属性信息以及事件信息。 
9.根据权利要求7所述一种基于XML文档描述的界面生成装置,其特征在于:所述样式文档生成模块中如果数据资源中不存在界面控件信息,样式描述文档直接采用XML编辑器手工编写得到,并存储于系统指定目录。
10.根据权利要求7所述一种基于XML文档描述的界面生成装置,其特征在于:所述样式文档生成模块生成的样式描述文档采用统一的描述规范,此描述规范用一个schema文件描述,根节点表示最终生成界面,中间节点表示一个界面控件组,叶节点表示界面包含的控件;其中,根节点是中间节点的有序集合,中间节点是叶节点的有序集合,各个中间节点的相对顺序代表了在最终界面上各组控件的相对顺序,一中间节点的各个叶节点的相对顺序代表了一组控件中的各控件相对顺序;中间节点表示的界面控件组内容既能够来自已有的模板样式描述文档,也能够由一组叶节点构成。 
11.根据权利要求7所述一种基于XML文档描述的界面生成装置,其特征在于:所述界面请求映射文件采用一个schema文件描述,其中叶节点代表界面请求标识符和样式描述文档存储路径之间的一对一映射关系。 
12.根据权利要求7所述一种基于XML文档描述的界面生成装置,其特征在于:所述样式文档解析模块解析样式描述文档;若读取的当前节点是中间节点,且其子节点来自已有的模板样式描述文档,则继续读取模板文件内容,将模板文件中叶节点添加入现有样式模型,如果其子节点直接存在于本样式描述文档中,则将此中间节点的子节点写入样式模型;若样式模型树的当前节点为叶节点,则直接将其写入样式模型;直至解析过程结束,得到样式模型树。 
CN2008101172777A 2008-07-28 2008-07-28 一种基于xml文档描述的界面生成方法和装置 Expired - Fee Related CN101334728B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101172777A CN101334728B (zh) 2008-07-28 2008-07-28 一种基于xml文档描述的界面生成方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101172777A CN101334728B (zh) 2008-07-28 2008-07-28 一种基于xml文档描述的界面生成方法和装置

Publications (2)

Publication Number Publication Date
CN101334728A CN101334728A (zh) 2008-12-31
CN101334728B true CN101334728B (zh) 2011-10-19

Family

ID=40197344

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101172777A Expired - Fee Related CN101334728B (zh) 2008-07-28 2008-07-28 一种基于xml文档描述的界面生成方法和装置

Country Status (1)

Country Link
CN (1) CN101334728B (zh)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102667696B (zh) * 2009-11-23 2016-04-13 惠普发展公司,有限责任合伙企业 用于用户界面中的对象标识的系统与方法
CN102236544B (zh) * 2010-04-21 2014-06-18 腾讯科技(深圳)有限公司 一种皮肤设计方法及装置
CN101853167A (zh) * 2010-05-28 2010-10-06 北京中恒博瑞数字电力科技有限公司 基于soa、rcp的动态对象编辑的方法
CN101887389A (zh) * 2010-06-03 2010-11-17 南京班墨自动化技术有限公司 一种基于二元结构的脚本生成方法
CN101887370B (zh) * 2010-07-23 2013-08-21 北京数码大方科技股份有限公司 创建系统用户界面的方法及装置
CN102231104B (zh) * 2010-07-29 2013-10-23 艾默生网络能源有限公司 一种基于描述的界面生成装置及生成方法
CN101980155A (zh) * 2010-11-04 2011-02-23 青岛海信电器股份有限公司 电视机用户界面的实现方法和系统、电视机
CN102479073B (zh) * 2010-11-22 2014-07-02 卓望数码技术(深圳)有限公司 一种用户应用界面的生成方法
CN102012821A (zh) * 2010-12-09 2011-04-13 向心力信息技术股份有限公司 一种二次开发适配方法
CN102830957A (zh) * 2011-06-15 2012-12-19 康佳集团股份有限公司 一种生成界面代码和电视机应用软件的方法
CN102591665A (zh) * 2011-12-31 2012-07-18 深圳联友科技有限公司 一种自定义快速生成页面的方法和系统
CN102622232A (zh) * 2012-03-06 2012-08-01 惠州华阳通用电子有限公司 一种嵌入式设备用户界面实现方法
CN102722365A (zh) * 2012-05-10 2012-10-10 山东电力集团公司 一种嵌入式scada系统的图形界面生成方法
CN102880492B (zh) * 2012-09-24 2015-09-02 广东华大集成技术有限责任公司 一种基于as的xml脚本解析器及其方法
CN103049271B (zh) * 2012-12-27 2016-01-27 微梦创科网络科技(中国)有限公司 自动生成api接口的描述文档的方法和装置
CN104123127A (zh) * 2013-04-27 2014-10-29 北京宇和永泰网络科技有限公司 手机软件开发通用平台
CN103326892B (zh) * 2013-05-14 2018-10-16 百度在线网络技术(北京)有限公司 Web接口的操作方法及装置
CN104252356B (zh) * 2013-06-28 2018-04-06 腾讯科技(深圳)有限公司 生成界面的方法和系统
US9977661B2 (en) 2013-06-28 2018-05-22 Tencent Technology (Shenzhen) Company Limited Method and system for generating a user interface
CN103366059B (zh) * 2013-07-08 2016-05-04 国电南瑞科技股份有限公司 一种变电站仿真培训系统二次设备模型数据描述方法
CN103412743B (zh) * 2013-07-12 2016-06-22 北明软件股份有限公司 一种基于xml的自动调用业务规则的方法
CN103488479A (zh) * 2013-09-04 2014-01-01 用友软件股份有限公司 客户端界面动态生成装置和客户端界面动态生成方法
CN104572430B (zh) * 2013-10-24 2018-04-27 腾讯科技(深圳)有限公司 一种终端应用界面的测试方法、装置和系统
CN103823682B (zh) * 2014-02-26 2017-08-08 广州视源电子科技股份有限公司 一种动态ui控件生成方法以及装置
CN105022615B (zh) * 2014-04-21 2018-09-11 大唐软件技术股份有限公司 一种界面的生成方法和系统
CN105320504B (zh) * 2014-06-25 2018-08-17 成都普中软件有限公司 一种基于软件元视图构造软件视图的可视软件建模方法
CN104317907A (zh) * 2014-10-27 2015-01-28 中国神华能源股份有限公司 对用于评估铁路运输能力的数据进行处理的方法
CN104461513B (zh) * 2014-11-21 2018-01-09 山东航天信息有限公司 一种生成表单界面的方法及装置
CN104462426B (zh) * 2014-12-12 2018-09-18 北京国双科技有限公司 查询互联网信息服务的站点信息的方法及装置
CN104581344B (zh) * 2014-12-29 2019-07-23 深圳创维数字技术有限公司 一种菜单界面显示方法及数字电视接收终端
CN105988792A (zh) * 2015-02-11 2016-10-05 国核(北京)科学技术研究院有限公司 核电软件开发自动化系统和方法
CN105068815B (zh) * 2015-08-24 2018-10-19 用友网络科技股份有限公司 页面编辑器交互装置和方法
CN105468366A (zh) * 2015-11-21 2016-04-06 成都飞机工业(集团)有限责任公司 一种基于Qt地面站的智能界面
CN106933552B (zh) * 2015-12-30 2020-11-03 中国移动通信集团公司 一种数据处理方法及前端代码生成装置
CN105843608B (zh) * 2016-03-16 2019-04-26 中山大学 一种基于聚类的app用户界面设计模式推荐方法及系统
CN106250116B (zh) * 2016-07-21 2019-08-23 武汉精伦电气有限公司 一种软件通用框架代码生成方法及系统
CN107766042A (zh) * 2016-08-23 2018-03-06 南京中兴软件有限责任公司 一种基于csar的模型文件的可视化设计方法及装置
CN108170409B (zh) * 2016-12-07 2023-06-23 北大医疗信息技术有限公司 Web前端控件的开发方法和系统
CN106815022A (zh) * 2017-01-04 2017-06-09 中国石油大学(北京) 一种基于树型数据结构的通用ui界面生成方法及装置
CN108959294B (zh) * 2017-05-19 2021-07-13 北京京东尚科信息技术有限公司 一种访问搜索引擎的方法和装置
CN107340946A (zh) * 2017-06-16 2017-11-10 贵州广思信息网络有限公司 一种大文档下统一管理内容控件的方法
CN107358943B (zh) * 2017-07-03 2020-02-07 武汉理工大学 一种网络虚拟木管乐器
CN109710506A (zh) * 2017-10-25 2019-05-03 卓望数码技术(深圳)有限公司 一种基于树遍历的终端app覆盖性测试方法和装置
CN108415702B (zh) * 2018-01-22 2021-05-25 北京奇艺世纪科技有限公司 一种移动终端应用界面动态渲染方法和装置
CN108241501A (zh) * 2018-01-26 2018-07-03 长春玖佰软件技术有限公司 一种移动客户端软件实现及更新方法
CN108491205B (zh) * 2018-03-22 2021-02-09 北京焦点新干线信息技术有限公司 一种基于组件树的前端网页开发方法及系统
CN109117125B (zh) * 2018-07-20 2021-05-25 北京航空航天大学 数字飞行器多平台多运行模式源代码的人工智能书写方法
CN110096269A (zh) * 2019-04-18 2019-08-06 北京奇艺世纪科技有限公司 一种基于皮肤缓存机制的界面渲染方法、装置及电子设备
CN110201392B (zh) * 2019-06-06 2023-09-01 腾讯科技(深圳)有限公司 用户界面生成方法、装置和终端
CN112947954A (zh) * 2019-12-11 2021-06-11 北京中关村科金技术有限公司 一种界面更新方法、装置和存储介质
CN111142871B (zh) * 2019-12-24 2023-06-06 杭州安恒信息技术股份有限公司 一种前端页面开发系统、方法、设备、介质
CN111190519A (zh) * 2020-01-02 2020-05-22 广州虎牙科技有限公司 一种文件及其控件的处理方法、装置、设备和存储介质
CN113157355A (zh) * 2020-01-07 2021-07-23 东莞新能安科技有限公司 自定义上位机用户界面的方法、电子装置及存储介质
CN111309293B (zh) * 2020-02-27 2023-09-05 北京奇艺世纪科技有限公司 一种界面框架构建方法、装置、电子设备及存储介质
CN111736932A (zh) * 2020-05-06 2020-10-02 广东金赋科技股份有限公司 一种政务自助终端数据传输方法、装置及存储介质
CN111964724B (zh) * 2020-08-18 2022-10-28 中电科思仪科技股份有限公司 一种基于面向仪器的测试描述模型的描述方法及装置
CN111966393A (zh) * 2020-08-27 2020-11-20 中电科仪器仪表有限公司 一种可配置界面自定义生成方法及系统
CN112256346A (zh) * 2020-10-14 2021-01-22 北京字跳网络技术有限公司 控件显示方法、装置和电子设备
CN112578984B (zh) * 2020-12-14 2022-11-29 成都紫瑞青云航空宇航技术有限公司 一种合成视景系统人机交互事件的处理方法和系统
CN112860257A (zh) * 2021-03-09 2021-05-28 浙江鸿城科技有限责任公司 一种基于静态界面可视化编程的方法
CN114911466B (zh) * 2022-05-24 2023-03-21 中国人民解放军国防科技大学 一种采集端数据质量控制系统
CN115495079B (zh) * 2022-09-30 2024-04-30 南京芯传汇电子科技有限公司 一种基于PSD文件格式的Qt界面动态生成方法及其系统
CN118484191B (zh) * 2024-07-16 2024-09-24 西安羚控电子科技有限公司 一种图形用户界面生成方法及装置

Also Published As

Publication number Publication date
CN101334728A (zh) 2008-12-31

Similar Documents

Publication Publication Date Title
CN101334728B (zh) 一种基于xml文档描述的界面生成方法和装置
CN110825362B (zh) 低代码应用软件开发系统及方法
de Lara et al. Model-driven engineering with domain-specific meta-modelling languages
CN103164249B (zh) 用于脚本语言编译器的扩展机制
US11372630B2 (en) Efficient immutable syntax representation with incremental change
JP5354602B2 (ja) プロデューサグラフ指向のプログラミング及び実行
US20090254881A1 (en) Code generation techniques for administrative tasks
CN112463149B (zh) 一种面向软件定义卫星的可复用代码库构建方法与装置
Acar et al. A graph model of data and workflow provenance
Bucchiarone et al. A model-driven approach towards automatic migration to microservices
CN100517222C (zh) 支持转换引擎与映射规则相分离的模型转换装置及其方法
CN112764743B (zh) 一种基于数据模型驱动自动生成软件的方法
Schwägerl Version control and product lines in model-driven software engineering
US12038940B2 (en) Architecture for data map converters
Goldschmidt View-based textual modelling
Polo et al. An MDA‐based approach for database re‐engineering
Kastens et al. Generating Software from Specifications
Solmi Whole platform.
CN101055521B (zh) 映射规则的可视化生成方法及系统
US10530838B1 (en) System oriented programming and implementation infrastructure, system and method
CN114020358A (zh) 基于iOS应用的界面渲染方法及装置
CN112214215B (zh) 一种面向软件定义卫星的软件快速开发系统与方法
EP4336348A1 (en) Iterative and interactive method for code conversion
Akehurst et al. Tooling metamodels with patterns and OCL
Ueno et al. A Type Safe Access to Key-value Stores from Functional Languages

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Lv Jianghua

Inventor after: Zheng Wen

Inventor after: Li Xianjun

Inventor after: Yu Dan

Inventor after: Li Zhongwen

Inventor before: Li Xianjun

Inventor before: Zheng Wen

Inventor before: Yu Dan

Inventor before: Li Zhongwen

Inventor before: Ma Shilong

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: LI XIANJUN ZHENG WEN YU DAN LI ZHONGWEN MA SHILONG TO: LV JIANGHUA ZHENG WEN LI XIANJUN YU DAN LI ZHONGWEN

C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111019

Termination date: 20130728