在 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);
}
希望对您有所帮助。
我是从 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);
}
希望对您有所帮助。