Можно ли создать узел под открытым небом с конкретным NodeRef?

В настоящее время я использую openCMIS для создания узла внутри Alfresco. Я хочу указать, что вновь созданный контент использует определенный идентификатор nodeRef. Например:

Рабочая область://SpacesStore/6e619192-61c0-46fc-85c1-81badbb9b93e

В настоящее время у меня есть этот код CMIS:

Map<String, Object> properties = new HashMap<String, Object>();
properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
properties.put(PropertyIds.NAME, "TestFolder");
properties.put(PropertyIds.OBJECT_ID, "workspace://SpacesStore/6e619192-61c0-46fc-85c1-81badbb9b93e");
folder.createFolder(properties);

Я хочу, чтобы у вновь созданной папки Names "TestFolder" был nodeRef, соответствующий указанному OBJECT_ID. Однако Alfresco по-прежнему генерирует другой уникальный nodeRef.

Есть ли способ указать nodeRef при создании контента в Alfresco?

1 ответ

Решение

Нет, невозможно установить собственную ссылку на узел. Это деталь реализации, которая, теоретически, вам не нужна.

Тем не менее, у вас может быть веская причина для этого (например, импорт данных из существующего хранилища?). Если по какой-либо причине вам необходимо сохранить ссылку на этот узел, рассмотрите возможность сохранения этого noderef как отдельного свойства метаданных.

Вы можете подать отдельный вопрос, объясняющий более подробно, почему вы хотите сделать что-то подобное.

Я предвосхищу это словами: по какой-то причине не существует публичного API для этого! Вы действительно не должны делать это при обычном использовании...

Если вы хотите создать узел с общеизвестной ссылкой на узел, вы должны создать файл ACP и загрузить его. Это то, как Alfresco создает некоторые хорошо известные узлы, такие как rendering_actions_space в /app:company_home/app:dictionary/app:rendering_actions с noderef workspace://SpacesStore/rendering_actions_space, Смотрите здесь, в исходном коде Alfresco на github, чтобы узнать, как это сделать.

Если вам действительно нужно создать узел с определенным узлом, чего обычно нет, вы можете передать ContentModel.PROP_NODE_UUID собственность на NodeService, как часть свойств при создании узла, и, если возможно, это будет использоваться для установки части идентификатора нового noderef. В общем, вы не должны этого делать!

Фактически, вы можете написать класс Java и предоставить свойства для узла при его создании. Если вы предоставите node-uuid, node будет создан с ним, а NodeRef состоит в основном из storeref и node-uuid.

Другие вопросы по тегам