1

我正在使用 CMIS 对露天文档进行更改,我需要向文档添加新方面,但我面临:

org.apache.chemistry.opencmis.commons.exceptions.CmisUpdateConflictException:更新冲突:06160811 由于节点(id:88289ea7-16b7-40ff-938b-b2888ef5bca5)被锁定,因此无法执行操作。

下面是我试图解锁文档的代码,但它不成功。请建议使用 CMIS 解锁锁定文档的其他替代方法

       for (QueryResult result : results) {
            String objectId = result.getPropertyValueByQueryName(PropertyIds.OBJECT_ID);
            AlfrescoDocument document = (AlfrescoDocument) session.getObject(session.createObjectId(objectId));
            if (document != null) {
                if(document.hasAspect("P:cm:lockable")) {
                    System.out.println(document.getName());
                    document.removeAspect("P:cm:lockable");
                }
            } else {
                System.out.println("Document is null");
            }
        }
4

2 回答 2

1

您使用的是什么版本的 Alfresco 和 CMIS?看起来您可能正在使用 Alfresco CMIS 扩展 JAR,但如果您使用的是 Alfresco 5.2(或更高版本)和 CMIS 1.1,则根本不应该使用它。

如果您使用的是 CMIS 1.1,删除方面的方法是从 cmis:secondaryObjectTypeIds 数组中的值数组中删除方面的名称,然后使用修剪后的方面列表更新属性。

综上所述,这只会从文档中删除可锁定的方面。您正在尝试实际解锁文档,而不是删除其被锁定/解锁的能力。因此,如果您想解锁文档,而不是尝试直接操作方面,您应该调用 cancelCheckout(),例如:

    Document doc = (Document) getSession().getObjectByPath(filePath);
    doc.cancelCheckOut();

显然,您需要使用有权执行此操作的人的凭据。

于 2020-08-07T18:51:50.273 回答
0

使用LockService

lockService.unlock("要解锁的节点的nodeRef")

于 2020-07-29T16:51:55.390 回答