Получение свойств хранилища объектов без дополнительного туда-обратно
Я использую 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 до обновления вообще не имеет никаких кэшированных свойств, даже идентификатора объекта (если бы я мог создать кэш хранилища объектов, чтобы избежать обновления в каждой итерации).
Документы могут иметь разные хранилища объектов (я ищу в нескольких хранилищах объектов).
2 ответа
Решение
Вы можете получить идентификатор хранилища объектов из ссылки на объект:
document.getObjectReference().getObjectStoreIdentity()
Есть способ получить идентификатор хранилища объектов через EngineObjectImpl.getObjectStoreReference():
GlobalIdentity objectStoreReference = ((EngineObjectImpl)object).getObjectStoreReference();
Id objectId = objectStoreReference.getObjectId();