(二)数据库结构
出于简单化系统设计来考虑,这里我们没有使用数据库关系。在将来的应用中还可以进一步建立相应的数据关系,以使流程更为简捷。
1. 不进行记录的内容
数据库结构的设计应以简洁明确为主,对于可以计算出来的数据应不记录在内。这样不但可以在访问数据库过程中节省资源,而且对于维持数据一致是有好处的。比如施工超时时间=实际完工时间-计划完工时间,由于实际完工时间和计划完工时间已经记录进数据库,因此施工超时的时间就不需要进行记录,而是在用户界面显示时动态显示出来。
2. 施工票单存储数据库
施工票单的数据库包含如下的内容:
a.主键/索引,即标识该工作票单的唯一号码,由数据库自动增量生成。其作用主要是查询时方便,因此可以不在用户界面显示出来;
b.记录人信息,记录该条信息的用户,该用户应该是在用户信息数据库中的用户,其作用主要是在将来对记录进行修改、删除时可以判断权限,此外也可以跟踪进行记录操作的人;
c.票单编号,该编号是物理票单的唯一标识,但不排除有时候需要记录改期、延期等工程时,使用同一张票单,因此票单编号应允许重复,判别数据库不同记录,还是要使用主键/索引;
d.施工计划信息,记录计划施工的基本信息如工程内容、地点、所属区域等还包括有计划施工时间以计算实际超时施工等信息;
e.施工开工信息,包括实际开工时间,开工核实人;
f.施工完工信息,包括完工时间和完工核实人;
g.确认机制的信息,包括计划施工、实际开工、实际完工三个阶段的确认人、三个阶段分别已发出通知的人员名单,在每一票单的记录信息中包含这些信息以备查;
h.改期、延期等其它信息。
3. 确认信息队列数据库
确认信息队列的数据项应包含票单存储数据库中除施工开工信息、施工完工时间、确认机制信息和改期信息以外的所有信息。在确认后,将队列内的内容直接转入到票单存储数据库,并将确认队列内的此条信息删除。
4. 删除/修改信息数据库
删除/修改记录,应以数据形式将操作记录下来备查,当然也可以使用log文本的方式进行记录,但进行搜索不如数据库记录的信息方便。
5. 其他数据库
除工作票单需要使用的数据库外,还包括有记录用户基础信息的数据库、按时间对添加票单进行记录的消息数据库、通知相应用户施工信息的数据库以及其他的数据库。
五、存在问题
在实践的过程中,我们也遇到了一些棘手的问题,包括有:
1. 数据有效的问题
系统应该在基本功能完成,并能实际投入运行后才使用。因为一旦开始投入运行使用,工作人员输入的数据就会被当作历史数据存留确认,如果系统不完整,使得工作人员过往输入的数据无效甚至丢失,不仅打击了使用系统的积极性,而且也让项目的继续开展极为不利。因此在输入的数据中应尽量完整,包含了考虑到的各方面数据,此外系统功能也基本完整,对数据能及时查改、提取和统计。在系统开始投入使用之后,输入的数据应该都能兼容到将来的修改中。
2. 文件上传问题
在B/S模式下上传文件时,要对上传目录的权限进行设置,特别是不使用Windows身份登录网站的情况下,往往在安全方面造成隐患。我们的解决办法是首先使网站不直接在internet运行,而是仅在局域网内运行,由于我们开通了VPN的功能,因此要通过外部访问,只要首先拨VPN链接就可以进行访问,实际使用过程中,这样的一种访问速度并不是很慢;其次是对于windows权限我们设置了仅对固定上传文件的目录有上传权限,而禁止操作其他目录。对登录网站的用户信息进行加密,建议所有用户设置安全密码。
3. 自动验证问题
微软的.net技术有自动验证网页发送内容的功能,但是有时我们要发布一些带有html标记的信息时(如传输<img>标记以实现显示图片),就无法通过自动验证,因此我们的做法是关闭这些自动验证,使用人工的方法来确保验证输入,并把验证的功能写成类模块的函数以复用。但是这种做法仅在某些需要的页面实施,如留言、发布布告、通知等功能,在其他的页面则仍使用自动验证功能。
4. 记录本地设置信息问题
有些不是很敏感的客户端本地设置信息需要记录起来。如在数据显示表格中隐藏某些不需要的项目、网页的一些个性化设置等。开始时我们使用访问注册表的方式对本地设置信息进行记录,但是通过服务端来操作客户端注册表不仅对使用系统的客户端造成安全上的问题,而且也要装有防火墙、防网页修改注册表软件的客户端开通权限。而使用服务端的注册表,则无法使客户端各自使用自己的设置。因此我们改用了cookie对这些设置信息,则解决了这些问题。
5. 输出Excel表格问题
由于Excel对表格形式文件的处理具有强大的功能,因此在B/S方式下,输出Excel表格进行打印是常用的做法。对于一般的数据表格的输出,只要利用JavaScript运行在客户端就可以实现,而对于不甚规则的表格(如需要还原原来施工票单的电子表格形式),则产生了一些问题。
我们的想法是按照原表格的格式做成Excel模版,然后在响应用户要求时,将数据读取填入模版。目前浏览器生成Excel并没有很好的支持,在客户端操作Excel需要对权限进行设置,而微软公司也不建议使用管理员的权限从网站登录服务器这种不安全的做法来操作Excel对象。因此我们采用在服务端将数据填充模版,然后用下载文件的方式让客户端进行访问。