我知道的唯一方法是迭代对象存储的属性模板,并通过比较符号名称和一些String来找到我需要的那个:
String propertySymName = "someName";
ObjectStore os = Factory.ObjectStore.fetchInstance(...); //assume object store is fetched correctly
String[] properties = {PropertyNames.PROPERTY_TEMPLATES};
os.fetchProperties(properties);
PropertyTemplateSet propertyTemplates = os.get_PropertyTemplates();
Iterator<?> iterator = propertyTemplates.iterator();
while (iterator.hasNext()) {
PropertyTemplate propertyTemplate = (PropertyTemplate) iterator.next();
String[] arg = {PropertyNames.SYMBOLIC_NAME};
propertyTemplate.refresh(arg);
if (propertyTemplate.get_SymbolicName().equals(propertySymName)) {
//do some stuff
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果对象存储库有很多属性模板,那么它可能会相当慢.有任何想法吗?我正在使用CE API 5.1
其中一个要求是用新内容更新文档也删除旧文档.文档ID和上一个文档的其他属性应该指向具有新内容的新文档.
有任何样本片段做同样的感谢.
其他一些团队正在调用我们的FileNet自定义应用程序来搜索文档.我相信有些用户正面临间歇性故障,因为我们正在获取门票(虽然没有用户报告此问题)以下错误,我尝试用不同的方案验证我们的服务,但他们都工作但我不知道是什么导致此错误.任何建议/帮助将不胜感激.
<stackTrace>
at com.filenet.apiimpl.transport.ejb.EJBSession.throwException(EJBSession.java:1122)
at com.filenet.apiimpl.transport.ejb.EJBSession.throwException(EJBSession.java:1045)
at com.filenet.apiimpl.transport.ejb.EJBSession$EJBImpl._getObjects(EJBSession.java:650)
at com.filenet.apiimpl.transport.ejb.EJBSession$EJBImpl.getObjects(EJBSession.java:575)
at com.filenet.apiimpl.transport.ejb.EJBSession.getObjects(EJBSession.java:471)
at com.filenet.apiimpl.util.SessionHandle.getObjects(SessionHandle.java:346)
at com.filenet.apiimpl.core.Session.callGetObjects(Session.java:132)
at com.filenet.apiimpl.core.Session.executeGetObject(Session.java:340)
at com.filenet.apiimpl.core.Session.getObject(Session.java:354)
at com.filenet.apiimpl.core.DispatchEntries.FetchObject_28(DispatchEntries.java:907)
at com.filenet.apiimpl.core.ObjectStoreImpl.fetchObject(ObjectStoreImpl.java:1643)
at com.filenet.api.core.Factory$ClassDescription.fetchInstance(Factory.java:21761)
at ecm.service.p8ceservices.implementation.integration.SearchP8ObjectAdapter.retrievePropertyDefinitions(SearchP8ObjectAdapter.java:352)
at ecm.service.p8ceservices.implementation.integration.SearchP8ObjectAdapter.integrate(SearchP8ObjectAdapter.java:158)
at ecm.service.p8ceservices.implementation.integration.ContentEngineAdapter.execute(ContentEngineAdapter.java:37)
</stackTrace>
</exception><exception name="java.lang.IndexOutOfBoundsException" message="Data to be copied (length 2124) exceeds space available (480)" sequence="0" guid="sfr2mx3l:jewe2wkf:00000000:00000121"><source class="com.ibm.rmi.util.buffer.SimpleByteBuffer" archive="" vendor="" version="" /><stackTrace>
at com.ibm.rmi.util.buffer.SimpleByteBuffer.write(SimpleByteBuffer.java:166) at com.ibm.rmi.iiop.ClientRequestImpl.reInvoke(ClientRequestImpl.java:489)
at com.ibm.rmi.corba.ClientDelegate.invoke(ClientDelegate.java:637) at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:1377)
at com.ibm.rmi.corba.ClientDelegate.invoke(ClientDelegate.java:695) at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:1407)
at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:484) at com.filenet.apiimpl.transport.ejbstubs._Engine_Stub.getObjects(Unknown Source)
at com.filenet.apiimpl.transport.ejb.EJBSession$EJBImpl._getObjects(EJBSession.java:638)</stackTrace>
Run Code Online (Sandbox Code Playgroud) 我正在尝试更改给定文档的类,下面是我使用的代码
Document p8Document = Factory.Document.getInstance(p8ObjectStore,
oldDocumentClassName, new Id(documentId));
p8Document.changeClass(newDocClassName);
p8Document.save(RefreshMode.REFRESH);
Run Code Online (Sandbox Code Playgroud)
执行代码后,我可以看到文档类正在成功更改。现在的问题是,如果我为相同的 guid 再次运行代码,下面的行将使用旧文档类名称再次获取文档。
Document p8Document = Factory.Document.getInstance(p8ObjectStore,
oldDocumentClassName, new Id(documentId));
Run Code Online (Sandbox Code Playgroud) 我正在使用 IBM FileNet CE API 5.1 并面临性能问题,因为循环中的额外刷新和大量迭代(25000+)。这是代码示例:
for (Document document : documents) {
ObjectStore objectStore = document.getObjectStore();
objectStore.refresh(); //round-trip
String symbolicName = objectStore.get_SymbolicName();
...
}
Run Code Online (Sandbox Code Playgroud)
问题是,刷新前的 objectStore 对象根本没有任何缓存属性,甚至没有对象标识(如果我有我可以创建对象存储缓存以避免在每次迭代中刷新)。
文档可能有不同的对象存储(我正在搜索多个对象存储)。
我已经得到了用于搜索文件夹和检索属性的代码。参考:在 FileNet 中搜索特定文件夹的文件夹层次结构
我正在尝试检索文件夹对象的类名,以便区分将存储在自定义文件夹中的不同类型的文档。
我遍历 Properties 集合,但类的名称不是属性。
String sqlStatement = "SELECT * FROM [Folder] WHERE ([FolderName] LIKE '%MyFolder%')";
SearchSQL sqlObject = new SearchSQL(sqlStatement);
RepositoryRowSet rowSet = searchScope.fetchRows(sqlObject, null, null, new Boolean(true));
Iterator iter = myRows.iterator();
while (iter.hasNext()) {
RepositoryRow row = (RepositoryRow) iter.next();
String folderID = row.getProperties().getIdValue("ID").toString();
}
Run Code Online (Sandbox Code Playgroud)
我试过 row.getClass() 但它只是返回: RepositoryRowImpl
我是Filenet的新手,我被要求用Java开发一个事件动作处理程序.
我正在尝试为jace.jar库定义一个Javadoc ,但没有成功.
有谁知道这个Javadoc的URL是什么?(我需要com.filenet.api包装)
我需要在 FileNet 中创建多内容文档。例如,假设我需要一个文档,其中包含一个 Word 文档、一个 JPEG 文件和一个 MP4 视频文件作为其内容。
任何帮助表示赞赏。谢谢!
我想删除当前版本中已设置特定属性的文档.如果已设置此属性,则需要删除该文档的所有版本.我当前搜索的实现IsCurrentVersion = TRUE and foo = 'bar'有一个问题,即只删除当前版本而不是旧版本.所以我假设我需要删除完整的VersionSeries?直到现在我用
doc.delete();
doc.save(RefreshMode.NO_REFRESH);
Run Code Online (Sandbox Code Playgroud)
我找到的每个文件.如何从系列中检索所有文档并将其删除?如果我将它添加到批处理中会更有效吗?
我正在开发一个需要从FileNet系统中提取文档的项目.我需要提取由Object_ID标识的文档并将它们存储在文件中.该系统在Windows下运行,并且正在使用Oracle 11G数据库.问题是:有没有办法使用直接数据库访问和SQL检索文档内容?我可以编写一个SQL查询,通过将其Object_ID作为参数传递来检索文档的二进制内容.谢谢
我有WAS 7和Filenet CE 5.1并且有麻烦.为什么WebSphere的线程会挂起.是JDBC驱动程序错误吗?
你能不能建议我.非常感谢!
[22.06.16 13:14:58:921 YEKT] 0000001d ThreadMonitor W WSVR0605W: Thread "WebContainer : 15" (00000047) was active for 631301 msec and can be hanged up. Total threads that can be hang up: 69.
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:140)
at com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:1782)
at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:4838)
at com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(IOBuffer.java:6150)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:402)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(SQLServerPreparedStatement.java:332)
at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.pmiExecute(WSJdbcPreparedStatement.java:942)
at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.execute(WSJdbcPreparedStatement.java:618)
at com.filenet.engine.dbpersist.DBExecutionElement.execute(DBExecutionElement.java:218)
at com.filenet.engine.dbpersist.DBExecutionContext.getNextResult(DBExecutionContext.java:106)
at com.filenet.engine.dbpersist.DBStatementList.executeStatements(DBStatementList.java:161)
at com.filenet.engine.persist.DBStatementList2.executeStatementsNoResult(DBStatementList2.java:57)
at com.filenet.engine.persist.IndependentPersister.executeChangeWork(IndependentPersister.java:409)
at com.filenet.engine.persist.IndependentPersister.executeChange(IndependentPersister.java:225)
at com.filenet.engine.persist.SubscribablePersister.executeChange(SubscribablePersister.java:172)
at com.filenet.engine.jca.impl.RequestBrokerImpl.executeChanges(RequestBrokerImpl.java:1266) …Run Code Online (Sandbox Code Playgroud) filenet-p8 ×9
filenet ×6
java ×3
corba ×1
filenet-cpe ×1
ibm-jdk ×1
javadoc ×1
jdbc ×1
websphere-7 ×1