При публикации картографического сервиса или сервиса геоданных с включенной функциональностью WFS, можно получить доступ к данным помощью OGC-совместимых клиентов WFS. Эти клиенты WFS могут также отслеживать последние изменения данных.
Когда вопрос поступает от клиента WFS, например вьюера, данные возвращаются так, как они представлены в источнике данных в это время. Например, предположим, у вас есть документ карты с классом объектов. Этот класс объектов поступает из файловой базы геоданных. Теперь вы публикуете документ карты как картографический сервис и включаете функцию WFS. Клиент с вьюером WFS может получить доступ к данным в классе объектов с помощью URL WFS, предоставленного картографическим сервисом.
Предположим, что кто-то получает доступ к базе геоданных исходного файла, добавляет, обновляет и удаляет объекты в классе объектов. При следующем обновлении клиента с вьюером WFS отображаются последние измененные данные.
Если источником данных является корпоративная, рабочей группы или настольная база геоданных, то сервисы геоданных и картографические сервисы публикуют данные из определенной версии. Если данные изменяются в этой версии, клиенты WFS и другие клиенты могут видеть эти изменения. Однако если изменения вносятся в других версиях, клиенты не видят их, если они не были согласованы с опубликованной версией.
Это дает большую степень контроля над данными, доступ к которым предоставляют ваши сервисы. Предположим, вы публикуете данные с функцией WFS из версии с именем WFS. Клиенты с вьюерами WFS могут получить доступ к этим данным через ваш сервис. В то же время редакторы в офисе используют ArcGIS для обновления версии по умолчанию. Затем изменения, внесенные редакторами, отмечаются и корректируются, если это необходимо. После завершения оценки версия WFS согласуется с версией по умолчанию. На этот момент клиенты WFS видят последние обновления от редакторов.
Транзакционные сервисы WFS
Транзакционный сервис WFS (который иногда называют WFS-T) позволяет редакторам WFS применять изменения данных в исходной базе данных с помощью сервиса WFS. Для применения изменений с помощью WFS-T источником данных должна быть корпоративная, рабочей группы или настольная база геоданных (многопользовательская, рабочей группы или настольная база геоданных). Транзакции можно включить для сервисов с версионными данными, неверсионными данными и их сочетанием. Если используются версионные данные, также рекомендуется публиковать сервис из версии, отличной от версии по умолчанию.
Подробные инструкции по созданию транзакционного сервиса WFS см. в Руководстве пользователя: Публикация сервиса WFS-T.
После включения транзакций клиенты WFS могут применять изменения к базе геоданных с помощью транзакционных методов WFS. Ниже приводится пример применения изменений.
- Клиент WFS подключается к сервису WFS, который был опубликован с включенными транзакциями.
- Изменяемые объекты и строки блокируются на сервере (это можно сделать с помощью метода GetFeatureWithLock WFS).
- Редактирование происходит с использованием редактора WFS или клиента WFS.
- Затем изменения применяются на сервере (это можно сделать с помощью метода Transaction WFS).
При закреплении изменений блокировки отключаются и другие редакторы WFS могут изменять соответствующие объекты. Блокировки также снимаются при превышении времени ожидания. По умолчанию время ожидания блокировки истекает через пять минут, но это время можно изменить, указав период ожидания в минутах с помощью метода GetFeatureWithLock. Администратор может установить время ожидания по умолчанию, вручную изменив конфигурацию и установив элемент DefaultLockExpiration (время в минутах).
Когда клиент запрашивает блокировку с помощью метода GetFeatureWithLock, возвращается коллекция объектов с заблокированными объектами и идентификатор блокировки. Если какой-либо из запрошенных объектов нельзя заблокировать, запрос завершается с ошибкой, а клиент должен еще раз вызвать метод GetFeatureWithLock. Другие клиенты не могут заблокировать эти объекты до снятия текущих блокировок.
Для транзакций только для вставки не нужно блокировать объекты. Так как существующие объекты не изменяются, не обновляются и не удаляются, не требуется вызывать метод GetFeatureWithLock. Любые транзакционные запросы с обновлениями или удалениями должны обладать идентификатором блокировки.
При закреплении изменений через WFS-T, они применяются в опубликованной версии (с версионными данными) или бизнес-таблицах (с неверсионными данными). В следующих разделах описываются важные отличия, о которых нужно помнить при работе с версионными или неверсионными данными.
Примечание:
GetFeatureWithLock поддерживается только для сервисов WFS Geodata в ArcGIS Server10.5.
Сервисы WFS-T и версионные данные
Работа с версиями позволяет предоставлять доступ к базе геоданных для редакторов WFS и других редакторов, а также эффективно объединять изменения, внесенные двумя группами, с обнаружением всех конфликтов. Для объединения изменений можно выполнить согласование и закрепление опубликованной версии WFS-T с родительской версией. Если существуют неучтенные блокировки, система не позволит выполнить согласование и закрепление изменений. Это необходимо для предотвращения конфликтов между объектами, заблокированными клиентом WFS-T, и объектами, измененными в процессе согласования и закрепления. Кроме того при согласовании и закреплении блокируется опубликованная версия, что не позволяет вызвать методы GetFeatureWithLock и Transaction во время этого процесса. Дополнительные сведения о работе с версионными данными см. в разделе Введение в версионное редактирование.
Блокировки объектов хранятся на сервере с помощью таблицы блокировок. Таблица блокировок создается при активации транзакций и отображается как обычная таблица в базе геоданных. Имя таблицы соответствует следующему соглашению: VERSION_<versionID>_ROW_LOCKS. Чтобы предотвратить блокировку согласования и закрепления, администраторы могут удалить неучтенные блокировки, напрямую удалив строки из таблицы блокировки перед согласованием и закреплением изменений.
Опубликованная версия WFS-T не должна редактироваться с помощью ArcGIS. Редактор ArcGIS не знает о блокировках объектов и поэтому их можно изменять. В такой ситуации изменения, внесенные в ArcGIS, могут вызвать конфликты, не позволяющие клиенту WFS-T отправить свои изменения. Создание и изменение дочерних версий опубликованной версии также может вызвать аналогичные проблемы при согласовании и закреплении изменений в опубликованной версии.
Несколько сервисов WFS-T могут ссылаться на одну опубликованную версию, так как все они используют одну таблицу блокировок. Между опубликованной версией и таблицей блокировок существуют однозначная связь.
Если отключить транзакции или удалить сервис WFS, таблица блокировок не удаляется автоматически. Если нет сервисов WFS-T, ссылающихся на версию, эту таблицу можно удалить вручную.
Сервисы WFS-T и неверсионные данные
При публикации неверсионных данных в сервисе WFS-T изменения применяются напрямую к бизнес-таблицам в базе геоданных, поэтому после этого из нельзя отменить. Для получения более подробной информации о работе с неверсионными данными см. раздел Введение в работу с неверсионными данными.
В сервисах WFS-T, основанных на неверсионных данных, блокировки объекта сохраняются на сервере в таблице блокировок, которая создается при включении транзакции в сервисе. Если вы планируете, что клиенты WFS-T смогут редактировать данные только через сервис, это будет аналогично сервису на основе версионных данных. Но если вы собираетесь изменять данные, опубликованные в сервисе, с помощью клиента, отличного от WFS-T, такого как ArcMap, необходимо запомнить следующее.
- Редакторы ArcMap ничего не знают о блокировках объектов, и поэтому объекты, заблокированные через сервис WFS-T, можно редактировать.
- Когда редактор ArcMap изменяет объекты, в клиентах WFS-T они отображаются как заблокированные. В результате клиенты WFS-T не могут блокировать, обновлять или удалять эти объекты, пока редактор ArcMap не сохранит изменения.
Если отключить транзакции или удалить сервис WFS, таблица блокировок не удаляется автоматически. Если нет сервисов WFS-T, ссылающихся на версию, эту таблицу можно удалить вручную.
Дополнительные примечания
- При включении отслеживания изменений класса объектов, убедитесь, что настроена запись изменений в формате UTC. Сервисы WFS-T не поддерживают Время базы данных в качестве часового пояса для отслеживания изменений.
- Пользователь СУБД, использующий ArcGIS Server для подключения к корпоративная, рабочей группы или настольная база геоданных, для успешного использования WFS-T должен иметь разрешения для создания таблиц в СУБД.
- В ArcGIS Desktop нет механизма редактирования транзакционного WFS, поэтому для редактирования объектов, использующих WFS, необходим клиент стороннего производителя.
- Классы объектов, содержащие значения z, которые нельзя редактировать с помощью WFS-T.