公开/公告号CN103853543A
专利类型发明专利
公开/公告日2014-06-11
原文格式PDF
申请/专利权人 北京云天时空科技有限公司;
申请/专利号CN201210521801.3
发明设计人 不公告发明人;
申请日2012-12-07
分类号G06F9/44(20060101);
代理机构
代理人
地址 100102 北京市朝阳区望京东路8号锐创国际B座1801室
入库时间 2024-02-20 00:02:49
法律状态公告日
法律状态信息
法律状态
2018-11-23
未缴年费专利权终止 IPC(主分类):G06F9/44 授权公告日:20170808 终止日期:20171207 申请日:20121207
专利权的终止
2017-08-08
授权
授权
2014-07-09
实质审查的生效 IPC(主分类):G06F9/44 申请日:20121207
实质审查的生效
2014-06-11
公开
公开
技术领域
本发明所属领域是电子信息技术->软件->中间件软件特别是涉及到表单生成技术
背景技术
在大多数企业信息系统中,表单是系统和用户交互的基本接口,表单提供信息的展现及输入信息的接收,实现信息的收集、处理及流转,表单在企业信息系统中有着十分重要的地位。在企业信息系统的开发过程中,需处理的表单数量众多、种类繁杂;在企业信息系统的使用过程中,随企业生产流程的变更,表单又表现出很强的易变动性。以上两点给企业系统的开发人员带来很大的挑战,能否快速构建表单和及时有效变更表单,在很大程度上决定了企业系统的开发进度和质量。为解决上述问题,我们提出了动态表单构建方法。
目前已有的表单构建方法一般采用在线自定义表单的方法,该方法描述如下:
提供由JavaScript脚本语言实现的表单定制页面,利用鼠标拖拽方式,在页面上用系统提供的控件构建表单;页面构建完成后,为每页表单生成相应的一整套HTML页面代码、后台控制代码Action/Struts和Dao/Hibernate(业务逻辑层)业务代码及Spring等配置文件。整套页面需要重新部署才能生效。
优点:
1、可视化设计-----所见即所得
2、易于使用,可以快速生成表单
3、控件种类齐全,交互性好
4、 开发要求低
缺点:
1、表单相关定义文件数量繁多、冗余
2、不能满足表单信息项的变化
3、表单数据繁杂、无规律
4、表单定制效率低、开发成本高
5、必须重启系统,表单才能生效。
发明内容
表单的快速定制
提供B/S方式的表单定制页面和表单域定制页面,定制表单及表单域的基本参数,包括页面显示选项、jquery脚本校验选项、数据源选择、输出页面格式及是否支持缓存等表单要素。
表单与后台业务模块的集成
在表单定制过程中,除了可灵活自定义常规的表单类型外,还可以与后台的业务功能模块紧密衔接,调用后台的短信、彩信传输模块,实现一定的短彩信业务逻辑。
表单的数据库存储
完成表单定制后,后台自动生成模块,根据定制信息对整个表单及对表单域的设计要求生成表定义数据,并存放在后台基础数据库中。
表单的动态变更
所有定制表单的操作立即生效,即使实体表里有数据的时候也可以动态修改表单和表单域的定义,系统不需要重启,对表单域定义的修改操作可以立即看到实际效果。
表单的统一展现
前台页面显示数据时,使用后台统一的页面模板,从对应的实体表中动态取出真实数据,根据表定义数据显示。所有对数据表的读写操作采用JDBC的方式直接操作数据库以达到高效的目的。
表单的缓存读取
表单定义数据在系统启动时一次性装入系统缓存中,当有动态修改表单定义需求时,系统会先更新到数据库表对应的表定义,再同步到系统缓存,接下来所有对动态表的操作都会先读取缓存中的表定义数据,以提升表单处理性能。
本技术发明优点总结:
1、整个定制过程随时修改、及时生效,系统不用重启即可看到效果。
2、即使在表单里存在业务数据时也可动态修改表单的定义,最大程度
上保证数据不丢失。
3、采用HTML动态模板技术,所有表单共用一套展现代码,代码量小。
4、利用JDBC方式直接操作表单数据,系统简单、高效。
附图说明
图1是本发明动态表单构建结构示意图。
具体实施方式
表单定制步骤:
在表单定制页面定制整个表单(Form)及对应域(Field)的基本属性.点击确定按钮提交到后台处理模块。
根据用户定义在系统HTML模板库及JQuery脚本库中生成表单域(Field)对应的相关HTML源码片断,将表单定义信息存入相关表.( tb_form, tb_form_conf , tb_form_field)。
系统的SQL分析器生成与表单对应的SQL建表语句, 利用JDBC方式生成动态表单数据存储表。
表单显示步骤:
后台采用统一的4个页面模板:list.html(列表页模板),add.html(添加页模板); edit.html(修改页模板), view.html(查看页模板),以列表页模板(list.html)为例,数据的显示过程如下:
1).利用JDBC方式从表单定义相关表( tb_form, tb_form_conf , tb_form_field)中读出列表页面上要显示的具体域(Field)的相关列信息,包括:列名、中文名、排序参数,封装成一个查询用的SQL语句。
2).利用JDBC方式查询真实的动态表单数据存储表d_xxxxxxxxxx_tb, 返回对应的分页数据集变量pageList。
3).list.html页面模板会循环处理pageList变量中的数据显示。
3. 主要类及方法说明:
DynamicFormAct.java:动态表单Action 动作控制器:负责页面请求的跳转处理,调用DynamicFormService.java类中相应的方法完成业务数据的请求处理过程。
DynamicFormService.java: 动态表单业务控制层:负责业务请求的封装,并调用DynamicFormDao.java类操作数据库。
DynamicFormDao.java:动态表单涉及到的所有JDBC操作封装DAO层。
其中DynamicFormAct.java 类的主要方法说明如下:
public String list() 查询数据方法:提供页面上的列表显示,处理方式如下:
1) 调用DynamicFormService.java类的queryFormByField()方法定位到Form表单对象,并获取Field表单域的相关定义信息。
2) 调用getSearchKeys()方法组装页面上Request查询请求里传过来的参数和值到指定的Map变量queryMap里。
3) 封装必要的分页,排序等查询参数,调用 DynamicFormService.java类中的 search()方法。
4) 最后调用DynamicFormDao.java类的search()方法根据queryMap里的查询条件结合表单定义信息拼装成对应的SQL查询语句,执行数据库查询操作并返回列表格式的分页数据。
数据库表结构设计。
1).表单基本信息配置表:tb_form
用来存储表单的基本信息,其中关键字段如下:
db_type:数据库类型:支持Oracle, SQL Server, DB2, Mysql等常见数据库类型。
module_name: 表单所属的模块名:
tb_name: 数据存储表单的真实名字:形如d_xxxxxxxxxx_tb, 是由系统自动生成唯一的名字,其中xxxxxxxxxx表示系统生成的唯一序号。
其中,“tb_name”字段有着重要的作用,通过该字段的信息我们才能将表单中信息与其具体含义对应起来。
2).表单详细配置表:tb_form_conf
以key:value的方式存储的表单业务相关配置:包括表单数据源配置,消息模板配置,及缓存配置。
3).表单域配置子表:tb_form_field
用来存放表单数据存储表中的列的具体含义。包括列的基本数据类型,长度,列名,中文显示名, 默认值等。其中关键字段如下:
add_html : 对应到添加页面的HTML片断
edit_html :对应到修改页面的HTML片断
view_html:对应到查看页面的HTML片断
通过页面上定制的表单域(Field)的详细配置,系统生成相对应的HTML源码片断保存到数据库中,由这三个字段决定表单域(Field)的具体显示效果。
4).表单数据存储表,例如:d_20111224134000673_tb
是动态表单数据的具体存储表。