GUID 跨 FileNet CE 5.2 中的对象存储是唯一的吗?

Are GUID across Object Stores in FileNet CE 5.2 unique?

我有一个要求,我需要在对象存储中仅使用 GUID 搜索文档。 1. GUID 是否可能在 Object Store 中重复? 2. 遇到GUID重复的情况,如何获取文档内容?

类 有 guids (Id),FileNet 提供的 classes 像 "Document" 或 "Custom Object" 将有一个GUID 在对象存储中完全相同。

classes(对象)的实例,也有 guids(Id)。 文档对象(class 文档的实例)将(几乎)始终是唯一的(Id,而它们是 Versionable 对象,因此也包含 "Version Series" guid)。

如果您要使用 FileNet 部署管理器将文档对象从一个对象存储部署到另一个对象存储,那么您可以在两个不同的对象存储中保持相同的 id guid,从而产生相同的 guid。这是唯一一种你最终会得到两个具有相同 Object_Id... 的文档对象的情况。故意这样做。

FileNet 有很多方法来 return 文档。 您可以使用 SQL 语法和 return 文档对象,使用 guid 执行类似 "Select * from Document where Id = 'guid'" 的操作 你也可以做类似

"Document doc = Factory.Document.fetchInstance (ObjectStore, Id, PropertyFilter)"

在第二种情况下,您需要已经知道记录包含在哪个 ObjectStore 中。

很有可能,如果您能够找到记录的 Id,那么您应该知道 ObjectStore。

  1. GUID 是否可能在对象存储中重复?

顾名思义,全局唯一标识符(GUID)是唯一的。这里的范围 'global' 仅限于对象存储。所以,是的。当您处理多个对象存储时,您可能会遇到具有相同 GUID 但属于不同对象存储的对象的情况。但是,如果您让 FileNet 为您生成 GUID,因为 FileNet 随机生成 Id,则这种情况极不可能发生。

在 v5.2.1 中,使用了一种新算法来生成 Id 单调混合基于时间和计数器的部分以及随机部分。我相信这将完全提高来自不同对象存储的对象出现相同 Id 的几率。

但是,如果您使用 FileNet Deployment Manager 进行迁移,它可以让您为正在迁移的对象保留相同的 ID。

  1. GUID 重复的情况下,如何检索文档内容?

只有当您的搜索范围涉及多个对象存储并且您的 SQL 带有 where 子句 "Id={....}" returns 一个 DocumentSet 包含 2 个实例(如果您是使用 MergeMode.UNION)。如果您知道要从哪个对象存储中获取文档,您就会知道要检索哪个实例的内容。

如果您的搜索范围仅涉及一个对象存储,那么对于给定的 GUID,您只会找到一个 Document 实例。