0

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

4

2 回答 2

1

类具有 guid (Id),FileNet 提供的(如“文档”或“自定义对象”)将具有在对象存储中完全相同的 guid。

类(对象)的实例,也有 guid (Id)。文档对象(文档类的实例)将(几乎)始终是唯一的(Id,而它们是可版本化的对象,因此也包含“版本系列”guid)。

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

FileNet 有很多方法可以返回一个文档。您可以使用 SQL 语法并使用 guid 返回一个文档对象,执行类似“Select * from Document where Id = 'guid'”之类的操作。您还可以执行类似的操作

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

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

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

于 2016-05-04T13:27:54.837 回答
1
  1. 是否有可能GUID跨对象存储重复?

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

在 v5.2.1 中,使用了一种新算法来生成Id具有随机部分的基于混合时间和计数器的部分。Id我相信这将完全增加来自不同对象存储的对象发生相同事件的可能性。

但是,如果您使用 FileNet 部署管理器进行迁移,它可以让您为要迁移的对象保留相同的 ID。

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

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

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

于 2016-06-04T18:44:09.997 回答