社区
消息协作
帖子详情
NOTES的经典问题讨论
oatiew
2004-09-01 05:06:34
NOTES中的文档复制冲突恐怕让所有的开发者都头疼过,在R5下,NOTES本身没有提供很好的机制来解决此问题,我们只好自己写代码对文档进行了加锁的控制,当有一个用户编辑文档时,文档被加锁,其他用户打不开。
到了R6,NOTES增加了一个关键字lock,可以实现对文档的加锁,但仍需要开发者编程实现。
由于对数据的处理不是基于事务的,所以这个问题成为NOTES的经典问题,不知各位大师有何见解?
...全文
1325
53
打赏
收藏
NOTES的经典问题讨论
NOTES中的文档复制冲突恐怕让所有的开发者都头疼过,在R5下,NOTES本身没有提供很好的机制来解决此问题,我们只好自己写代码对文档进行了加锁的控制,当有一个用户编辑文档时,文档被加锁,其他用户打不开。 到了R6,NOTES增加了一个关键字lock,可以实现对文档的加锁,但仍需要开发者编程实现。 由于对数据的处理不是基于事务的,所以这个问题成为NOTES的经典问题,不知各位大师有何见解?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
R5 24学时学习教程
本书全面介绍了Lotus
Notes
R5中文版的操作和使用。共分24学时进行讲解,是自学和培训的优秀教程。它既适合初学者学习,也可以作为高级操作人员的参考书。 本书主要包括以下方面的内容:创建和发送电子邮件;使用Lotus
Notes
R5客户端程序漫游Web;把
Notes
带到路途上或在家中使用;在Lotus
Notes
R5的客户端中搜索和保存;管理日历项和任务;使用群组日历和安排计划;复制数据库;操作附件;自定义
Notes
客户端。 目 录 前言 第1学时
Notes
起步 1 1.1 Lotus
Notes
和Domino概述 1 1.2 了解
Notes
的安全性 1 1.3 启动
Notes
2 1.4 漫游
Notes
R5 客户程序 5 1.5 打开菜单并选择命令 7 1.6 查看便捷图标 8 1.7 使用对话框和属性框 9 1.8 修改口令 11 1.9 锁定标识符 12 1.10 退出
Notes
12 1.11 学时小结 13 1.12 专家答疑 13 第2学时 操作数据库 14 2.1 阅读和使用文档 14 2.2 操作视图 15 2.3 刷新视图 17 2.4 查看状态栏 17 2.5 获得
Notes
帮助 18 2.6 打开新的数据库并添加书签 20 2.7 本地与服务器的对比 21 2.8 查看数据库属性 22 2.9 删除数据库 22 2.10 学时小结 23 2.11 专家答疑 23 第3学时 阅读邮件 24 3.1 打开邮件收件箱 24 3.1.1 使用导航面板 25 3.1.2 使用视图面板 26 3.1.3 使用活动栏 26 3.2 选择和标记邮件 27 3.3 阅读和预览邮件 27 3.3.1 了解阅读书签 28 3.3.2 使用预览窗格 28 3.4 学时小结 30 3.5 专家答疑 30 第4学时 创建、拼写检查和发送邮件 31 4.1 创建邮件 31 4.2 添加邮件地址 32 4.2.1 使用自动查找 34 4.2.2 了解Internet邮件地址 35 4.3 键入及拼写检查邮件 36 4.4 发送邮件 38 4.5 选择邮递选项 39 4.6 回信 41 4.7 转发邮件 42 4.8 学时小结 43 4.9 专家答疑 43 第5学时 管理邮件 44 5.1 打印邮件 44 5.2 邮件礼节 45 5.3 漫游邮件 46 5.4 控制未读的标记 46 5.5 排序邮件 47 5.6 删除和恢复删除的邮件 47 5.7 使用文件夹 49 5.7.1 创建文件夹 49 5.7.2 在文件夹中保存邮件 50 5.7.3 从文件夹中删除邮件 50 5.8 使用
Notes
Minder 51 5.9 归档邮件 52 5.10 压缩邮件 53 5.11 学时小结 53 5.12 专家答疑 54 第6学时 优化邮件 55 6.1 选择信头 55 6.2 创建信笺 56 6.3 操作定则 57 6.4 使用离开办公室通知 59 6.5 创建链接消息 62 6.6 生成电话消息 62 6.7 设置代替便笺编辑器 63 6.8 指定邮件惯用选项 64 6.8.1 设置邮件使用权限 64 6.8.2 如果你有访问权,就能够打开 别人的邮件 65 6.8.3 在邮件上添加签名 65 6.8.4 设置其他邮件惯用选项 66 6.8.5 设置影响邮件的
Notes
惯用选项 67 6.9 学时小结 68 6.10 专家答疑 69 第7学时 使用日历 70 7.1 选择日历视图 70 7.2 了解日历项的类型 72 7.3 进入约会 73 7.4 创建提示 76 7.5 创建纪念日 78 7.6 生成事件 78 7.7 添加待办事宜 79 7.8 用Actioneer 制作项目 81 7.9 学时小结 82 7.10 专家答疑 82 第8学时 管理日历项和任务 84 8.1 编辑日历项 84 8.2 转换日历项 85 8.3 管理任务 85 8.3.1 对任务的响应 86 8.3.2 转换待办事宜 87 8.3.3 分配任务 87 8.3.4 查看任务状态 91 8.3.5 标记完成的任务 91 8.4 添加节假日 91 8.5 打印日历 92 8.6 查看其他人的日历 92 8.7 设置日历惯用选项 93
针对IBM_Lotus_
Notes
开发人员的性能基础知识
在 Lotus
Notes
中开发简单的应用程序非常容易,并且在用户和文档的数量很少时,一般不会遇到性能
问题
。然而,只要应用程序是成功的,用户和数据的数量就会逐渐增多。如果在设计时没有考虑到性能
问题
,那么您的应用程序此时将会变得异常缓慢。 这份白皮书
讨论
影响
Notes
/Domino® 应用程序的性能的主要因素,并且解释开发人员如何才能获得最佳的性能
AJAX必知必会:老程序员手把手带您完成一个【My
Notes
】Web前端项目
本课程主要介绍了AJAX基本原理,并演示了原理的实现过程,最后还安排一个实战项目——My
Notes
。
论文研究-利用Lotus
Notes
设计高质量的Web网页 .pdf
利用Lotus
Notes
设计高质量的Web网页,卢泽纲,,本文从实际应用的角度探讨了利用IBM Lotus
Notes
开发工具在处理复杂页面技术实现上比较了常规实现模式和创新实现模式的不同,重点介绍�
vue-
notes
:Vue学习笔记!
Vue 系列 学习笔记 阅读目录 Vue 双向绑定原理,浅析 MVVM Vue 源码概要 VueX 状态管理 常用地址链接 Vue 是一个开源框架,最新版本已经更新到了 3.0,当前系列基于 2.X(单独发文 3.0),是一个独立的 Javascript 框架,不依赖于任何其他框架(例如 jquery)。 Vue.js 开源地址: Vue.js 中文 api 地址: Vue CLI 中文地址: 提升原则 根据个人从业 7 年来看,经验这事挺重要,不会让你更加“优秀”,但是会让你“靠谱”,实现的技术方案,接口设计,部署测试流程乃至整个产品的健壮,和产品
讨论
并理解需求,对业务熟悉,了解现在业务主流的解决方案,前沿的发展,感觉这些才是程序员实际工作,写代码的比例没那么高。 不断提高做事情的层次,不要满足于自己的舒适区。 Coding 得心应手的时候,想着去写写数据交互,自己任务没
问题
了,要想着去
消息协作
535
社区成员
39,101
社区内容
发帖
与我相关
我的任务
消息协作
企业开发 Exchange Server
复制链接
扫一扫
分享
社区描述
企业开发 Exchange Server
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章