lotus-notes - 避免复制后的本地更改
问题描述
我有一个 Notes 应用程序,大部分时间都在本地副本上脱机使用。用户可以创建和更新文档。在服务器上,代理处理所有新文档。
这个想法是——一旦代理处理了文档——用户就不再被允许更新文档。
通常,通过在代理处理的文档上设置作者访问权限来进行设置非常简单。
但是,因为用户在本地副本上工作而代理在服务器上运行,所以这种情况是可能的:
- 用户离线创建文档
- 文档的复制(在服务器上创建文档)
- 代理在服务器/用户本地更新文档上运行
- 文档的复制(在本地更新作者访问/更新服务器上的更改)==> 导致保存冲突或数据不一致
有没有办法确保用户在将文档复制到服务器后不能再更新文档。或者有没有办法强制代理在复制时运行并立即复制访问更新?
我正在考虑创建一个用户可以单击以复制/更新所有文档的按钮,但为了避免用户忘记单击该按钮,我更喜欢默认复制设置以确保尽可能复制所有内容。
解决方案
我不会出于“错误”的原因使用作者字段,而是添加一个不可编辑的状态字段,其中包含“初始”、“就绪”等值以及您可能需要的所有其他值。然后,应使用仅复制具有 Status!="Initial" 的文档的公式来设置不同的复制。用户可能有 2 个按钮来保存文档:一个只是保存到本地数据库,另一个也将状态更改为就绪。一旦 Status="Ready",用户就不能再修改文档。
顺便问一下,您是否将文档复制设置为“合并冲突”?您可能会大大减少冲突的数量。
推荐阅读
- laravel - Laravel - 用户表,使 id uuid 类型
- angular - 角菜单。无法将数据传递到子菜单二
- json - 如何在不使用 package.json 代理的情况下修复 axios.post
- c++ - 异常调用后是否保证 std::call_once 的线程通知
- r - 如何判断时间序列不同模型的表现?
- google-sheets - 交叉连接两列
- node.js - 我应该使用多少字节来获得安全令牌?
- c# - 如何在 docker 的 dotnet core 中将线程或任务设置为在给定时间后自动中止/取消?
- vue.js - 如何正确绑定由 vuejs 中的 web 服务更新的组件属性
- reactjs - 如何在.tsx组件中使用材质ui图标v1.0.0-beta.36