一个大型的企业应用程序,因其繁、复杂、多变的情况,再加上用户、网络、服务器、单机等因素,往往导致程序运行不稳定,甚至导致系统崩溃或者系统数据紊乱,资料不能正常读取,严重影响企业运作。事实上,很多时候,系统出错都是由用户造成的,比如某个关键数据,被用户无意或恶意更改,导致程序或报表一连串的错误。程序员花了一大堆功夫查来查去,结果查到是用户的错,但当你去责问用户时,用户一脸无辜的样子:“不是我”,“我没动过”,这时候,责任者是谁?根本没法查出,数据也因为没有保存到操作记录,再也没有办法恢复到原状。这怎么办?!

  笔者碰到很多类似情况,觉得大型程序建立起用户操作的跟踪十分必要,现我向大家介绍一下我是怎样跟踪用户记录的:

  一、跟踪用户界面操作;

  用户对程序的每一个操作界面的进入及离开,都将留下一条记录,标识XX用户用XX机器在XX时间用XX权限进(出)XX界面,然后我们一查,那些有进无出的用户记录肯定不是很对头的啦,还有,某个特定用户不可能在某台机器上操作,却出现了记录,这肯定有人搞小动作……。

  二、跟踪重要数据的更改;

  对一些关键的重要的数据,如订单数量、出货的数量、库存的数量等类似的有关联的重要数据是谁动过?数据对不上,究竟错在那里?只要用一个表对重要数据增加、删除、编辑全记录下来,这些问题便清清楚楚了。

  三、每一个可能变化数据的表都额外增加两个字段(LASTUSER LASTTIME)记录下这个表每条记录的最近操作者。

  四、有必要跟踪的按钮,比如“月结”、“审核”等,以及有必要跟踪的数据操作都作详细的跟踪。

  有了这些操作记录,用户的违规(不正常)操作我们就记录的八九不离十啦,用户的责任心到了,对系统的恶意或无意的破坏就少,系统的稳定性肯定大大提高。笔者参与开发大型程序已有多年,发现大型系统对用户必须要有一定的要求,否则,在用户无规范的操作之下,系统什么问题都可能发生,维护系统的人员日子就不好过了。这时,你不妨在代码里加入这些跟踪,把该记录下来的东西全记下来,保证会使系统动作的更顺畅!(当然,个人经验毕竟有限,并且,大型数据库本来就有一些log记录用户操作的痕迹,还有事务处理,还有服务器的定时备份等等,但这些做起程序来肯定没那么方便,我用这土办法,自觉很管用的,若有朋友愿意指点于我请MAIL:dldydh@163.net)

  附:跟踪用的表结构

  A、跟踪用户界面操作的表结构

  userid 字符型 记录用户ID号

  userpower 数值型 用户权限(如1 表超级用户,2 表可写,3 表只读等)

  userpc 字符型 记录用户所用机器的标识(如机器名称,取注册表hkey_local_machine\system\currentcontrolset\control\computername\computername的键值或者机器的IP地址等)

  usetime 日期时间型 记录操作的时间 (记得要取服务器的时间,以保证时间的正确性)

  sysform 字符型 记录界面名称

  remark 字符型 简要备注

  B、重要数据的更改

  userid 字符型 记录用户ID号

  userpower 数值型 用户权限

  userpc 字符型 记录用户所用的机器标识

  usetime 日期时间型 记录操作的时间

  sysform 字符型 记录界面名称

  tabname 字符型 记录所操作的表的名称

  fename 字符型 记录所操作的字段的名称

  oldqty 字符型 记录原来内容

  newqty 字符型 记录改变后的内容

  remark 字符型 简要备注

  C、重要数据的新增、删除

  对每一个保存重要数据的表都相应增加一个表,专门记录这一个表的增、删情况,表结构与对应的表相似,仅需额外增加:

  userid 字符型 记录用户ID号

  userpc 字符型 记录用户所用的机器标识

  usetime 日期时间型 记录操作的时间

  optype 字符型 记录操作方式(增加、删除)

  这些工作做好以后,再在系统中加入查询这些记录的界面,若时间允许的话,还干脆做一个系统还原的界面,按照一定条件还原数据,比如对某些单据还原到XX年XX月XX日的状态,有了这功能,你的系统就不愧为一个强大的系统!!(以上默认在WINDOWS + NT + SQL的环境下)

posted on 2008-05-05 14:03  风中飘雪  阅读(308)  评论(0编辑  收藏  举报