java - Alfresco: checkin 在之前某个时间点 checkout 的文档(并且悬而未决)

标签 java alfresco cmis

我目前正在从事由另一家公司启动的项目。他们创建了一些 CMIS 连接器,目前用于在 Alfresco 内存储文档。我们没有该连接器/组件的来源。客户和提供商之间的关系变得糟糕,获取我们现有的代码是一场艰苦的战斗。

事实证明,文档更新偶尔会失败,因为文件已被 checkout 并且当前已锁定。考虑到露天服务器内没有用户(这一切都是通过 Web 服务完成的),我们相信在某些时候它会悄无声息地崩溃并让文档无限期地 checkout 。我假设问题出在我们正在管理的应用程序上。该问题可能是由 Alfresco 引起的。

我们发现无法更新文档的函数(不是导致其 checkout 的函数,而是因此而失败的函数)是这样的:

cmisHelper.checkIn(cmisHelper.checkOut(cr.getId()), "Update", null, docBytes, mimeType);

cr.getId() 具有文档 ID。由于明显的原因, checkout 失败。

有没有办法 checkin 可能已被另一个 session checkout 的文档?定制的 cmisHelper 类似乎没有任何与解锁相关的内容。正如您可以猜到的,文档在实际操作中缺失。

我考虑的其他事情是露天的一些选项,它会自动 checkin “过期”结帐。但我还没有找到这样的选择。

谢谢

最佳答案

工作副本不会超时,只要用户保持这种状态, checkout 的文档就可以保持该状态。您首先需要一种方法来识别哪些工作副本已过期,您可能会自己引入结帐超时的概念。

例如假设您要告诉用户,露天结账的操作必须在一小时内完成。然后,您可以配置一个 cron 作业来运行每个可以运行脚本的 hor,如下所示:

var nodes = search.query("ASPECT:\"cm:workingcopy\" AND @cm\:created:\$\{luceneDateRange(today, \"-P1H\")\}");
for each (n in nodes) {
  n.remove();
}

关于java - Alfresco: checkin 在之前某个时间点 checkout 的文档(并且悬而未决),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10561209/

相关文章:

java - 修复由于 JTextArea 导致的 GUI 无响应的问题?

java - SimpleDateFormat 更改日期,同时将其转换为不同的日期格式

database - Alfresco activiti 错误太长,类型字符不同(255)ACT_HI_TASKINST

java - 使用 CMIS 连接到 Alfresco

jackrabbit - Sling vs CMIS 作为 Apache jackrabbit 的 REST 接口(interface)

java - Apache 化学-Java : Random "Unauthorized" exception when uploading documents to SharePoint 2010

java - 编译itext提供的示例程序

java - 定位 JLabel(setAlignment 不起作用)

javascript - 来自露天 javascript 文件的 HTTP 请求

java - CMIS 规范涵盖了多少 JCR 规范?