Являются ли идентификаторы GUID в хранилищах объектов в FileNet CE 5.2 уникальными?

У меня есть требование, при котором мне нужно искать документы, используя только GUID в хранилищах объектов. 1. Возможно ли, что GUID дублируется в хранилище объектов? 2. В таком случае, когда GUID дублируется, как мне получить содержимое документа?


person Sourabh    schedule 02.05.2016    source источник
comment
Если я не ошибаюсь, GUID всегда уникален, но, по крайней мере, при работе с API у вас будет отдельное подключение к хранилищу объектов для каждого хранилища объектов, тогда у вас не будет этой проблемы.   -  person Robert vd S    schedule 04.05.2016


Ответы (2)


  1. Возможно ли, что GUID дублируется в хранилищах объектов?

Как следует из названия, глобальный уникальный идентификатор (GUID) уникален. Здесь область «глобальная» ограничена хранилищем объектов. Так да. Когда вы имеете дело с несколькими хранилищами объектов, вы можете столкнуться с ситуацией, когда объекты, имеющие одинаковые GUID, принадлежат разным хранилищам объектов. Однако эта ситуация маловероятна, если вы позволите FileNet сгенерировать GUID для вас, так как FileNet генерирует Id случайным образом.

В версии 5.2.1 новый алгоритм используется для монотонного генерирования Id, состоящего из смешанных частей времени и счетчика со случайной частью. Я полагаю, что это полностью уменьшит шансы иметь одинаковое Id появление для объектов из разных хранилищ объектов.

Однако если вы используете FileNet Deployment Manager для переноса, он позволяет сохранить один и тот же идентификатор для переносимых объектов.

  1. В таком случае, когда GUID дублируется, как мне получить содержимое документа?

Это произойдет только в том случае, если ваша область поиска включает несколько хранилищ объектов, а ваш SQL с предложением where "Id={....}" возвращает DocumentSet, содержащий 2 экземпляра (если вы используете MergeMode.UNION). Если вы знаете, из какого хранилища объектов вы хотите получить документ, вы будете знать, содержимое какого экземпляра вы хотите получить.

Если ваша область поиска включает только одно хранилище объектов, вы найдете только один экземпляр Document для заданного GUID.

person sin    schedule 04.06.2016

У классов есть guid (идентификатор), и предоставленные FileNet классы, такие как «Документ» или «Пользовательский объект», будут иметь guid, который будет одинаковым во всех хранилищах объектов.

Экземпляры классов (объектов) также имеют идентификаторы (id). Объекты документа (экземпляры класса Document) (почти) всегда будут уникальными (Id, тогда как они являются объектами с возможностью управления версиями и, следовательно, также содержат guid «Серия версий»).

Если бы вам нужно было развернуть объект Document из одного хранилища объектов в другое с помощью диспетчера развертывания FileNet, вы могли бы сохранить одинаковый id guid, что привело бы к одному и тому же guid в двух разных хранилищах объектов. Это единственный случай, когда вы получите два объекта документа с одним и тем же Object_Id... намеренно сделав это.

В FileNet есть много способов вернуть документ. Вы можете использовать синтаксис SQL и возвращать объект документа, используя guid, делая что-то вроде «Выбрать * из документа, где Id = 'guid'». Вы также можете сделать что-то вроде

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

Во втором случае вам нужно уже знать, в каком ObjectStore содержится запись.

Скорее всего, если вы сможете найти идентификатор записи, вы, вероятно, все равно должны знать ObjectStore.

person Christopher Powell    schedule 04.05.2016
comment
Я считаю, что GUID зависит от домена. У меня есть несколько хранилищ объектов в одном домене. Объект FileNet имеет одинаковые идентификаторы GUID, а также другие объекты будут иметь уникальные идентификаторы. - person Sourabh; 10.05.2016