首页  ·  知识 ·  协同办公
DOMINO禁止多人同时访问一个文件(控件并发访问文件)B/S
网友  百度空间     编辑:德仔   图片来源:网络
注:下面讲的都是在B/S结构中 DOMINO中如果多个用户同时访问
注:下面讲的都是在B/S结构中

        DOMINO中如果多个用户同时访问一个文件,可能出现文件保存冲突问题。因此我们有时候希望这个文件在任何时候都只允许一个用户访问。只有当一个用户退出去以后,另一个用户才可以对文件进行编辑。

  我开始的思路是:1、在文档中放置一个标志域IsLock。
          2、在文件打开时,在打开代理WebQueryOpen中将IsLock赋值Locked。
          3、在文件关闭时,在保存代理WebQuerySave中将IsLock赋值UnLocked。
          4、打开文件时先判断标志域IsLock的值。如果是LOCKED,则退出。如果不是,则
            可正常打开文件。

  然而如果在表单中没有SaveOptions这个域为0时。在保存代理中给IsLock赋值时,需调用call notedocument.save(true,true)这条语句。而表单本身的提交document.submit()方法会按当前打开表单中IsLock中的值进行保存。这样就产生了保存复制冲突。(保存复制冲突是确实存在的,上面是我理解的原因,可能不准确,如有错误请指出)

  返回来继续想。要实现这个单人访问,必须有一个标志符来标志当前文档是否有人在编辑。如果在.net或其它一些语言中,我可以写一个配置文件来存标志符,或者用注册表也行。但DOMINO好像没这么强的功能。放在它当前表单中也不行。那要放到哪儿呢?

  最后,我想出了这样一个方法,成功实现了所需功能。在文件打开时,我在打开代理中创建一个新文件,而这个文件在这里就当标志符的使用了。我们在这里把它叫做标志文件。把先前实用的那文件叫应用文件。并在这个标志文档中设置一个域,存应用文件的ID。

  当关闭文件时,在保存代理中再把这个文件删除了就行了。这样,用户打开文件时,就先判断存不存在标志文件。如果存在就退出。如果不存在就创建标志文件并打开应用文件。

  主要思路就是用一个文件当标志符使用。我这里是实现了。具体实现方法要讲起来还是比较繁锁的。如果有人有在实现上的问题,请留言提出来。我再把本文加以完善。

本文作者:网友 来源:百度空间
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的