无需额外往返即可获取对象存储属性
Posted
技术标签:
【中文标题】无需额外往返即可获取对象存储属性【英文标题】:Getting object store properties without additional round-trip 【发布时间】:2013-08-14 05:06:32 【问题描述】:我正在使用 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 对象根本没有任何缓存属性,甚至对象标识(如果我有我可以创建对象存储缓存以避免在每次迭代中刷新)。
文档可能有不同的对象存储(我正在搜索多个对象存储)。
【问题讨论】:
究竟如何将 Document 对象检索到列表中? 我正在使用 SearchScope.fetchObjects(StoredSearch, ...) 方法。 【参考方案1】:您可以从对象引用中获取对象存储的id:
document.getObjectReference().getObjectStoreIdentity()
【讨论】:
【参考方案2】:有一种方法可以通过EngineObjectImpl.getObjectStoreReference()获取object store id:
GlobalIdentity objectStoreReference = ((EngineObjectImpl)object).getObjectStoreReference();
Id objectId = objectStoreReference.getObjectId();
【讨论】:
EngineObjectImpl 不是公共 API 的一部分。应该避免使用它是不安全的。 确实如此。但是你有什么建议吗? API 只为您提供具有空缓存的 ObjectStore 对象(没有属性,甚至没有 guid)。 @sermolaev 这取决于您如何获取对象。请参阅我对问题的评论。以上是关于无需额外往返即可获取对象存储属性的主要内容,如果未能解决你的问题,请参考以下文章