基于Java可视化测绘生产流程表单的设计及实现
2012-02-08李志平
李志平
(长春市测绘院,吉林长春 130021)
1 引言
城市测绘单位生产流程管理系统因为其业务流程特殊性有别于一般的办公系统,它要求处理更为复杂的数据信息。长春市测绘院根据自身生产经营特点自主设计研发了基于Java平台的B/S模式的生产流程管理系统。
生产流程的主要信息的载体是表单,而且表单会随着生产的需要不断进行调整,开发出简单易用的表单管理模块显得至关重要。本文主要讨论如何设计开发可视化灵活定制的生产流程表单管理模块,并给出该模块的实现方法及部分源代码。
图1 表单定制功能模块图
2 表单管理模块的设计
表单模块主要包含表单编辑、表单存储、表单验证、表单调用及表单导入导出等功能,具体功能模块如图1所示。
表单在整个生产流程办理过程中记录全部相关的办理信息,包括任务下达信息、技术设计信息、中间成果处理信息、成果检查信息及成果入库输出信息等。当流程办理完毕时,表单上会呈现整个流程办理过程及相关办理信息。为了更好地说明表单模块在整个流程中的角色及作用,下面给出表单模块的数据流程图,如图2所示。
3 表单管理模块的实现
3.1 系统开发环境及流程
图2 表单模块的数据流程图
该系统开发平台为Windows xp sp2,开发语言为Java 2.0,数据库采用MySql 5.1,数据库管理系统为phpMyAdmin 3.1,开发工具采用Eclips 8.0,编辑工具采用Dreamweaver 8.0。
系统开发流程严格遵循软件工程的思想进行实施,具体开发流程如图3所示。
图3 项目开发流程
3.2 表单维护与管理
表单维护与管理模块主要实现表单的分类、创建、编辑、删除、存储等管理功能,同一个界面集成全部表单管理功能,操作简单易用,界面如图4所示。界面列出了部分已经定义好的生产流程表单模板。
图4 表单管理界面
表单编辑界面完全是可视化编辑,所见即所得,具备基本的办公软件操作经验的用户可以很容易掌握表单的定制。表单编辑的主页面如图5所示,主要功能包括定义表单编码、名称、流程类型及表单预览;表单定制主页面如图6所示,主要功能是编辑表单。
新建表单通过点击图4增加表单即可进入图5所示的编辑主页面,进一步点击编辑按钮进入图6所示的定制页面开始编辑表单,分为可视化编辑和代码编辑两种界面,以适合不同类型用户的需要。编辑好表单点击图6中的保存并退出返回到图5的界面完成编辑,最后点击提交将表单存储到数据库中。
图5 表单编辑主页面
图6 表单编辑子页面
3.3 表单存储与调用
系统采用B/S模式进行架构,后台数据库采用MySql 5.1,数据表 Form、Form_field、Form_table_form-Code(formCode代表表单类别)存储表单信息,其中:
Form表主要用于定义表单的类别、名称、内容等信息,表单的内容以网页代码(代码符合html4.01标准,编辑的内容如3.2节中图5所示)的形式存储于content字段中。
Form表数据字典 表1
Form_field表用于定义表单控件名称、类别及初始数值等信息,当办理流程时,表单加载模块通过将Form_field表中控件(name)与Form表中表单网页代码(content)进行匹配,如果名称相同,则将控件的值赋给网页代码中的同名控件。
Form_field表数据字典 表2
Form_table_kongzhi(其中,formCode= “kongzhi”,代表控制测量的流程对应的表单)表主要用于存储流程办理过程中表单填写的具体内容,当开始流程办理时,表单加载模块会自动将该表字段与Form表中表单网页控件进行匹配,如果匹配成功则将该字段的值赋值给网页控件的值,否则保持网页控件默认值。
Form_table_kongzhi表数据字典 表3
3.4 表单智能验证
该系统表单模块的验证子模块采用了知识库设计,思路是将表单控件参数及验证规则存于配置文件中(当然如果知识较多也可以存于数据库中),通过Javascript脚本编程实现对验证规则与控件属性参数的匹配,从而达到对表单控件的自动验证,体现了智能化的特点。为了便于系统调用,将验证脚本存于脚本文件FormValid.js中,具体代码片段如下:
下面以网页文本控件为例说明如何配置参数及调用验证方法。假设表单模板包含控件为<INPUT title=”工程名称”style="WIDTH:446px;HEIGHT:21px"size=”56”name=”gc_xm”>,只需在<INPUT>标签上添加valid和errmsg属性即可完成参数配置,其中valid代表判定条件,值可以取"required"(必填项)、"number"(数字)、"telephone"(电话号)等,如果需要并列判定,比如要求“必填且为数字”,则valid的值可表示为”required|number”;errmsg代表没有通过判定时的提示信息。本例中的<INPUT>标签的valid和errmsg属性的值分别设为valid="required",errmsg="[计财科-工程名称]不能为空,请检查!",那么完整的控件代码为:<INPUT title=”工程名称”style="WIDTH:446px;HEIGHT:21px"size=”56”name=”gc_xm”valid="required"errmsg="[计财科-工程名称]不能为空,请检查!">。这样,当填写完表单进行提交时,系统会验证“工程项目名称”是否为空,如果为空,则提示“[计财科-工程名称]不能为空,请检查!”,不为空则继续验证其他控件,直到所有控件验证完毕才确认提交。
3.5 表单的导入导出
表单导入是指将已经编辑好的表单导入到数据库中,系统支持多种表单格式导入,其中包括word格式(*.doc)、文 本 格 式 (*.txt)、网 页 格 式(* .html,* .mht)。
表单导出是指将数据库中的表单导出其他文件格式,系统支持的导出的格式包括word格式(*.doc)、文本格式(* .txt)、网页格式(* .html,* .mht)。
测绘数据资料经常需要进行存档、归档,为此系统提供了表单打印功能,可以利用浏览器进行选择性打印或者利用系统提供的模板打印,也可以导出其他格式进行打印。
4 结论
本文主要讨论是如何构建可扩展的,具有高度定制功能的可视化表单模块,并采用Java语言进行了编程实现。由于该模块采用了宏控件的思想,使得系统很灵活,同时系统定义了一套表单定制的规则,使得定制表单更方便快捷。
由于该表单定制模块是采用模块化思想且基于Java语言开发的,因此具有一定的扩展性和可移植性,可以很容易移植到其他操作系统下的办公系统表单定制管理。
[1] 普雷斯曼(美)著,郑人杰等译.软件工程:实践者研究方法(原书第7版)[M].北京:机械工业出版社,2011.
[2] 耿祥义,张跃平.Java2实用教程(第三版)[M].北京:清华大学出版社,2006.
[3] 埃克尔(美)著,陈昊鹏译.Java编程思想(第4版)[M].北京:电子工业出版社,2007.
[4]JavaResearch.org编.J2SE进阶[M].北京:机械工业出版社,2004.
[5]李刚.轻量级Java EE企业应用实战—Struts 2+Spring+Hibernate整合开发[M].北京:电子工业出版社,2008.
[6] 刘伟,张利国.Hibernate开发与实战[M].北京:电子工业出版社,2009.