Контроль версий

Версии документов WebDAV

Экран WebDAV document versions позволяет управлять версиями документа, если для него включено версионирование.

Есть два основных способа открыть экран WebDAV document versions:

  1. С помощью компонента WebdavDocumentUploadField, нажав на ссылку, отображающую номер версии документа.

    link for open versions
  2. С помощью кнопки Manage versions на экране WebDAV Documents.

После выполнения любого из этих действий откроется диалоговое окно WebDAV document versions.

web dav document versions

Диалоговое окно WebDAV document versions поддерживает следующие операции:

  1. Создание новой версии документа: нажатие кнопки Upload позволяет выбрать файлы для загрузки в систему. Загруженные файлы будут пронумерованы в соответствии с номером последней версии документа, а номера новых версий будут отмечены символом * — это означает, что они загружены, но еще не связаны с документом. Номера версий обновляются после сохранения изменений. Если вы закроете диалоговое окно без сохранения, все версии, отмеченные символом *, будут удалены после запуска задачи WebdavDocumentVersionsCleaningJob.

  2. Создание новой версии документа на основе другой версии: выберите версию документа и нажмите кнопку Copy to head, чтобы скопировать ее и присвоить ей номер в соответствии с номером последней версии документа. Номера новых версий отмечаются символом * — это означает, что они загружены, но еще не связаны с документом. Номера версий обновляются после сохранения изменений. Если вы закроете диалоговое окно без сохранения, все версии, отмеченные символом *, будут удалены после запуска задачи WebdavDocumentVersionsCleaningJob.

  3. Открытие документа для редактирования: выберите версию документа и нажмите кнопку Open, чтобы открыть документ для редактирования. Каждый раз при сохранении документа во внешнем приложении новая версия документа отправляется в базу данных. Используйте кнопку Refresh, чтобы обновить список версий документа, отображаемый в диалоговом окне WebDAV document versions.

    Нажатие кнопки Refresh удаляет все несохраненные версии документа. Поэтому, если версия документа была скопирована, но не сохранена, изменения будут отменены.
  4. Открытие документа для чтения (только для чтения): чтобы открыть документ для чтения, нажмите на ссылку с именем файла.

  5. Скачивание ZIP-архива с одной или несколькими версиями документа: кнопка Download предоставляет два варианта скачивания выбранных документов/версий. Первый вариант позволяет скачать документы как отдельные файлы. Опция Download as ZIP позволяет поместить все выбранные документы в ZIP-архив и скачать его. Для удобства имена файлов содержат суффиксы -v с соответствующими номерами версий, например example-v3.docx, document-v1.docx.

Политики разрешения конфликтов

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

Например, рассмотрим сценарий, когда два пользователя открывают один и тот же документ в WebDAV document versions и добавляют несколько новых версий. Первый пользователь завершает работу над своими версиями и сохраняет изменения. Затем второй пользователь делает то же самое. В результате база данных содержит версии, созданные обоими пользователями. Однако каждый пользователь видит в WebDAV document versions только свои собственные версии.

Такая ситуация может привести к проблемам с порядком и сохранением этих конфликтующих версий документа. Для разрешения таких конфликтов можно использовать политики, описанные ниже.

По умолчанию применяется RejectMergePolicy.

RebaseMergePolicy

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

CancelMyMergePolicy

Если версии документа изменились во время работы в WebDAV document versions, все непостоянные версии (отмеченные символом *) удаляются.

CancelTheirMergePolicy

Если версии документа изменились во время работы в WebDAV document versions, все версии, отмеченные символом , сохраняются вместо тех, что были добавлены в *WebDAV document versions.

RejectMergePolicy

При возникновении конфликта отображается предупреждение, и все новые версии отменяются.

Переопределение политики разрешения конфликтов по умолчанию

Чтобы переопределить политику разрешения конфликтов по умолчанию, объявите бин типа DefaultMergePolicy в классе конфигурации Spring. Этот бин должен предоставлять требуемую политику слияния. Например:

@Bean
public DefaultMergePolicy defaultMergePolicy() {
    return RebaseMergePolicy::new;
}