表单自定义系统的架构设计
表单(页面)自定义(webwork+spring+hibernate)
(1)采用一个页面解析引擎,通过查找界面元素定义表(这个表后面有定义,也可以是xml定义),获得
对应页面的元素信息,采用xslt来生成html界面。
上面提到的数据表(或者xml文件)用来管理页面元素和对应的数据表结构字段信息以及页面元素的表现
控件类型。
比如:
表单名 数据表名 列标实 列名称 数据类型 页面控件 数据来源
----------------------------------------------------------------------------------------
VendorA TBL_Vendor cVenCode 供应商编号 字符串 Text 无
VendorA TBL_Vendor cVenName 供应商名称 字符串 Text 无
VendorA TBL_Vendor bDist 地区性 布尔值 CheckBox 无
CustomQ TBL_Custom cCusCode 客户名称 字符串 Option ***.jsp
另外还需要一张数据内容管理的表
比如:
表单名 数据表名 文档标实 列标实 值
---------------------------------------------------------
VendorA TBL_Vendor docA cVenCode 001
VendorA TBL_Vendor docA cVenName 中国移动
VendorA TBL_Vendor docA bDist true
CustomQ TBL_Custom docQ cCusCode 中国联通
这样的一种方法,会带来数据后台的管理非常的困难,因为本来字段级的数据变成了记录级,DBA的管理
会非常困难,数据重用性大大降低,多字段更新也是一个无法解决的问题!
(2)数据表结构还是由表来定义,但数据结构通过用户表单自定义启用而动态生成(生成物理表结构,当然
生成的表名需要有一定的数字规范,同时对应的PO,hbm.xml一并生成),程序中采用java的reflect来处理
生成的物理文件并进行页面显示;有一个前提,表单一旦定义完成后就不允许修改(表单定义后,有个启用
的过程),如果需要,只能重新定义表单 ,这样数据的管理还是比较方便的。但同样这里也带来一个问题
(其实第一种方法也存在),如果某个表单删除后,数据将永远得不到表现了!也就是说,我们的数据表现
完全是通过表单来实现的(依赖于表单),但这样显然有不足之处,表单仅仅是一个表现的载体,持久数据
应该是不随界面而发生改变的.
针对以上两种情况,应该如何来作到统一和规范,符合表单自定义的规范呢?
ps.第二中方法,后来经过考虑有很多欠佳的表现,所以基本可以不予讨论,可以对第一种方法进行重点讨论,
主要是对数据内容的管理!