Поиск иерархии папок в FileNet для конкретной папки - PullRequest
1 голос
/ 12 мая 2019

Я новичок в доступе к FileNet CE из Java.

Из моей тестовой программы я могу подключаться, создавать папки, загружать файлы и получать список.

Теперь мне нужно найтипапка в ObjectStore.То есть, учитывая иерархию папок в папках: Папка1 - Папка1a - Папка1b ---- Папка1b1 ---- Папка1b2 - Папка1c ---- Папка1c1 ---- Папка1c2 Папка2 ...

Как мне искать папку по названию?Глубина может быть N уровней.

Точно так же, как мне искать, используя подстановочные знаки в имени?

Точно так же я создал подкласс папки (PersonnelFolder) и дал ему некоторые атрибуты(Идентификационный номер, отдел и т. Д.).Как мне искать идентификатор персонала?т.е. поиск по свойствам внутри объектов данного класса?

1 Ответ

1 голос
/ 16 мая 2019

Поиск по Документации , здесь нет примеров, только фрагмент кода, который обращается к конкретным путям. Как это:

Получить родительскую папку подпути:

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

Надеюсь, это поможет.

...