我是从Java访问FileNet CE的新手。
通过测试程序,我可以连接,创建文件夹,上传文件并检索列表。
现在,我需要在ObjectStore中找到一个文件夹。也就是说,给定文件夹内的文件夹层次结构: 资料夹1 -文件夹1a -文件夹1b ---- Folder1b1 ---- Folder1b2 -Folder1c ---- Folder1c1 ---- Folder1c2 资料夹2 ...
如何搜索具有给定名称的文件夹?可能是N级深。
类似地,如何使用名称中的通配符进行搜索?
类似地,我创建了文件夹的子类(PersonnelFolder),并为其提供了一些属性(人员ID,部门等)。如何搜索人员ID?即在给定类的对象中搜索属性?
答案 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);
}
希望这会有所帮助。