0

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

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

我们发现无法更新文档的函数——不是让它签出的函数,而是因为它而失败的函数——是这样的:

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

cr.getId()有文档ID。退房失败的原因很明显。

有没有办法签入可能已被另一个会话签出的文档?那个定制的 cmisHelper 类似乎没有任何与解锁相关的内容。您可以猜到,文档在行动中缺失。

我考虑的其他东西是露天的 soem 选项,它会自动签入“过期”结账。但是我还没有找到这样的选择。

谢谢

4

1 回答 1

2

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

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

var nodes = search.query("ASPECT:\"cm:workingcopy\" AND @cm\:created:\$\{luceneDateRange(today, \"-P1H\")\}");
for each (n in nodes) {
  n.remove();
}
于 2012-05-13T00:08:36.453 回答