При внесении изменений в различные версии в дереве версий, они начинают отличаться друг от друга. Процесс извлечения любых изменений из родительской версии и слияния в ней изменений из вашей версии называется процессом согласования и закрепления. После завершения редактирования версии вы можете объединить свои изменения с другой версией. С помощью традиционных версий вы сможете внести эти изменения в любую версию, которая является предком редактируемой версии, например, в родительскую версию или версию DEFAULT.
Как только вы начнете работу над вашей версией, родительская версия может быть изменена другими пользователями таким образом, что между изменениями в этой версии и в вашей версии возникнут конфликты. Когда вы согласовываете свои изменения с целевой версией, будут обнаружены конфликты.
Если возникнут какие-либо конфликты, то ArcGIS Pro будет исходно разрешать их в пользу редактируемой версии или в пользу представления целевой версии, в зависимости от ваших настроек. Как только конфликты будут исходно разрешены, вы сможете произвести их поочередный обзор и при необходимости внести любые изменения. Например, если конфликт будет разрешен в пользу редактируемой версии, то вы сможете выбрать опцию замены объекта в пользу целевой версии или даже использовать инструменты редактирования для его изменения нужным образом.
Согласование только обновляет редактируемую версию, чтобы ArcGIS Pro мог произвести поиск конфликтов, но не вносит изменения в родительскую версию. Закончив согласование и просмотр конфликтов, можно завершить процесс слияния, закрепив свои изменения в родительской версии.
Примечание:
В этой статье описывается процесс согласования и закрепления с помощью вкладки Версии. Вы также можете согласовать и закрепить версии с помощью инструмента геообработки Согласовать версии и кнопки Согласовать/Закрепить на вкладке Версии при работе с видом Версии.Процесс согласования — традиционные версии
Чтобы согласовать изменения в вашей версии с родительской версией в традиционных версиях, должны выполняться следующие условия:
- Вы должны быть единственным пользователем, который в текущий момент времени редактирует традиционную версию, которую вы сейчас согласовываете.
- Другие пользователи не должны редактировать целевую версию. Исключением является случай, когда целевая версия - Default. Вы можете выполнить согласование с Default, даже если ее редактируют другие пользователи.
- У вас должна быть возможность просмотра целевой версии, то есть у нее должен быть открытый (public) или защищенный (protected) тип доступа. Если для версии установлен частный (private) тип доступа, то вы должны быть ее владельцем или администратором базы геоданных.
- Если ваш рабочий процесс имеет такую структуру, при которой один пользователь редактирует, а другой пользователь согласовывает изменения, то убедитесь в том, что пользователь, производящий согласование, имеет полные права доступа для всех классов объектов и таблиц, которые были изменены в этой версии; в противном случае, он не сможет согласовать изменения. Пользователь, производящий согласование, должен иметь полные права доступа для обеих сторон отношения, которое было изменено, включая простые и составные отношения. При такой организации структуры рабочего потока пользователь, производящий согласование, также должен иметь необходимые права доступа к версии. Он должен иметь возможность изменения версии для ее согласования, то есть эта версия должна быть открытой и пользователь должен иметь возможность просмотра целевой версии, то есть либо он должен быть владельцем этой версии, либо версия должны быть открытой или защищенной.
Чтобы начать процесс согласования, щелкните Согласовать в группе Изменения версии вкладки Версии.
Когда появится диалоговое окно Согласовать, вы должны предоставить следующую информацию:
- Целевая версия
- Какой требуется метод разрешения конфликтов? У вас имеются следующие опции:
Определять конфликты на этом уровне Фиксировать эти случаи Строка (по объекту)
Второй пользователь, как и вы, производит изменение той же самой строки или объекта или топологически связанных объектов. Конфликт возникнет, даже если вы будете редактировать различные атрибуты.
Столбец (по атрибуту)
Второй пользователь редактирует те же атрибуты объекты или таблицу. Это значение по умолчанию.
Опции для выявления конфликтов - Как вы хотите, чтобы ArcGIS Pro изначально разрешал конфликты: в пользу редактируемой вами версии (называется версией редактирования) или целевой версии — если вы разрешаете в пользу целевой версии, все конфликтующие пространственные объекты текущего сеанса редактирования будут заменены своими представлениями из целевой версии. Если одну и ту же версию редактируют несколько пользователей, и будут обнаружены конфликты, то объект, который был сохранен первым, заменит представление объекта редактируемой версии. Если вы будете разрешать конфликты в пользу редактируемой версии, то все конфликтующие объекты в текущей сессии редактирования будут иметь приоритет над конфликтующими представлениями объектов в целевой версии.
Примечание:
С помощью операции Отменить невозможно отменить операцию согласования. Чтобы отменить согласование, вы можете отменить изменения без сохранения.
Чтобы согласовать изменения в традиционной версии с родительской версией, должны выполняться следующие условия:
- Щелкните Согласовать в группе Версии вкладки Версии.
Появится диалоговое окно Согласовать.
- Выберите целевую версию.
- Укажите, как вы хотите определять конфликты.
- Укажите, хотите вы разрешать все конфликты в пользу редактируемой или другой целевой версии.
Если вы разрешаете конфликт в пользу целевой версии, то все конфликтующие объекты в текущем сеансе редактирования будут заменены их представлениями в целевой версии. Если одну и ту же версию редактируют несколько пользователей, и будут обнаружены конфликты, то объект, который был сохранен первым, заменит представление объекта редактируемой версии. Если вы будете разрешать конфликты в пользу редактируемой версии, то все конфликтующие объекты в текущем сеансе будут иметь приоритет над конфликтующими представлениями объектов в целевой версии.
- Нажмите OK.
Просмотр конфликтов в виде Конфликты
Если при согласовании обнаруживаются конфликты, их можно просмотреть с помощью интерактивного вида Конфликты. Этот вид можно закрепить в любой части приложения или расположить как плавающее окно. Этот позволяет взаимодействовать с видом Карта и одновременно просматривать и изучать данные. В виде Конфликты содержатся все конфликтующие классы объектов, а также их объекты и строки, которые находятся в конфликте. Он также позволяет вам делать следующее:
- Определение конфликтующих полей или строк
- Просмотреть конфликты
- Пометить конфликты, как просмотренные или не просмотренные.
- Разрешить конфликты путем указания того, какое представление следует использовать для замены пространственных объектов или атрибутов
Конфликты возникают в следующих случаях:
- Один и тот же объект обновляется в текущей версии, которая редактируется, и в целевой версии.
- Один и тот же объект обновляется в одной версии и удаляется в другой.
- Топологически связанный объект или класс отношений изменяется в текущей редактируемой версии и в целевой версии.
Если возникнут какие-либо конфликты в традиционных версиях, то ArcGIS Pro будет разрешать их в пользу редактируемой версии или в пользу представления целевой версии, в зависимости от ваших настроек. Как только конфликты будут разрешены, вы сможете произвести их поочередный обзор и при необходимости внести любые изменения. Например, если конфликт будет разрешен в пользу редактируемой версии, то вы сможете выбрать опцию замены объекта в пользу целевой версии или даже использовать инструменты редактирования для его изменения нужным образом.
Определение конфликтующих полей или строк
Все конфликтующие классы и объекты перечислены в списке в верхней левой части вида Конфликты. В этом списке указано общее число конфликтов во всех классах объектов.
Щелкните стрелку ниспадающего меню объекта, чтобы показать конфликты для него. Их можно разбить на три возможных категории:
- Обновить-Удалить – объект был обновлен в текущей версии и удален в целевой
- Удалить-Обновить – объект был удален в текущей версии и обновлен в целевой
- Обновить-Обновить – объект был обновлен в обеих версиях: текущей и целевой
Когда вы выделяете отдельный ObjectID объекта в этом списке, то в правой части от списка в виде Конфликты появляются столбцы и их атрибуты в версии до согласования, конфликтной версии и версии общего предка этого объекта.
Когда у вас имеются атрибуты и их значения для всех представлений конфликтного объекта, то вы можете видеть, как атрибутивные значения отличаются между версиями. Это может помочь вам выбрать, какое представление данных вам нужно сохранить.
- Текущая версия представляет правки пространственного объекта и атрибутов, которые вы произвели.
- Целевая версия представляет объект и его атрибуты, как они были отредактированы и согласованы другим пользователем. Это целевая версия, которую вы выбрали при открытии вида Конфликты.
- Версия общего предка содержит представление пространственного объекта и его атрибутов, как они хранятся в базе данных; такими были объект и атрибуты до произведения изменений.
Красный индикатор слева от строки означает наличие конфликта. Например, если геометрия объекта редактировалась в каждой версии, красная точка будет рядом с полем Shape.
Если конфликтовать будут другие атрибутивные поля, то красный индикатор появится слева от строки. Если какой-то объект был удален в любой версии, то для значения атрибута этой версии появится надпись <deleted>.
Если в дочернюю версию были добавлены объекты, которые спровоцировали конфликт, то появится сообщение <Did not exist> и в целевой версии, и в версии общего предка.
С помощью двух кнопок, расположенных в нижней части диалогового окна, вы можете переключать отображение видимых полей: либо все поля, либо только конфликтующие.
Пометьте конфликты, как просмотренные и не просмотренные
Послеопределения того, какие поля или строки конфликтуют, вы можете пометить пространственный объект как просмотренный. Вы также можете вести учет того, какие объекты в этом списке были просмотрены: отмеченные как просмотренные объекты больше не отображаются жирной границей.
Если вы решили вернуться к конфликтующему объекту позднее, щелкните правой кнопкой мыши ObjectID в списке Конфликты, а затем нажмите кнопку Отметить как не просмотренный. После этого объект снова будет выделен жирной границей.
Если вы поставите отметку Фильтровать просмотренные конфликты вверху диалогового окна, в диалоге отобразятся только ранее не просмотренные конфликты.
Разрешение конфликтов
При устранении конфликтов вы решаете, какое представление пространственных объектов или атрибутов следует оставить. Независимо от того, выполняется согласование в пользу целевой или редактируемой версии, можно указать, какое представление следует сохранить: представление текущей версии (отображение в версии до согласования), представление целевой версии (отображение изменений, внесенных другим редактором) или представление общего предка (отображение объекта или атрибута в целевой версии).
При разрешении конфликтов можно использовать четыре варианта замещения.
- Замещение атрибутов:
Это происходит на уровне поля. При наличии конфликтов в атрибутах достаточно заменить значение атрибута в текущей версии значением из представления текущей версии, целевой версии или версии общего предка. Для этого щелкните правой кнопкой мыши на атрибуте в конфликте и выберите в меню необходимую опцию.
- Замещение пространственных объектов:
Это происходит на уровне строки. Можно заменить весь объект представлением объекта в текущей версии, целевой версии или версии общего предка. Это значит, что все поля в конфликте будут заменены.
- Замещение на уровне классов:
Чтобы разрешить конфликт, можно заменить текущее представление всего класса объектов представлением объекта в текущей версии, целевой версии или версии общего предка. Это приведет к одновременной замене всех конфликтующих объектов и атрибутов, позволяя быстро обновить и заменить конфликтующие объекты. Если в списке Различия присутствует несколько объектов, все они заменяются выбранной версией.
Чтобы выбрать опцию замены на уровне класса, щелкните правой кнопкой мыши имя класса объектов в списке Различия и выберите необходимую версию.
- Полное замещение:
Это замещение на корневом уровне. Вследствие использования данной опции замещения все конфликтные объекты и классы объектов в списке заменяются выбранным представлением. При наличии нескольких классов объектов и нескольких объектов в конфликте все они заменяются выбранной версией.
Щелкните правой кнопкой мыши версию и информацию о подключении наверху списка Различия и выберите версию, которой необходимо заменить все конфликты.
Фильтрация конфликтов на уровне поля
В некоторых случаях при работе с традиционными версиями необходимо избежать изменений, примененных по отношению к одному полю или к набору полей, если в процессе согласования были обнаружены конфликты. Далее приводятся примеры, когда может быть полезно фильтровать конфликты, обнаруженные в поле при согласовании:
- Выполняется пакетное обновление по одному полю в разных версиях.
- Информация записывается в поле на основе изменений, выполненных в данной версии.
Для того чтобы задать фильтрацию от конфликтов для набора полей, можно использовать инструмент Добавить фильтр конфликта полей. Фильтр конфликта полей позволяет отметить тегом поле или набор полей в пределах классов объектов, чтобы отфильтровать их при определении конфликтов. Это применимо только в случае, если вы определяете конфликты по атрибуту.
Примечание:
После применения фильтра конфликта полей к полю или набору полей при согласовании конфликты не будут идентифицироваться, если были отредактированы только те поля, для которых установлен фильтр. Если были отредактированы неотфильтрованные поля, и в целевой версии для этих полей существуют конфликты, при согласовании все поля (отфильтрованные и неотфильтрованные) в конфликте идентифицируются в виде Конфликт.
После согласования ваших изменений значение в поле, имеющем фильтр конфликта, будет зависеть от того, в пользу какой версии было выбрано проведение согласования – в пользу целевой или в пользу редактируемой. Если выбрано согласование в пользу целевой версии, поля с фильтром конфликтов получат значение из целевой версии. Если выбрано согласование в пользу редактируемой версии, поля с фильтром конфликтов получат значение из редактируемой версии.
Инструмент Удалить фильтр конфликта полей может удалить этих фильтры из указанных полей. Для того чтобы узнать, заданы ли фильтры конфликтов для класса объектов или таблицы, можно использовать функцию Python ListFieldConflictFilters.
Примечание:
Если для класса объектов или таблицы задан фильтр конфликтов полей, клиенты ArcGIS версий ранее 10.2.1 не смогут открыть эти класс объектов или таблицу. Для поля можно задавать фильтры конфликта полей с последующим их удалением после проведения согласования версий, если требуется, чтобы эти данные были доступны для более ранних версий ArcGIS.
Разрешение конфликтов с правилами атрибутов
Правила атрибутов улучшают процесс редактирования и обеспечивают целостность наборов данных базы геоданных. Согласование класса пространственных объектов с традиционными версиями с немедленным вычислением или правилами ограничений оценивает эти правила атрибутов. Если нарушено правило ограничения, появится ошибка правила ограничения, а процесс согласования завершен не будет. Согласуйте конфликты по строке, чтобы избежать ошибок правила ограничения.
Закрепление изменений
Выполнив согласование и просмотрев все конфликты, вы можете отправить изменения в версию-предка.
- Щелкните Закрепить в группе Версии вкладки Версии.
Подсказка:
В традиционных версиях другие пользователи, считывающие целевую версию, в которой вы закрепили свои изменения, не будут видеть результатов закрепления до тех пор, пока не обновят свои версионные рабочие области.
Вы можете закрепить изменения, только если целевая версия не изменялась после последнего согласования изменений. Если целевая версия была изменена в этот промежуток времени, то вам придется выполнить согласование еще раз, прежде чем закрепить изменения.
После внесения изменений их нельзя отменить, поскольку вы закрепляете изменения в версии, которую вы не редактируете в настоящий момент.
После закрепления вы сможете продолжить производить изменения в текущей версии. Чтобы внести эти изменения в целевую версию, вам будет нужно пройти этапы согласования, разрешения конфликтов и повторного закрепления.
Если закрепление изменений в вашем случае означает конец рабочего процесса, то вы можете удалить версию, которую вы редактируете.