(一)
因而作为一个面向群组的文档,如果不采取措施,将会发生文档的编辑与保存冲突,这 【程序编程相关:消息与消息队列】首先,lotus notes作为一个文档型的数据库,并未提供记录(文档)的锁定. 【推荐阅读:探察RUNTIME_CLASS之类的秘密】能满足我们的要求.于是许多人都想用编程控制的方法实现这种控制. 【扩展信息:我对C++中THUNK一种实现技术的分析】是显然的.lotus 提供了复制技术与版本控制技术,但是,由于应用的复杂性,尚且不在这里,我们主要讨论关于编程的方法,关于复制与版本控制另作讨论.(二)
解决方法之一:加锁加锁分为两种,一种是文档锁,一种是自锁.两种方式各有利弊.但是通常的方式是文档锁.一.文档锁:所谓文档锁就是对目标文档建立一个附属文档,利用附属文档对目标文档进行锁定.具体描述如下:附属文档通常与目标文档建立一对一的连接.在附属文档中设立状态域,标识对目标文档拥有编辑权限(保存权限)的用户属性.在目标文档被编辑并且保存时,把当前状态写入附属文档的状态域,从而为文档加了锁.如果有其他用户试图保存时,首先检测附属文档,判断状态域,如果不符合保存条件,取消保存.从而避免了冲突.值得注意的是;加了锁定的文档,一定要在操作结束时解锁,也即复位附属文档的状态域.二.自锁:所谓自锁,就是在文档中设立状态域,在此文档第一次保存时修改此状态域的值,记录文档当前拥有编辑保存的权限的用户信息.此后的用户打开文档时,首先判断状态域的值,若有人正在编辑,则不进入编辑状态,从而避免了冲突.此种方式同样需要解锁.三.两种方法的比较:原理上是一致的.但是我们知道当目标文档加锁后,解锁前,如果发生意外,如断电,死机等情况使得来不及解锁,就关闭了文档.再次打开时,已经成了死文档,不能进行修改了(除非管理员).采用第二种方法,肯定会遇到此类问题.... 下一页