1

我目前正在使用 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);

我希望新创建的文件夹名称“TestFolder”具有与指定的 OBJECT_ID 匹配的 nodeRef。然而,Alfresco 仍然会生成一个不同的唯一 nodeRef。

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

4

3 回答 3

1

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

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

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

于 2017-03-30T14:17:46.660 回答
1

我会先说 - 没有公共 API 是有原因的!你真的不应该在正常使用中这样做......

如果你想创建一个具有众所周知的节点引用的节点,你应该创建一个 ACP 文件并引导它。这就是 Alfresco 创建一些众所周知的节点的方式,例如rendering_actions_spaceat/app:company_home/app:dictionary/app:rendering_actions和 noderef workspace://SpacesStore/rendering_actions_space。请参阅github 上的 Alfresco 源代码,了解如何执行此操作

如果您确实需要创建具有特定 noderef 的节点(通常不需要),您可以在创建节点时将该属性作为ContentModel.PROP_NODE_UUID属性的一部分传递给NodeService新节点引用的 ID 部分。一般来说,你不应该这样做!

于 2019-03-12T10:44:49.667 回答
0

实际上,您可以编写 Java 类并在创建节点时为其提供属性。如果你提供 node-uuid,node 将被创建,NodeRef 基本上由 storeref 和 node-uuid 组成。

于 2019-11-06T13:28:22.437 回答