我目前正在从事另一家公司启动的项目。他们创建了一些CMIS连接器,目前正用于在Alfresco中存储文档。我们没有该连接器/组件的来源。客户端和提供者之间的事情变得糟糕,获得我们拥有的代码是一场艰苦的战斗。
事实证明,每隔一段时间,文档更新就会失败,因为文件已经签出并且当前已锁定。考虑到alfresco服务器内部没有用户(这一切都是通过网络服务完成的(,我们相信在某些时候它会悄无声息地崩溃并无限期地签出文档。我假设问题出在我们管理的应用程序上。可能是问题是由Alfresco引起的。
我们发现无法更新文档的功能 - 不是将其签出的函数,而是因此而失败的函数 - 是这样的:
cmisHelper.checkIn(cmisHelper.checkOut(cr.getId()), "Update", null, docBytes, mimeType);
cr.getId()
具有文档 ID。由于显而易见的原因,结帐失败。
有没有办法签入可能已被另一个会话签出的文档?那个定制的cmisHelper类似乎没有任何与解锁相关的内容。正如您可以猜到的那样,文档在操作中丢失了。
我考虑的其他东西是露天中的某个选项,它会自动签入"过期"的结帐。但我还没有找到这样的选择。
谢谢
工作副本没有超时,只要用户保持这种状态,签出的文档就可以保持该状态。您首先需要一种方法来识别哪些工作副本已过期,可能会自己引入签出超时的概念。
例如,假设你要告诉用户,在Alfresco结账中翻译的操作必须在一小时内完成。然后,您可以配置一个 cron 作业来运行每个可以运行脚本的 hor,如下所示:
var nodes = search.query("ASPECT:"cm:workingcopy" AND @cm:created:${luceneDateRange(today, "-P1H")}");
for each (n in nodes) {
n.remove();
}