Factory.Folder.fetchInstance方法不使用路径

时间:2017-05-04 09:32:29

标签: java filenet-p8 filenet-content-engine

在我当前的项目中使用Filenet P8 Content Platform Engine 5.2.1和WebSphere 8.5.5.3,Eclipse Mars 4.5.2和Apache Maven 3.3.1

我使用以下代码获取连接对象:

Connection connection = Factory.Connection.getConnection(url);
Subject subject = UserContext.createSubject(connection, username, password, null);
UserContext context = UserContext.get();
context.pushSubject(subject);

其中,用户名为p8admin,对象存储方式为:

Domain domain = Factory.Domain.fetchInstance((com.filenet.api.core.Connection) conn, null, null);                   
objectStore = Factory.ObjectStore.fetchInstance(domain, objectStoreName, null);

使用fetchInstance方法从其路径获取文件夹时,使用以下代码:

String folderPath = "/Lotto L02‎/Amministrazione AMM_000072_00001";
PropertyFilter pf = new PropertyFilter();    
pf.addIncludeProperty(new FilterElement(null, null, null, PropertyNames.PERMISSIONS, null));
Folder folder = Factory.Folder.fetchInstance(objectStore, folderPath, pf);

如果我使用folderID一切正常,而使用folderPath它不起作用,获取:

  

com.filenet.api.exception.EngineRuntimeException:FNRCE0051E:   E_OBJECT_NOT_FOUND:找不到请求的项目。文件夹/乐透   未找到L02 / Amministrazione AMM_000072_00001。 errorStack = {at   com.filenet.engine.retrieve.FolderCache.getFolderId(FolderCache.java:515)   在   com.filenet.engine.retrieve.IndependentClassRetriever.getObjectIdForPath(IndependentClassRetriever.java:936)   在   com.filenet.engine.retrieve.IndependentClassRetriever.getObjectByPath(IndependentClassRetriever.java:867)   在   com.filenet.engine.retrieve.IndependentClassRetriever.getObject(IndependentClassRetriever.java:815)   在   com.filenet.engine.retrieve.IndependentClassRetriever.getObject(IndependentClassRetriever.java:749)   在   com.filenet.engine.retrieve.IndependentClassRetriever.getObject(IndependentClassRetriever.java:362)   在   com.filenet.engine.jca.impl.RequestBrokerImpl.getObjects(RequestBrokerImpl.java:913)   在   com.filenet.engine.jca.impl.RequestBrokerImpl.getObjects(RequestBrokerImpl.java:816)   ...

该文件夹位于Object Store的根目录中,安全性设置如下:

Folder security

我做错了什么?

1 个答案:

答案 0 :(得分:1)

FileNet为您提供了一个非常简洁明了的错误消息:

  

找不到请求的项目。找不到文件夹/乐透L02 / Amministrazione AMM_000072_00001。

这可能是因为您正在查找错误的域,objectstore,或者您没有权限读取该文件夹。也许您正在尝试获取尚未持久保存到objectstore的文件夹。

无论如何,我认为您提供的代码没有任何问题;但是,由于信息有限,我只能假设从FileNet连接的角度来看该文件夹不存在