在 FileNet 中搜索文件夹层次结构以查找特定文件夹

Search folder hierarchy in FileNet for a particular folder

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

从我的测试程序,我可以连接、创建文件夹、上传文件和检索列表。

现在,我需要在 ObjectStore 中找到一个文件夹。也就是说,给定文件夹内文件夹的层次结构: 资料夹1 -- 文件夹1a -- 文件夹1b ---- 文件夹 1b1 ---- 文件夹 1b2 -- 文件夹1c ---- 文件夹1c1 ---- 文件夹1c2 资料夹2 ...

如何根据名称搜索文件夹?它可能有 N 层深。

同样,如何在名称中使用通配符进行搜索?

同样,我创建了一个文件夹(PersonnelFolder)的子class,并赋予它一些属性(Personnel ID、Department 等)。如何搜索人员 ID?即在给定 class?

的对象内搜索属性

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);
}

希望对您有所帮助。