是否可以在具有特定NodeRef的露天中创建节点?

问题描述 投票:1回答:2

我目前正在使用openCMIS在Alfresco中创建一个节点。我想指定新制作的内容使用特定的nodeRef id。例如:

工作区:// 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”有一个与指定的OBJECT_ID匹配的nodeRef。然而,Alfresco仍然生成不同的唯一nodeRef。

有没有办法在Alfresco中创建内容时指定nodeRef?

java alfresco cmis opencmis nodereference
2个回答
1
投票

不,您无法设置自己的节点参考。这是一个实现细节,从理论上讲,你不应该关心。

但是,您可能有正当理由(例如,从现有存储库导入数据?)。如果由于某种原因需要保留此节点引用,请考虑将此noderef存储为单独的元数据属性。

您可能想要提交一个单独的问题,更详细地解释您为什么要这样做。


1
投票

我将在前言中说 - 由于某种原因,没有公共API!你真的不应该在正常使用中这样做......

如果要创建具有众所周知的节点引用的节点,则应创建一个ACP文件并将其引导到。这就是Alfresco创建一些众所周知的节点的方式,例如rendering_actions_space中的/app:company_home/app:dictionary/app:rendering_actions和noderef workspace://SpacesStore/rendering_actions_space。请参阅here in the Alfresco source code on github了解如何做到这一点

如果你真的真的需要创建一个具有特定noderef的节点,你通常不需要,你可以将ContentModel.PROP_NODE_UUID属性传递给NodeService,作为创建节点时属性的一部分,如果可能的话,这将被用于设置新noderef的ID部分。一般来说,你不应该这样做!

© www.soinside.com 2019 - 2024. All rights reserved.