0

我有一个内置到 ssjs 对象中的自定义文档流程。当我在阅读模式下单击文档中的编辑按钮时,我调用在后端文档中设置锁定日期/时间和锁定所有者的方法,然后返回 true。然后可以使用 ChangeDocumentMode 简单动作将文档更改为编辑模式。但是,当我第一次保存文档时(例如使用简单的操作),它会创建一个冲突文档。前端文档很可能不知道后端文档修改并保存我在进入编辑模式之前所做的。

如果我更改此过程以便让我的文档锁定代码设置两个后端文档字段,然后使用 context.redirectToPage,文档将打开到编辑模式并从 ui 保存它不会创建任何冲突文档。但是,如果在使用我的代码解锁文档后,我使用打开页面简单操作转到“上一页”以退出文档,它只会返回阅读模式而不是实际关闭文档。我确信最初的 redirectToPage 破坏了历史并导致了这个问题。

问题:有没有人建议我如何在进入编辑模式之前锁定文档,进入编辑模式,保存而不会导致文档冲突,并且仍然能够使用“打开页面”简单操作退出(解锁文档后) ?

以下是锁定相关代码的示例,包括进入编辑模式的代码:

thisDoc.replaceItemValue("LockOwner",context.getUser().getCommonName());
thisDoc.replaceItemValue("LockDate",session.createDateTime(@Now()));
thisDoc.save();
var url = view.getPageName()+"?action=editDocument&documentId="+thisDoc.getNoteID();
context.redirectToPage(url);
4

1 回答 1

0

这取决于您的用例。如果您的应用程序是用户访问文档的方式,我建议不要在文档中写入任何内容以进行锁定 - 您最终只需要为在解锁之前断开连接(网络、关闭浏览器、崩溃)的用户提供解锁管理功能. 例如在WebDAV 中,锁定的方式是服务器内存中的时间锁定,调用每30 秒更新一次。为此,您将使用经典的 Ajax 调用。

Domino 项目的 openNTF WebDAV 具有这种锁定机制的服务器端,您可能希望从那里复制它。

如果您必须写入文档:更改顺序并在 readmode 的 queryOpen 事件中更新文档 - 这涵盖了用户也为编辑 URL 添加书签的情况。

让我们知道怎么回事!

于 2015-06-20T00:25:02.763 回答