Согласование и закрепление изменений в традиционной версии

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

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

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

Примечание:
В этой статье описывается процесс согласования и закрепления с помощью вкладки Версии. Вы также можете согласовать и закрепить версии с помощью инструмента геообработки Согласовать версии и кнопки Согласовать/ЗакрепитьСогласование и закрепление на вкладке Версии при работе с видом Версии.

Процесс согласования

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

  • Вы должны быть единственным пользователем, который в текущий момент времени редактирует традиционную версию, которую вы сейчас согласовываете.
  • Другие пользователи не должны редактировать целевую версию. Исключением является случай, когда целевая версия - Default. Вы можете выполнить согласование с Default, даже если ее редактируют другие пользователи.
  • У вас должна быть возможность просмотра целевой версии, то есть у нее должен быть открытый (public) или защищенный (protected) тип доступа. Если для версии установлен частный (private) тип доступа, то вы должны быть ее владельцем или администратором базы геоданных.
  • Если ваш рабочий процесс имеет такую структуру, при которой один пользователь редактирует, а другой пользователь согласовывает изменения, то убедитесь в том, что пользователь, производящий согласование, имеет полные права доступа для всех классов объектов и таблиц, которые были изменены в этой версии; в противном случае, он не сможет согласовать изменения. Пользователь, производящий согласование, должен иметь полные права доступа для обеих сторон отношения, которое было изменено, включая простые и составные отношения. При такой организации структуры рабочего потока пользователь, производящий согласование, также должен иметь необходимые права доступа к версии. Он должен иметь возможность изменения версии для ее согласования, то есть эта версия должна быть открытой и пользователь должен иметь возможность просмотра целевой версии, то есть либо он должен быть владельцем этой версии, либо версия должны быть открытой или защищенной.

О внесении изменений в способ обработки конфликтов во время операции согласования см. в разделе Опции работы с версиями для редактирования.

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

Когда появится диалоговое окно Согласовать, вы должны предоставить следующую информацию:

  • Целевая версия
  • Какой требуется метод разрешения конфликтов? У вас имеются следующие опции:

    Определять конфликты на этом уровнеФиксировать эти случаи

    Строка (по объекту)

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

    Столбец (по атрибуту)

    Второй пользователь редактирует те же атрибуты объекты или таблицу. Это значение по умолчанию

    Опции для выявления конфликтов

  • Каким образом Вы хотите, чтобы ArcGIS Pro разрешал конфликты. У вас имеются следующие опции:

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

    В пользу редактируемой версии (версии, которую вы редактируете)

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

    В пользу целевой версии

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

    Опции для решения конфликтов

Примечание:

С помощью операции Отменить невозможно отменить операцию согласования. Чтобы отменить согласование, вы можете отменить изменения без сохранения.

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

  1. Щелкните Согласовать в группе Версии вкладки Версии.

    Появится диалоговое окно Согласовать.

  2. Выберите целевую версию.
  3. Укажите, как вы хотите определять конфликты.
  4. Укажите, хотите вы разрешать все конфликты в пользу редактируемой или другой целевой версии.
  5. Нажмите OK.

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

Согласование только обновляет редактируемую версию, чтобы ArcGIS Pro мог выполнить проверку на наличие конфликтов; оно не вносит изменения в целевую версию. Закончив согласование и просмотр конфликтов, можно завершить процесс внесения изменений, закрепив свои изменения в целевой версии.

Просмотр конфликтов в виде Конфликты

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

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

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

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

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

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

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

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

Определение конфликтующих полей или строк

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

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

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

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

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

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

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

Если конфликтовать будут другие атрибутивные поля, то красный индикатор появится слева от строки. Если какой-то объект был удален в любой версии, то для значения атрибута этой версии появится надпись <deleted>.

Если в редактируемую версию были добавлены объекты, которые спровоцировали конфликт, то и в целевой версии, и в версии общего предка появится сообщение <Did not exist>.

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

Примечание:

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

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

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

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

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

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

При устранении конфликтов вы решаете, какое представление пространственных объектов или атрибутов следует оставить. Независимо от того, выполняется согласование в пользу целевой или редактируемой версии, можно указать, какое представление следует сохранить: представление текущей версии (отображение в версии до согласования), представление целевой версии (отображение изменений, внесенных другим редактором) или представление общего предка (отображение объекта или атрибута в целевой версии).

При разрешении конфликтов можно использовать четыре варианта замещения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание:

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

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

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

Примечание:

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

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

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

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

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

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

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

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

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

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

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

Закрепление изменений

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

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

Подсказка:

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

Дополнительная информация о процессе закрепления:

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

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