在FileNet中搜索特定文件夹的文件夹层次结构

时间:2019-05-12 10:06:34

标签: filenet-p8 filenet-content-engine

我是从Java访问FileNet CE的新手。

通过测试程序,我可以连接,创建文件夹,上传文件并检索列表。

现在,我需要在ObjectStore中找到一个文件夹。也就是说,给定文件夹内的文件夹层次结构: 资料夹1 -文件夹1a -文件夹1b ---- Folder1b1 ---- Folder1b2 -Folder1c ---- Folder1c1 ---- Folder1c2 资料夹2 ...

如何搜索具有给定名称的文件夹?可能是N级深。

类似地,如何使用名称中的通配符进行搜索?

类似地,我创建了文件夹的子类(PersonnelFolder),并为其提供了一些属性(人员ID,部门等)。如何搜索人员ID?即在给定类的对象中搜索属性?

1 个答案:

答案 0 :(得分:1)

Documentation上进行搜索,没有关于它的示例,只是针对特定路径的代码片段。 像这样:

获取子路径的父文件夹:

String childFolderPath = "/Loans/MyLoans";
Folder currentFolder = Factory.Folder.fetchInstance(os, childFolderPath, null);
Folder parent = currentFolder.get_Parent();

获取直接包含在路径中的文件夹

String folderPath = "/Loans";
Folder currentFolder = Factory.Folder.fetchInstance(os, folderPath, null);
FolderSet childFolders = currentFolder.get_SubFolders();

顺便说一下,通过FEM进行研究,可以很容易地建立一个只处理部分名称的sql。像这样:

SELECT * FROM [Folder] WHERE ([FolderName] like '%Folder1a%')

类似于自定义元数据:

SELECT * FROM [YourFolderSubType] WHERE ([YourCustomAttribute] = 'yourValue')

然后,访问属性PathName将为您提供完整的路径。或者,您也可以只检索其ID以便从中获取Folder对象。

您可以尝试从API执行类似的查询,然后将每个结果转换为Folder对象以便对其进行处理。

示例(未经测试):

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();
    row.getProperties().getStringValue("ID");
    com.filenet.api.core.Folder folder = Factory.Folder.fetchInstance(os, id, null);
}

希望这会有所帮助。

相关问题