Управление конфликтами версий ветви

Доступно с лицензией Standard или Advanced.

При согласовании именованной версии с версией по умолчанию будут найдены все возможные конфликты. Если в процессе согласования обнаруживаются конфликты, они изначально разрешаются в пользу редактируемой версии и могут быть просмотрены в виде Конфликты.

Конфликты возникают в следующих случаях:

  • Один и тот же объект обновляется в текущей версии, которая редактируется, и в целевой версии.
  • Один и тот же объект обновляется в одной версии и удаляется в другой.
  • Топологически связанный объект или класс отношений изменяется в текущей редактируемой версии и в целевой версии.

В виде Конфликты содержатся все конфликтующие классы объектов, а также их объекты и строки, которые находятся в конфликте. В версиях ветвей конфликты хранятся в в системной таблице GDB_CONFLICTS. Это позволяет просматривать конфликты по одному или, при необходимости, управлять конфликтами в течение нескольких сеансов редактирования, просматривать и разрешать конфликты, а также выходить и возвращаться позже, чтобы продолжить внесение изменений с помощью вида Конфликты.

Вид Конфликты позволяет выполнять следующее:

  • Определение полей или строк, участвующих в конфликте
  • Просмотреть конфликты
  • Пометить конфликты, как просмотренные или не просмотренные.
  • Разрешить конфликты путем указания того, какое представление следует использовать для замены пространственных объектов или атрибутов
Внимание:

При управлении конфликтами в течение нескольких сеансов редактирования все непросмотренные конфликты устраняются при выполнении второй операции согласования или последующей операции. Этот процесс удаляет историю разрешения конфликтов.

Закончив согласование и просмотр конфликтов, можно завершить процесс внесения изменений, закрепив изменения в целевой версии.

Откройте вид Конфликтов

Выполните следующие действия, чтобы открыть вид Конфликтов:

  1. На панели Содержание щелкните кнопку По источнику данных По источнику данных.
  2. Убедитесь, что вы подключены к именованной версии. Чтобы изменить версию, щелкните правой кнопкой мыши источник данных векторного веб-слоя ArcGIS Server и щелкните Изменить версию Изменить версию.
  3. Щелкните вкладку Версии на ленте.
  4. Выполните один из следующих вариантов, чтобы открыть вид Конфликты:
    • Щелкните кнопку Согласовать Согласование и завершите процесс согласования. Если во время согласования обнаруживаются конфликты, появляется запрос с вопросом, хотите ли вы просмотреть конфликты. При щелчке по кнопке Да открывается вид Конфликты.
      Предлагать просмотреть конфликты после согласования версий
    • Для дальнейшего просмотра и управления конфликтами после завершения согласования щелкните кнопку Менеджер конфликтов Менеджер конфликтов на вкладке Версионность.

Вид Конфликты можно закрепить в любой части приложения или расположить как плавающее окно. Этот позволяет взаимодействовать с видом Карта и одновременно просматривать и изучать данные.

Использование вида Конфликты

В виде Конфликты содержатся все конфликтующие классы объектов, а также их объекты и строки, которые находятся в конфликте. Конфликты организованы по источнику данных, классу, категории конфликтов и ObjectID. Рабочие области для всех карт в проекте перечислены в виде Конфликты. Классы конфликтов представляют собой векторные веб-слои конфликтов для всего сервиса.

Вид Конфликты состоит из трех основных разделов для работы с конфликтами. Список конфликтов содержит все классы конфликтов и конфликтующие объекты. Информационная сетка показывает атрибуты и значения для всех представлений конфликтующего объекта, выбранного из списка конфликтов. Вьюер Показать конфликты используется для просмотра и сравнения различных представлений при редактировании геометрии на карте.

Обратитесь к изображению и таблице ниже, чтобы просмотреть элементы вида Конфликтов:

Нумерованные секции и элементы версионного вида Конфликты

ЭлементОписание

1

Список конфликтов - раздел списка конфликтов содержит все классы конфликтов и конфликтующие объекты.

2

Информационная сетка - раздел информационной сетки показывает атрибуты и значения для всех представлений конфликтующего объекта.

3

Вьюер Показать конфликты - вьюера просмотра конфликтов открывает раздел в нижней части вида Конфликты. В нем можно просмотреть отображение конфликтов на карте, а также перемещаться и идентифицировать отображаемые пространственные объекты.

4

Фильтр просмотренных конфликтов - эта отметка в верхней части списка конфликтов фильтрует список, показывая только конфликты, которые не были рассмотрены.

5

Красный индикатор - красный индикатор слева от строки означает наличие конфликта. Например, если геометрия объекта редактировалась в каждой версии, рядом с полем Shape появится красная точка.

6

Показать всеПоказать все поля - позволяет просматривать все поля.

7

Показать конфликтыПоказывать только поля в конфликте - позволяет просматривать только конфликтующие поля.

