Невозможно разблокировать документ Alfresco с помощью CMIS

Я использую CMIS для внесения изменений в документ alfresco, мне нужно добавить новый аспект в документ, но я сталкиваюсь:

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");
            }
        }

person Srikanth Josyula    schedule 16.07.2020    source источник


Ответы (2)


Какую версию Alfresco и CMIS вы используете? Похоже, вы используете JAR-файл расширения Alfresco CMIS, но вам вообще не следует его использовать, если вы используете Alfresco 5.2 (или выше) и CMIS 1.1.

Если вы используете CMIS 1.1, способ удаления аспекта состоит в том, чтобы удалить имя аспекта из массива значений в массиве cmis:secondaryObjectTypeIds, а затем обновить свойства усеченным списком аспектов.

С учетом всего сказанного это просто удалит блокируемый аспект из документа. Вы пытаетесь фактически разблокировать документ, а не удалить его возможность блокировки/разблокировки. Таким образом, вместо того, чтобы пытаться напрямую манипулировать аспектом, вам следует просто вызвать метод cancelCheckout(), если вы хотите разблокировать документ, например:

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

Очевидно, вам нужно будет использовать учетные данные кого-то, у кого есть разрешения на это.

person Jeff Potts    schedule 07.08.2020
comment
Я использую alfresco 5.2 и открытый cmis jar, с приведенным выше кодом я получаю конфликт обновлений: 07128818 Невозможно выполнить операцию, так как узел (id: 494a290f-9bce-4d8a-9368-4faf7e8c9bcb) заблокирован. даже удаление аспекта для вторичных объектов дает ту же ошибку - person Srikanth Josyula; 12.08.2020
comment
Подтвердите, что вы удалили JAR-файл расширения Alfresco CMIS из своих зависимостей, а также опубликуйте URL-адрес службы CMIS, которую вы используете. - person Jeff Potts; 12.08.2020

Используйте LockService.

lockService.unlock(nodeRef узла для разблокировки)

person dhia foudhaili    schedule 29.07.2020
comment
я не смог найти службу блокировки для объекта CMIS, не могли бы вы помочь мне с образцом фрагмента - person Srikanth Josyula; 03.08.2020