我爱Aspx >> VC.Net >> 如何实现多人审批同一文档如何实现多人审批同一文档
首先,Lotus Notes作为一个文档型的数据库,并未提供记录(文档)的锁定。
因而作为一个面向群组的文档,如果不采取措施,将会发生文档的编辑和保存冲突,这
是显然的。Lotus 提供了复制技术和版本控制技术,但是,由于应用的复杂性,尚且不
能满足我们的要求。于是许多人都想用编程控制的方法实现这种控制。
在这里,我们主要讨论关于编程的方法,关于复制和版本控制另作讨论。
(二)
解决方法之一:加锁
加锁分为两种,一种是文档锁,一种是自锁。两种方式各有利弊。但是通常的方式是文档锁。
一、文档锁:
所谓文档锁就是对目标文档建立一个附属文档,利用附属文档对目标文档进行锁定。
具体描述如下:
附属文档通常和目标文档建立一对一的连接。
在附属文档中设立状态域,标识对目标文档拥有编辑权限(保存权限)的用户属性。
在目标文档被编辑并且保存时,把当前状态写入附属文档的状态域,从而为文档加了锁。如果有
其他用户试图保存时,首先检测附属文档,判断状态域,如果不符合保存条件,取消保存。从而
避免了冲突。
值得注意的是;加了锁定的文档,一定要在操作结束时解锁,也即复位附属文档的状态域。
二、自锁:
所谓自锁,就是在文档中设立状态域,在此文档第一次保存时修改此状态域的值,记录文档当前
拥有编辑保存的权限的用户信息。此后的用户打开文档时,首先判断状态域的值,若有人正在编
辑,则不进入编辑状态,从而避免了冲突。此种方式同样需要解锁。
三、两种方法的比较:
原理上是一致的。
但是我们知道当目标文档加锁后,解锁前,如果发生意外,如断电,死机等情况使得来不及解锁,
就关闭了文档。再次打开时,已经成了死文档,不能进行修改了(除非管理员)。采用第二种方
【我对这篇文章有话说?】
论语言选择的关键[05-21]
TN007: Debugging Trace Options..[05-21]
编写用例文档[05-21]
OO 设计过程:用例计划[05-21]
OO 设计过程:应用的用例,第 2 ..[05-21]
OO 设计过程:应用的用例,第 1 ..[05-21]
如何在Linux下刻录数据光盘[05-21]
TN003: Mapping of Windows Hand..[05-21]
亲密接触VC6.0编译器[05-21]
近五年上午试题分布分析[05-21]