2013-08-14 4 views
2

Я использую IBM FileNet CE API 5.1 и проблему с перфомансом из-за дополнительного обновления цикла с большим количеством итераций (25000+). Вот пример кода:Получение свойств хранилища объектов без дополнительного обратного прохода

for (Document document : documents) { 
     ObjectStore objectStore = document.getObjectStore(); 
     objectStore.refresh(); //round-trip 
     String symbolicName = objectStore.get_SymbolicName(); 

     ... 
} 

Проблема заключается в том, ObjectStore и объект, прежде чем обновление не имеет кэшированных свойств на всех, даже объект идентичности (если бы я мог создать кэш хранилища объектов, чтобы избежать освежать в каждой итерации) ,

Документы могут иметь разные хранилища объектов (я просматриваю несколько хранилищ объектов).

+0

Как именно вы извлекаете Объекты документов в список? – fnt

+0

Я использую метод SearchScope.fetchObjects (StoredSearch, ...). – sermolaev

ответ

3

Вы можете получить идентификатор объекта хранилища из ссылки на объект:

document.getObjectReference().getObjectStoreIdentity() 
0

Существует способ, чтобы получить объект идентификатор магазина через EngineObjectImpl.getObjectStoreReference():

GlobalIdentity objectStoreReference = ((EngineObjectImpl)object).getObjectStoreReference(); 
Id objectId = objectStoreReference.getObjectId(); 
+0

EngineObjectImpl не является частью общедоступного API. Использовать его небезопасно следует избегать. – fnt

+0

Это правда. Но есть ли у вас какие-либо предложения? API предоставляет вам только объект ObjectStore с пустым кешем (никаких свойств, даже guid). – sermolaev

+0

@sermolaev Это зависит от того, как вы получаете объект. Пожалуйста, см. Мой комментарий к вопросу. – fnt