【问题标题】:Uniqueness of Alfresco nodeREFAlfresco nodeREF 的唯一性
【发布时间】:2015-01-21 18:56:19
【问题描述】:

alfresco 文档节点是引用 ID、UID、UUID 还是 GUID?

我没有成功找到任何关于此的文档,但确实看到 AlfrescoOne 在其 Java 类之一中有一个 GUID 生成器。

【问题讨论】:

    标签: alfresco guid uuid alfresco-share uid


    【解决方案1】:

    是的,它们是独一无二的。通常它们看起来像这个工作区://SpacesStore/d0ab65f5-599c-439e-a87c-35eef61a0515

    【讨论】:

    • 是的,它在每个存储库中都是全局唯一的。 Repository 表示 Alfresco 数据库,无论文档被移动到哪里,您都可以始终使用此属性来引用文档。
    【解决方案2】:

    Alfresco NodeRefs 必须对于他们所居住的租户来说是唯一的。默认情况下,它们基于一种 GUID,但并非必须如此。如果你启动你的节点浏览器,你会看到有一些众所周知的节点引用,例如

    • workspace://SpacesStore/rendering_actions_space - /app:company_home/app:dictionary/app:rendering_actions
    • workspace://SpacesStore/publishing_root_space - /app:company_home/app:dictionary/app:publishing_root

    虽然大部分都是workspace://SpacesStore/88829143-8494-4cfe-99d6-6c7949aaa279

    因为那些众所周知的 noderefs 将出现在系统中的每个租户中,因此您知道 noderefs 只需要在租户内是唯一的,而在给定的安装中不一定是全局唯一的

    【讨论】:

      【解决方案3】:

      GUID.generate() 用于创建的所有新节点。在以编程方式创建 DataList 条目时,我不得不处理这个问题,其中每一行都必须有一个唯一的标识符。

      Alfresco,至少我的版本 (4.2) 使用的是 GUID.java 类,它在内部使用 org.safehaus.uuid.uuidgenerator

      尽管按照规范,由于相同的 GUID 而发生冲突的可能性实际上非常低,您应该查看 safehaus 的该类,以收集有关该 ID 的唯一性的信息。

      [更新]

      然而,只是为了强制执行其他人所说的,即 NodeRef 对于租户来说必须是唯一的,值得一提的是,无论 GUID 生成器的准确性如何,在某些情况下可以找到相同的节点 guid在多个安装中。

      例如,当开发一个使用boostrap data 将文件预加载到露天的AMP 时。 在这种情况下,至少在 Alfresco 4.2f 中,如果您想使用选项 REPLACE_EXISTINGUPDATE_EXISTING,那么您必须手动指定要在 AMP 上上传或替换的所有文件的 guid。然后将该 GUID 分配给创建的新节点。

      因此,如果您在不同的 Alfresco 安装中上传您的 AMP,那么您将在每个安装上拥有相同的 GUID。

      【讨论】:

      • 默认行为是生成 GUID,但这不是唯一的选择。您还可以拥有不基于 GUID 的特殊知名节点引用,例如 workspace://SpacesStore/rendering_actions_space
      • 是的,我知道,但我想他是在专门询问 GUID 节点参考。我稍后会写更多关于这个主题的文章。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多