8

Показать кредиты для сервисных слоев - щелчок по этому значку вызывает диалоговое окно со списком поставщиков и создателей базовой карты.

9

Инструменты навигации Показать конфликты - следующие инструменты позволяют перемещаться и управлять отображаемой версией, а также перемещаться в окнах отображения конфликтов:

  • Два ниспадающих меню, по одному для каждого окна отображения, позволяют изменить отображение, чтобы отобразить версии: Текущую, Целевую или Общую родительскую.

  • Приблизить Фиксированное увеличение - применяет фиксированное увеличение на карте.

  • Уменьшить Фиксированное уменьшение—применяет фиксированное уменьшение на карте.

  • Приблизить к выборке Приблизить к результатам - увеличивает масштаб карты, чтобы отцентрировать выбранный объект.

  • Подсветить выбранное Подсветить - выбранный объект на короткое время будет мигать синим и изменится на красный во вьюере Показать конфликты.

Элементы вида Конфликты

Список конфликтов

Все конфликты классов и объектов показаны в списке конфликтов в верхней левой части вида Конфликты. Этот список показывает общее количество конфликтов для векторных веб-слоев для всего сервиса.

Щелкните стрелку ниспадающего списка объектов Развернуто, чтобы просмотреть конфликты для каждого объекта. Их можно разбить на следующие категории:

  • Обновить-Удалить – объект был обновлен в текущей версии и удален в целевой.
  • Удалить-Обновить – объект был удален в текущей версии и обновлен в целевой.
  • Обновить-Обновить – объект был обновлен в обеих версиях: текущей и целевой.

Когда вы выделяете отдельный объект ObjectID в списке конфликтов, то в правой части от списка в виде Конфликты появляются поля и их атрибуты в текущей версии, целевой версии и версии общего предка этого объекта.

Подсказка:

Непроверенные конфликты выделены полужирным шрифтом. Рассмотренные конфликты больше не выделяются жирным шрифтом.

Информационная сетка

В информационной сетке вы можете просмотреть различные представления значений атрибутов для выбранного объекта. Когда у вас имеются атрибуты и их значения для всех представлений конфликтного объекта, то вы можете видеть, как атрибутивные значения отличаются между версиями. Это может помочь вам выбрать, какое представление данных вам нужно сохранить. Все поля отображаются в информационной сетке, а слева от строки появляется красный индикатор для конфликтующих атрибутов.

В следующих столбцах отображаются значения атрибутов для различных представлений объекта:

  • Текущая – представляет текущее состояние объектов и атрибутов в именованной версии. Оно включает в себя любые внесенные вами изменения.
  • Целевая – представляет объекты и атрибуты в версии по умолчанию.
  • Общий предок – представляет объекты и атрибуты, когда версия была первоначально создана или во время последней операции согласования.

Если какой-то объект был удален в любой версии, то для значения атрибута этой версии появится надпись <Deleted>. Если объекты были вставлены в именованную версию, и они становятся конфликтующими, Did not exist отображается для столбцов Цель и Общий предок.

Подсказка:

Все поля отображаются в информационной сетке в виде Конфликты; однако поля с примененным фильтром конфликта на уровне поля не идентифицируются как конфликтующие и не отображают красный индикатор.

Показать конфликты

Кнопка Показать конфликты открывает раздел вьюера просмотра конфликтов в нижней части вида Конфликты. Вьюер просмотра конфликтов позволяет просматривать конфликты в том виде, в каком они появляются на карте, а также перемещаться и определять объекты на экране. Отображаемые конфликты основаны на индивидуальном объекте ObjectID, выбранном в списке конфликтов.

Инструменты навигации по отображению конфликтов расположены под вьюером Показать конфликты. Эти инструменты содержат два раскрывающихся меню, которые позволяют вам изменять сравниваемые версии, где опции версии включают версии: Текущую, Целевую или Общую родительскую.

Содержание дисплея конфликтов зависит от того, присутствует ли класс конфликтов в активной карте:

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

Пометить конфликты, как просмотренные или не просмотренные.

После определения того, какие поля или строки конфликтуют, вы можете пометить пространственный объект как просмотренный. Вы также можете вести учет того, какие объекты в этом списке были просмотрены: отмеченные как просмотренные объекты больше не отображаются полужирным контуром.

Чтобы вернуться к конфликтующему объекту позднее, щелкните правой кнопкой мыши ObjectID в списке Конфликты, а затем щелкните кнопку Отметить как не просмотренный. После этого объект снова будет выделен жирной границей.

Если вы поставите отметку Фильтровать просмотренные конфликты вверху диалогового окна, вы сможете отфильтровать список, чтобы показать только ранее не просмотренные конфликты.

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

Примечание:

Примечания просмотра очищаются при следующей операции согласование и закрепления.

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

