社区
消息协作
帖子详情
NOTES的经典问题讨论
oatiew
2004-09-01 05:06:34
NOTES中的文档复制冲突恐怕让所有的开发者都头疼过,在R5下,NOTES本身没有提供很好的机制来解决此问题,我们只好自己写代码对文档进行了加锁的控制,当有一个用户编辑文档时,文档被加锁,其他用户打不开。
到了R6,NOTES增加了一个关键字lock,可以实现对文档的加锁,但仍需要开发者编程实现。
由于对数据的处理不是基于事务的,所以这个问题成为NOTES的经典问题,不知各位大师有何见解?
...全文
1361
53
打赏
收藏
NOTES的经典问题讨论
NOTES中的文档复制冲突恐怕让所有的开发者都头疼过,在R5下,NOTES本身没有提供很好的机制来解决此问题,我们只好自己写代码对文档进行了加锁的控制,当有一个用户编辑文档时,文档被加锁,其他用户打不开。 到了R6,NOTES增加了一个关键字lock,可以实现对文档的加锁,但仍需要开发者编程实现。 由于对数据的处理不是基于事务的,所以这个问题成为NOTES的经典问题,不知各位大师有何见解?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
53 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sampanx
2004-09-27
打赏
举报
回复
你想怎么处理就怎么处理呀,只要后台多做些工作。
可以判断冲突项并给出详细的提示;没有冲突的可以合并;或者询问是否覆盖;......
oatiew
2004-09-27
打赏
举报
回复
sampanx(fire@2003):那提示后又该如何做呢?
sampanx
2004-09-25
打赏
举报
回复
同意gavinli(gavin) 的做法。假设B/S下:
A打开编辑,记录其打开时间Ta;
B打开编辑,记录其打开时间Tb;
如果B先保存将同时保存时间Tb,则A保存时根据比较Ta和Tb得出已经有人保存,提示A;
如果A先保存将同时保存时间Ta,则B保存时根据比较Ta和Tb得出已经有人保存,提示B;
希望对大家有帮助!
oatiew
2004-09-24
打赏
举报
回复
再没人顶,国庆后结
kingchang2000
2004-09-23
打赏
举报
回复
我觉得文件锁其实不是很好,
因为它要延伸出很多问题,而且不敢保证这些问题解决了,
文件锁就没有问题了,就象大家说的那样那样。
而且开发上很占人力、时间资源。
我个人比较倾向于如果不是编辑者就不允许保存的策略,我想这种方法
对于客户也有说法,呵呵
流程上我觉得同时做决策操作是不大可能的,而且业务逻辑也说不通
只能
1、说服客户放弃并行操作的念头,一定要努力扼杀~~
2、如果非要用,只能让并行处理做会签功能,不能对主文挡进行操作,
否则,无论如何,都避免不了冲突
诶,冲突,lotus人员的痛~~~
oatiew
2004-09-23
打赏
举报
回复
Zerotm(悠久金星):读者域中如果有N个读者呢?
hq_1980(Tommy):其实我这里的问题也就是用户太叼钻,你所说的超过规定时间保存无效他们是无论如何也不会接受的,这些用户都是省级领导,是我们BOSS的BOSS,...
我觉得用主、答文档的方式可能还好一些,但这种方式就需要对每个域值在流程中的修改情况进行细化,看哪些域值在哪些环节可以修改,哪些域值哪些环节值需要拼接....
唉,我现在的这套系统要改成这种方式可能性已经不大了,需要改的地方太多,改不好又成了马蜂窝,等下次项目吧...
Zerotm
2004-09-23
打赏
举报
回复
notes的最强的就是权限控制!
用读者域做不就都解决了?
oatiew
2004-09-23
打赏
举报
回复
kingchang2000(萨那) 提出了一个观点,就是程序人员难以实现的业务需求应该去引导用户改变需求,也就是扼杀,这一点强烈同意!
用最简单的codes做最复杂的things
oatiew
2004-09-22
打赏
举报
回复
temcozw(矿泉水) :如你所说,但是还会发生如
同一个域值被两个用户改了,A改成“OK”,B改成“NO”,保存时,是要“OK”呢,还是要“NO”呢?
的问题呀...
hq_1980
2004-09-22
打赏
举报
回复
在我说的方法中,如果用户长时间占用一个文档,超过规定时间,而文档又被另一个用户编辑时,如果前一个用户要保存文档,会在webquerysave中判断当前的标志文档中记录的用户是否是当前用户,不过不是,文档不会被保存,所以不会出现上述的问题。
其实要完全做到真正的同时编辑,又不产生冲突或答复文档,是几乎不可能的。我们能做的就是在不同的情况下,选择最好的方法,尽量避免错误的发生。比如说在流程中的某些步骤,用户不会同时去修改同一个域,他们只是填写自己的意见,我们只需把他们的意见拼接起来存放到文档中,那么我就可以用主文档,答复文档的方式来做。但别的情况下可能这个方法并不适用。
的确DOMINO没有良好的机制来一劳永逸的解决这个问题,但我觉得通过对不同的实际情况,选择最正确的方法,还是会有令人满意的结果的!:)
oatiew
2004-09-22
打赏
举报
回复
感谢大家的帮助,其实,不管哪种方式,在某些极端情况下,都避免不了有些问题:
文档直接加锁方式:
如一用户长时间占用一个文档,会导致其他用户打不开;死机时产生死文档...
主文档、答复文档方式:
同一个域值被两个用户同时改了,A改成“OK”,B改成“NO”,保存时,是要“OK”呢,还是要“NO”呢?
文档直接加锁,定时解锁:
如一用户长时间占用一个文档,则会产生复制冲突...
创建锁标志文档:
如一用户长时间占用一个文档,也会产生上述问题...
问题在根源在于OA系统中不同用户操作相同数据的概率比较大而DOMINO又没有良好的解决机制,大家说呢?
zzzlinda
2004-09-22
打赏
举报
回复
这方法比较好
hq_1980
2004-09-22
打赏
举报
回复
其实 fjjiantuo(黄浪) 的方法是比较传统而可行的,不过建议不要直接修改主文档来加锁。可以创建一个记录用户编辑标志的文档。
当用户编辑一个无人编辑的文档时,webqueryopen创建一个编辑标志文档,记录主文档的id,当前编辑人,开始编辑时间。
当用户编辑一个已存在编辑标志文档的文档时,判断编辑标志文档中的user是否和当前用户相同,如相同,进入编辑,修改编辑标志文档;如果不同,判断当前时间和编辑标志文档纪录的时间相差是否超过规定时间(假设为30分钟),如果超过,进入编辑,修改编辑标志文档,没超过,提示无法编辑,关闭窗口。
当用户在编辑文档时,刷新或直接关闭文档时,触发js的onBeforeUnload事件,在该事件中调用代理删除编辑标志文档。保存时同样去删除相应的编辑标志文档.
当然还可以加一个定时代理,去判断编辑标志文档的时间,和当前时间,超过30分钟删除编辑标志文档。
这个方法我觉得基本上还是可行的,只是在一个用户同时打开两个ie窗口去编辑同一个文档时,会产生冲突。!
楼主如果有兴趣,我可以发个库给你做参考。
temcozw
2004-09-17
打赏
举报
回复
在正常的情况下,复制冲突只在多人并行处理时才会发生
又想让多人可以同时编辑并保存文档,又想不冲突,建议使用主文档-答复文档来实现!
对每个环节-处理人生成一个答复文档,这样就只需要在保存的时候加锁主文档,不会有个别处理人独占文档的现象!
如果串行的话就直接编辑主文档.
oatiew
2004-09-16
打赏
举报
回复
yhbtzy(yhbtzy):自己用代码合并?到到底如何合并呢?比如同一个域值被两个用户改了,A改成“OK”,B改成“NO”,自己用代码合并时,是要“OK”呢,还是要“NO”呢?
oatiew
2004-09-14
打赏
举报
回复
BS下得相对更难搞一些,比如用户一边浏览XX网站一边编辑文档,突然旁边有人经过,用户慌忙将所有的IE都X掉,得,文档锁死了...
yhbtzy
2004-09-13
打赏
举报
回复
最好不要产生冲突文档,每次编辑不同的文档。然后自己用代码合并。
fjjiantuo
2004-09-13
打赏
举报
回复
没人继续此问题
fjjiantuo
2004-09-10
打赏
举报
回复
我还做一个强行解锁,避免突然断电
难道没有行之有效的办法??
fjjiantuo
2004-09-10
打赏
举报
回复
domino5.05的B/S下如何有效的加锁解锁,真是好头痛,我试好好多还是时不时有问题
我是这样设计的,表单里有个editor域,为空可以进入编辑,锁住就是正在编辑的人名
进行编辑,onload事件判断是否锁了,若锁了alert谁正在编辑人的姓名,否则运行代理把当前的用户名填入editor,保存并编辑打开.
保存文档,则editor=""
unload中写了一个代理判断eidtor是否为当前操作人,是则editor=""并保存
我不做一个强行解锁,避免突然断电
理想下好像是可行,但用户那时不时被锁住
大家多提见意
加载更多回复(32)
lotus
notes
常见
问题
Lotus Domino/
Notes
是目前最为流行的文档数据库系统之一,作为群件系统,它利用自身强大的功能使其在企业、政府办公自动化方面的应用越来越广。笔者在此总结了一些
Notes
开发和管理的常见
问题
,希望对大家有所帮助
Notes
模板,适合于
notes
初学者!
Notes
模板,适合于
notes
初学者!
Notes
客户端 用户惯用选项 配置端口
Notes
客户端在第一次使用时,需要配置端口,有时配置完成端口重启
Notes
后,切换场所,扔旧不能访问服务器,文档描述了出现这个现象的可能原因及解决方法,详见文档。
CITRIX下Lotus
Notes
的发布方法
CITRIX下Lotus
Notes
的发布方法,并就中文版变成英文界面的
问题
处理做了说明。
Lotus
Notes
开发指南
Lotus
Notes
开发指南详细介绍等,欢迎下载。
消息协作
536
社区成员
39,097
社区内容
发帖
与我相关
我的任务
消息协作
企业开发 Exchange Server
复制链接
扫一扫
分享
社区描述
企业开发 Exchange Server
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章