5.12. Версионирование¶
Хранилище векторных геоданных в NextGIS Web поддерживает версионирование — механизм накопления истории всех изменений, происходящих с объектами векторных слоёв.
Общая идея версионирования заключается в том, что при изменении, а также создании и удалении объектов, происходит регистрация этого изменения (кто и когда его осуществил), а состояние базы данных на момент до изменения специальным образом сохраняется.
В практическом смысле для администратора NextGIS Web это означает возможность:
Узнать время и автора любого изменения в векторном слое;
Узнать как, когда и кем и менялись атрибуты или пространственное положение объекта в векторном слое;
Получить состояние векторного слоя на любой момент времени в прошлом, откатить ошибочные изменения;
Получить список всех правок определенного автора;
Получить список всех правок за определенный период, например за день или с момента последнего обновления связанной базы данных
и так далее.
Регистрируются изменения, связанные как с атрибутивными, так и с пространственными свойствами объектов.
Версионирование по умолчанию отключено. Его можно включить для отдельного ресурса типа “Векторный слой”, где это требуется или для всех создаваемых векторных слоёв. Модуль NextGIS Connect позволяет также автоматически включать версионирование для всех загружаемых в QGIS слоёв. Накопление изменений активируется с момента включения версионирования, все события, произошедшие со слоем до этого, нигде не регистрируются.
Важно
При отключении версионирования вся накопленная информация об истории изменений слоя удаляется.
5.12.1. Версионирование в графическом интерфейсе NextGIS Web¶
На данный момент в графический интерфейс NextGIS Web вынесено:
Включение и выключение версионирования в свойствах векторного слоя;
Включение версионирование объектов по умолчанию для всей Веб ГИС;
Отображение информации о версионировании на странице ресурса Векторный слой;
Дополнительное виртуальное поле “Последнее изменение” в таблице атрибутов версионируемого слоя. Оно позволяет для каждого объекта слоя увидеть автора и время последнего изменения;
Просмотр истории версионируемого слоя¶
Чтобы увидеть историю изменений слоя, откройте страницу ресурса и в панели справа нажмите История изменений.
Откроется таблица:
Рис. 5.155. История изменений¶
Для каждой зафиксированной версии слоя доступна следующая информация:
Дата и время внесения изменения;
Имя пользователя, внесшего изменения;
Статистика изменённых объектов: сколько объектов добавлено, изменено, удалено, восстановлено.
Нажмите на + слева от строки, чтобы развернуть список изменённых объектов. Номер объекта - это его fid.
Рис. 5.156. Детали внесённых изменений¶
Меню из трёх точек в правом конце строки позволяет:
Восстановить слой до выбранной версии;
Создать копию слоя, соответствующую его состоянию в выбранной версии.
Откат версионируемого слоя к версии¶
Слой с включённым версионированием можно вернуть к любому из предыдущих записанных состояний.
Откройте страницу ресурса слоя. В панели справа нажмите История изменений.
В таблице изменений найдите строку, описывающую последние изменения, которые вы хотите оставить. В правом конце этой строки нажмите три точки для вызова меню и выберите Восстановить до выбранной версии.
Рис. 5.158. Откат к выбранной версии слоя¶
Появится всплывающее окно, где необходимо подтвердить действие. Слой вернётся к той версии, которая была выбрана.
В историю изменений будут записаны соответствующие действия, отменяющие изменения. Если были добавлены объекты, запишется их удаление, если наоборот, удалены - восстановление.
Вся предыдущая история слоя также сохранится и вы можете вернуть в том числе ту версию, с которой откатывали к предыдущей.
Рис. 5.159. Откат к версии Администратора зафиксирован в истории. Объект, добавленный пользователем Myusername, был удалён¶
Создание копии определенной версии слоя¶
Механизм версионирования позволяет как отменить последние изменения, откатив слой к одной из предыдущих версий, так и сохранить в отдельный ресурс состояние слоя на момент одной из зафиксированных в истории версий.
Откройте страницу ресурса слоя. В панели справа нажмите История изменений.
В таблице изменений найдите строку, описывающую последние изменения, которые вы хотите оставить. В правом конце этой строки нажмите три точки для вызова меню и выберите Создать копию.
Рис. 5.160. Создание копии версии слоя¶
Во всплывающем окне выберите группу ресурсов, в которой будет сохранена копия слоя. По умолчанию выбрана группа, в которой расположен исходный слой. Нажмите
, чтобы выбрать другую папку.
Также вы можете задать имя для слоя, по умолчанию к имени текущего слоя добавляется слово «Копия».
Рис. 5.161. Расположение и название копии¶
Нажмите Создать копию для завершения.
Включение версионирования по умолчанию¶
Если вы хотите, чтобы для всех векторных слоёв, создаваемых в вашей Веб ГИС, сохранялась история изменений, вы можете сделать версионирование включённым по умолчанию.
Для этого зайдите в Панель управления и выберите пункт «Версионирование объектов».
На странице настройки версионирования переведите переключатель в положение «вкл» и нажмите Сохранить.
Рис. 5.162. Версионирование объектов по умолчанию выключено¶
После этого для всех новых слоёв, создаваемых через веб-интерфейс или добавляемых из QGIS при помощи NextGIS Connect, версионирование будет включено.
Также вы можете включать и выключать версионирование для отдельных слоёв в настройках слоя.
5.12.2. Версионирование в программном интерфейсе NextGIS Web¶
Основные возможности получения информация о версионируемых слоях сейчас доступны только в API NextGIS Web. Через запросы к API можно получать состояния слоёв и объектов на разные периоды времени, разницу между разными состояниями и так далее. Примеры методов API для работы с версионируемыми слоями:
/api/resource/{id}в общем обращении к слою доступна информация о состоянии версионирования и текущей версии данных (свойство versioning)/api/resource/{id}/feature/с указанием версии слоя для получения его состояния в заданной версии/api/resource/{id}/feature/changes/checkдля получения информации о разнице между двумя заданными версиями слоя/api/resource/{id}/feature/version/{vid}для получения метаданных о заданной версии
5.12.3. Использование версионирования в интеграции с QGIS¶
Версионирование активно используется в NextGIS Connect — модуле интеграции NextGIS Web с настольной ГИС QGIS. При включенном версионировании QGIS может получать информацию о всех изменениях, произошедших со слоем, хранящимся в NextGIS Web, за время с последнего обращения. Это позволяет, в частности, вести одновременное редактирование одного и того же слоя на сервере с разных рабочих станций QGIS одновременно.
С помощью NextGIS Connect можно включить версионирование объектов для загружаемых в QGIS векторных слоёв. Отройте настройки модуля, нажав на кнопку в панели или из главного меню перейдите в . В подразделе «Загрузка» активируйте пункт «Версионирование объектов для загружаемых векторных слоёв».
Рис. 5.163. Включение версионирования в настройках NextGIS Connect¶
Уже загруженных в QGIS слоёв это не коснётся, для них версионирование можно включить через веб-интерфейс.
