Java实现数据驱动的命令用户界面

发表于:2007-06-22来源:作者:点击数: 标签:
下一页 1 2 摘 要: 本文提出并实现了一种数据驱动的命令界面生成方案, 以一致的方式生成所有命令的界面元素,能方便灵活地适应命令的修改变化。 关键词: 数据驱动;命令; Java 在典型的企业应用软件中,应用一般会提供一组命令作为用户与应用程序之间的接口

下一页 1 2 

   摘 要: 本文提出并实现了一种数据驱动的命令界面生成方案, 以一致的方式生成所有命令的界面元素,能方便灵活地适应命令的修改变化。

  关键词: 数据驱动;命令; Java

  在典型的企业应用软件中,应用一般会提供一组命令作为用户与应用程序之间的接口。随着企业需求的变化和技术的发展,要求对原来的命令需要做出调整,比如增加命令,修改命令参数等,这可能需要修改应用程序,以生成调整后的命令界面。本文提出并实现了一种数据驱动的命令界面生成方案,该方案以一致的方式来处理所有命令,最大限度地保证命令的增加、删除、修改,不需要或很少需要修改应用程序。

  1 数据驱动方案的提出和思想

  通常情况下,应用程序根据自己的业务逻辑进行界面设计, 对于一条具体的命令,开发人员需要编写界面生成代码以生成该命令的界面元素,如菜单项、参数输入对话框等.在应用的命令数量不大时,这是比较直接的做法.但当应用包含有成百上千条命令时,还要逐一地为每条命令生成界面元素,无疑是件繁琐的事情。此外,随着应用的升级,可能要求对原有的命令系统做出修改,这又要求修改代码以生成修改后的命令界面元素。我们希望能有一种实现方法可以方便灵活生成命令的界面元素并适应命令将来调整的需要,而对我们程序的影响最小。

  考察应用的所有命令可发现,虽然各命令的功能意义不同,但命令组成形式却有很大的相似性,都包括命令标识和零个或多个参数,而且为每条命令编写的界面生成代码也非常近似。因此我们可以以一种统一的方法来处理所有命令。数据驱动的命令界面生成方案的主要思想正基于此,以某种方式对应用的所有命令统一进行描述,通过描述数据来驱动所有命令的界面元素生成。本文使用数据库表完成对所有命令的原始描述。

  参数的性质是通过其数据类型来反映的,只需根据实际应用,定义本应用中参数可能的各种数据类型.而数据类型的种类总是有限的,通过对每一种数据类型给出其处理办法,就可以实现对为数众多的参数的处理转为对有限种的数据类型的处理。

  2 命令的数据库表描述

  以数据库表中对命令的描述为出发点, 以后命令的增加、删除、修改及命令参数的变动只需修改描述表中的相关项.命令一般包括命令标识和参数,但为更有效地对命令进行组织管理和适应更复杂应用的需要,对命令的描述通过定义命令类型描述表、命令描述表、命令参数描述表、枚举描述表四级结构来完成.命令类型字段和命令字段联合确定一条唯一的命令,提供直观的名字字符和数值编码两种方式以适应不同需要。参数表中定义了参数类型和取值要求,枚举表是为特殊的参数类型设置的,其取值是在一些选择项中选取。各级表除了给出本表定义对象的基本属性外,如果有下级元素,还给出了下级元素的个数及其在下级表中的位置,通过这种方式将一条命令的各构成部分关联起来.下面给出这种表结构的一个简单示例。

  · 命令类型描述表:描述命令的分类.
 
唯一标志 编号 名字 命令的个数 命令描述位置
ct_00010 248 系统管理类 2 c_00010

  表1 命令类型描述

  · 命令描述表: 描述具体命令

唯一标志 编号 名字 参数的个数 参数描述位置
c_00010 1 系统联络请求 1 p_00010
c_00011 2 系统复位 0  
       表2 命令描述表

  · 命令参数描述表: 描述各命令的参数.参数的值是在用户调用命令时设定的,事先无法确定.我们只是对参数的性质做出一些约束。数据类型的种类视具体应用而定,应用可以为每种类型指定一数值编号,在表中填写参数数据类型的编号值。参数的最大值最小值给出了参数的取值范围或长度限制。

唯一标志 名字 数据类型 最大值 最小值 枚举的个数 枚举描述位置
p_00010 是否要求响应 9     2 e_00010
p_00020 源文件名 13 32   0  
   表3 命令参数描述表

  · 枚举描述表:给出枚举类型参数的枚举项

唯一标志 枚举名 枚举值
e_00010 要求响应 1
e_00011 不要求响应 0
       表4:枚举描述表

  以上表1只表4的内容仅提供一般性的示范,实际应用可根据业务逻辑的需要定义自己的命令内容,命令的规模不受限制.

原文转自:http://www.ltesting.net