При устранении конфликтов вы решаете, какое представление пространственных объектов или атрибутов следует оставить. После операции согласования можно использовать вид Конфликты, чтобы указать представление для сохранения. Имейте в виду, что использование вариантов замены в виде Конфликты – это то же самое, что и выполнение операции редактирования.

В виде Конфликты щелкните правой кнопкой мыши версию, набор данных, объект или атрибут и выберите один из следующих вариантов замены:

  • Заменить текущей версией
  • Заменить целевой версией
  • Заменить версией общего предка

Контекстное меню конфликта для версии ветви

Ниже приведены различные уровни, на которых можно использовать варианты замены для разрешения конфликтов:

  • Замещение атрибутов

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

  • Замещение пространственных объектов

    Это происходит на уровне строки. Можно заменить весь объект представлением объекта в текущей версии, целевой версии или версии общего предка. Это значит, что все поля в конфликте будут заменены.

  • Замещение на уровне классов

    Чтобы разрешить конфликт, можно заменить текущее представление всего класса объектов представлением объекта в текущей версии, целевой версии или версии общего предка. Это приведет к одновременной замене всех конфликтующих объектов и атрибутов, позволяя быстро обновить и заменить конфликтующие объекты. Если в списке Конфликты присутствует несколько объектов, все они заменяются выбранной версией.

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

  • Полное замещение

    Это происходит на корневом уровне. Вследствие использования данной опции замещения все конфликтные объекты и классы объектов в списке заменяются выбранным представлением. При наличии нескольких классов объектов и нескольких объектов в конфликте все они заменяются выбранной версией.

    Щелкните правой кнопкой мыши версию и информацию о подключении наверху списка Конфликты и выберите версию, которую вы хотите использовать для замены всех конфликтов.

Фильтрация конфликтов на уровне поля

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

  • Выполняется пакетное обновление по одному полю в разных версиях.
  • Информация записывается в поле на основе изменений, выполненных в данной версии.

Чтобы предотвратить выявление конфликтов при обновлении одного и того же атрибута в родительской и дочерней версиях, можно использовать инструмент Добавить фильтр конфликтов полей, чтобы задать фильтрацию от конфликтов для набора полей. Фильтр конфликтов полей позволяет отметить тегом поле или набор полей в пределах классов объектов, чтобы отфильтровать их при определении конфликтов. Если изменяются только поля с фильтрами конфликтов, то во время операции согласования конфликты возвращаться не будут. Это применимо только в случае, если вы определяете конфликты по атрибуту.

Для того чтобы узнать, заданы ли фильтры конфликтов для класса объектов или таблицы, можно использовать функцию Python ListFieldConflictFilters.

Примечание:

В виде Конфликты отображаются все поля; однако поля, к которым применен фильтр конфликтов, не идентифицируются как конфликтующие, и в них отсутствует красный индикатор.

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

Инструмент Удалить фильтр конфликта полей может удалить эти фильтры из указанных полей.

Примечание:

Службы с версионными данными ветвей должны быть перезапущены, чтобы получить изменения от инструментов Добавить фильтр конфликта полей или Удалить фильтр конфликта полей.

Разрешение конфликтов с правилами атрибутов

Правила атрибутов улучшают процесс редактирования и обеспечивают целостность наборов данных базы геоданных. При выполнении согласования, в котором конфликты определяются атрибутом (столбцом), правила вычисления или ограничения рассматриваются для объектов, которые были обновлены как в версии по умолчанию, так и в версии, подлежащей согласованию. Если во время этого процесса будет нарушено правило ограничения, слияние не произойдет, объект станет оцениваться как конфликт Обновление – Обновление, и он отображается в виде Конфликты.

Разрешение конфликтов с классами отношений

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

Удаление объекта из класса отношений объектов-источников может вызвать отправку сообщения на удаление объекта из класса отношений объектов-адресатов. Поэтому вам следует учитывать возможные последствия простой замены конфликтов, возникающих в классах пространственных объектов, участвующих в классах отношений.

Приведем пример того, когда между классами отношений может возникнуть конфликт:

  • В родительской версии вы добавляете целевой объект и связываете его с объектом в исходном классе.
  • В дочерней версии вы удаляете тот же исходный объект, который использовался для связи с новым целевым объектом.
  • Когда эти изменения будут согласованы, в целевом классе обнаруживается конфликт обновить-обновить, а в исходном – конфликт удалить-обновить.

Другой пример:

  • В наборе классов объектов электросетей вы удалили столб, который имеет связь с трансформатором: это вызовет удаление связанного со столбом трансформатора.
  • В другой сессии редактирования, начавшейся в то же время, редактор изменил атрибуты трансформатора, который только что был удален, поскольку вы удалили связанный с ним столб.
  • При согласовании изменений обнаруживается конфликт обновить-удалить в исходном и целевом классах.

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

Связанные разделы