Как получить все версии документа с помощью SQL-запросов в Filenet P8?

#sql #filenet-p8 #filenet #filenet-content-engine

#sql #filenet-p8 #filenet #filenet-content-engine

Вопрос:

Я ищу способ повторить попытку и при необходимости удалить все документы, расположенные внутри дерева данного корневого каталога, со всеми их версиями, а не только с текущей.

Самым простым способом может быть SQL-запрос с пакетным удалением. Поскольку предыдущие версии документа не хранятся в папке, я решил сделать это следующим образом:

  • Выполните SELECT запрос к классу Document
  • Добавьте a LEFT JOIN между версией документа ( Document AS doc ) и другими версиями ( Document AS doc2 ), используя ключ version_series .
  • Фильтр для получения только текущей версии из других версий ( doc2.IsCurrentVersion = true )
  • Файл для получения только документов, текущая версия которых хранится в данном дереве папок ( INSUBFOLDER clause )

Дополнительный шаг:

  • Левый присоединяется к ReferentialContainmentRelationShip Folder классам и, чтобы получить имя пути к папке текущей версии документа

Окончательный запрос выглядит следующим образом:

 SELECT doc.this,
       doc.majorversionnumber AS "MAJV",
       doc.minorversionnumber AS "MINV",
       doc.IsCurrentVersion AS "Is Current",
       doc2.This AS "Current version",
       f.pathname AS "Current version folder"
FROM ((Document doc
       LEFT JOIN Document doc2 ON
                 doc2.VersionSeries = doc.VersionSeries)
       LEFT JOIN ReferentialContainmentRelationShip rcr ON
                 doc2.VersionSeries = rcr.VersionSeries)
LEFT JOIN Folder f ON f.This = rcr.tail
WHERE doc2.IsCurrentVersion = true AND
      doc2.this INSUBFOLDER '/path/to/a/folder'
ORDER BY doc2.This
 

Является ли это хорошим и не излишним способом достижения цели?

Ответ №1:

Удаление документа приведет к удалению всех версий. Вам нужно будет понизить статус, чтобы просто удалить текущую версию.