【 tulaoshi.com - 编程语言 】
摘 要: 本文提出并实现了一种数据驱动的命令界面生成方案, 以一致的方式生成所有命令的界面元素,能方便灵活地适应命令的修改变化。
要害词: 数据驱动;命令; Java
!-- frame contents -- !-- /frame contents --
在典型的企业应用软件中,应用一般会提供一组命令作为用户与应用程序之间的接口。随着企业需求的变化和技术的发展,要求对原来的命令需要做出调整,比如增加命令,修改命令参数等,这可能需要修改应用程序,以生成调整后的命令界面。本文提出并实现了一种数据驱动的命令界面生成方案,该方案以一致的方式来处理所有命令,最大限度地保证命令的增加、删除、修改,不需要或很少需要修改应用程序。
1 数据驱动方案的提出和思想 通常情况下,应用程序根据自己的业务逻辑进行界面设计, 对于一条具体的命令,开发人员需要编写界面生成代码以生成该命令的界面元素,如菜单项、参数输入对话框等.在应用的命令数量不大时,这是比较直接的做法.但当应用包含有成百上千条命令时,还要逐一地为每条命令生成界面元素,无疑是件繁琐的事情。此外,随着应用的升级,可能要求对原有的命令系统做出修改,这又要求修改代码以生成修改后的命令界面元素。我们希望能有一种实现方法可以方便灵活生成命令的界面元素并适应命令将来调整的需要,而对我们程序的影响最小。
考察应用的所有命令可发现,虽然各命令的功能意义不同,但命令组成形式却有很大的相似性,都包括命令标识和零个或多个参数,而且为每条命令编写的界面生成代码也非常近似。因此我们可以以一种统一的方法来处理所有命令。数据驱动的命令界面生成方案的主要思想正基于此,以某种方式对应用的所有命令统一进行描述,通过描述数据来驱动所有命令的界面元素生成。本文使用数据库表完成对所有命令的原始描述。
参数的性质是通过其数据类型来反映的,只需根据实际应用,定义本应用中参数可能的各种数据类型.而数据类型的种类总是有限的,通过对每一种数据类型给出其处理办法,就可以实现对为数众多的参数的处理转为对有限种的数据类型的处理。
2 命令的数据库表描述 以数据库表中对命令的描述为出发点, 以后命令的增加、删除、修改及命令参数的变动只需修改描述表中的相关项.命令一般包括命令标识和参数,但为更有效地对命令进行组织治理和适应更复杂应用的需要,对命令的描述通过定义命令类型描述表、命令描述表、命令参数描述表、枚举描述表四级结构来完成.命令类型字段和命令字段联合确定一条唯一的命令,提供直观的名字字符和数值编码两种方式以适应不同需要。参数表中定义了参数类型和取值要求,枚举表是为非凡的参数类型设置的,其取值是在一些选择项中选取。各级表除了给出本表定义对象的基本属性外,假如有下级元素,还给出了下级元素的个数及其在下级表中的位置,通过这种方式将一条命令的各构成部分关联起来.下面给出这种表结构的一个简单示例。
· 命令类型描述表:描述命令的分类.
唯一标志编号名字命令的个数命令描述位置ct_00010248系统治理类2 c_00010
表1 命令类型描述
· 命令描述表: 描述具体命令
唯一标志编号名字参数的个数参数描述位置c_000101 系统联络请求1 p_00010c_000112 系统复位0 表2 命令描述表
· 命令参数描述表: 描述各命令的参数.参数的值是在用户调用命令时设定的,事先无法确定.我们只是对参数的性质做出一些约束。数据类型的种类视具体应用而定,应用可以为每种类型指定一数值编号,在表中填写参数数据类型的编号值。参数的最大值最小值给出了参数的取值范围或长度限制。
唯一标志 名字 数据类型最大值最小值 枚举的个数 枚举描述位置p_00010 是否要求响应9 2 e_00010p_00020源文件名1332 0 表3 命令参数描述表
· 枚举描述表:给出枚举类型参数的枚举项
唯一标志 枚举名 枚举值e_00010 要求响应1e_00011不要求响应0 表4:枚举描述表
以上表1只表4的内容仅提供一般性的示范,实际应用可根据业务逻辑的需要定义自己的命令内容,命令的规模不受限制.进入讨论组讨论。
3 数据驱动方案的Java语言实现 3.1 命令的内存结构
为了在程序中反映命令结构,定义CmdType、Cmd、CmdField、Enum四个类分别与数据库中的命令类型描述表、命令描述表、命令参数描述表、枚举描述表相对应.每个类包含与其对应表中各列所描述的属性,表的记录在读表到内存时表现为类的实例。下面以其中的一个类CmdType来说明.