【问题标题】:Is it possible to create a node in alfresco with a specific NodeRef?是否可以使用特定的 NodeRef 在露天创建节点?
【发布时间】:2017-03-29 16:12:16
【问题描述】:

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

workspace://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?

【问题讨论】:

  • 没有。但是 alfresco 内部使用一些代码来生成特定的 nodeid。您可以参考电子邮件模板和引导代码。

标签: java alfresco cmis opencmis nodereference


【解决方案1】:

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

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

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

【讨论】:

  • 如你所说。我想从已经存在的存储库中导入数据。有引用 nodeRefs 的第三方应用程序。因此,我想在迁移内容时保留相同的 nodeRefs
【解决方案2】:

我会先说 - 没有公共 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 部分。不过一般来说,你不应该这样做!

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多