GeoprocessingSharingDraft

Краткая информация

Класс GeoprocessingSharingDraft позволяет создавать черновик файла определения сервиса (.sddraft) для веб-инструмента для ArcGIS Enterprise илисервиса геообработки для ArcGIS Server.

Обсуждение

Чтобы создать объект GeoprocessingSharingDraft, используйте функцию CreateSharingDraft.

  • Чтобы опубликовать веб-инструмент, задайте параметр serverType как FEDERATED_SERVER, а параметр serviceType как WEB_TOOL.
  • Чтобы опубликовать сервис геообработки, задайте параметр serverType как STANDALONE_SERVER, а параметр serviceType как GP_SERVICE.

После настройки объекта GeoprocessingSharingDraft он может быть сохранен в файле черновика определения сервиса (.sddraft) с помощью метода exportToSDDraft. Затем он может быть применен и опубликован либо в ArcGIS Enterprise, либо в ArcGIS Server, используя инструменты Промежуточный сервис и Выгрузить определение сервиса. Дополнительные сведения см. в разделе Введение в arcpy.sharing.

Примеры кода доступны для следующего:

Свойства

СвойствоОписаниеТип данных
serverType
(только чтение)

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

  • FEDERATED_SERVER - интегрированный сервер портала ArcGIS Enterprise поддерживается для публикации.
  • STANDALONE_SERVER - автономный сайт ArcGIS Server поддерживается для публикации. Используется по умолчанию.
String
serviceType
(только чтение)

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

  • WEB_TOOLвеб-инструмент будет опубликован, если для serverType установлено значение FEDERATED_SERVER.
  • GP_SERVICEсервис геообработки будет опубликован, если для serverType установлено значение STANDALONE_SERVER. Используется по умолчанию.
String
serviceName
(чтение и запись)

Имя веб-инструмента или сервиса геообработки. Это имя будут видеть пользователи и идентифицировать по нему сервис. Имя может содержать только буквы, цифры и знак подчеркивания. Для веб-инструмента допускается использование пробелов. Для сервиса геообработки не допускается использование пробелов и специальных символов. Длина имени не должна превышать 120 символов. Значение по умолчанию равно None.

String
description
(чтение и запись)

Описание веб-инструмента или сервиса геообработки. Значение по умолчанию равно None.

String
summary
(чтение и запись)

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

String
tags
(чтение и запись)

Теги веб-инструмента или сервиса. Используйте это свойство для замены тегов пользовательского интерфейса или введения тегов, если они отсутствуют. Приведенные здесь теги не будут сохранены в исходном инструменте геообработки. Значение по умолчанию равно None.

String
offline
(чтение и запись)

Определяет, будет ли сохраняться определение сервиса офлайн. Значение по умолчанию равно False.

  • False - используйте при создании подключенного файла черновика определения сервиса (.sddraft) методом exportToSDDraft класса. Войдите в портал, если для свойства serverType задано значение FEDERATED_SERVER. Укажите URL сервера или файл подключения к серверу (.ags) в свойство targetServer класса, если для свойства serverType задано STANDALONE_SERVER.
  • True - используйте при создании автономного файла черновика определения сервиса (.sddraft) методом exportToSDDraft класса. Не нужно выполнять вход в портал, если для свойства serverType задано FEDERATED_SERVER, и указывать файл подключения к серверу или URL, если для свойства serverType задано STANDALONE_SERVER.
Boolean
offlineTarget
(чтение и запись)

Указывает версию целевого сервера, для которой будет опубликовано определение сервиса. Задание версии позволяет быть уверенным в том, что в определении сервиса содержится контент, совместимый с вашим сервером. Это свойство поддерживается, только если для свойства offline задано True. Это свойство можно использовать следующими способами:

  • Целочисленный номер версии — используйте точный номер версии сервера, а не указывайте версию целевого сервера. Если для свойства convertFeatureLayerURL установлено значение False, а для свойства offline — значение True, необходимо использовать целочисленный номер версии.
    • 11.3—330
    • 11.2—320
    • 11.1—310
    • 11.0—300
    • 10.9.1—209
    • 10.9—208
    • 10.8.1—206
    • 10.8—205
    • 10.7.1—204
    • 10.7—203
    • 10.6.1—202
    • 10.6—201
    • 10.5.1—200
  • 10x — используйте, если сервер публикации совместим с ArcGIS Server 10.9.1 или более ранней версией.
  • 11 — используйте, если сервер публикации совместим с ArcGIS Server 11.0 или более ранней версией. Точная версия сервера зависит от версии ArcGIS Pro во время публикации. Полный список совместимых и эквивалентных версий ArcGIS Pro и ArcGIS Server доступен в разделе Совместимость веб-инструмента.
String
targetServer
(чтение и запись)

Сервер, на котором будет опубликован веб-инструмент или сервис геообработки. Это свойство необходимо, если для свойства offline задано False.

Если для свойства serverType задано FEDERATED_SERVER, укажите адрес URL сервера к интегрированному с сервером порталу ArcGIS Enterprise.

Если для свойства serverType задано STANDALONE_SERVER, поддерживаются следующие варианты:

  • Подключение ArcGIS Server - вы можете использовать подключения ArcGIS Server, перечисленные в узле Серверы в окне ArcGIS Pro, или перейти в другую папку, где могут храниться файлы подключения к серверу (.ags).
  • URL к ArcGIS Server — можете указать URL к ArcGIS Server из подключения администратора к ArcGIS Server, добавленного в проект ArcGIS Pro, и вы открываете этот проект в скрипте или запускаете инструмент в ArcGIS Pro.

String
overwriteExistingService
(чтение и запись)

Определяет, будет ли перезаписан имеющийся веб-инструмент или сервис геообработки. Значение по умолчанию равно False.

Boolean
copyDataToServer
(чтение и запись)

Определяет, будут ли копироваться на сервер данные результата. Если значение равно True, то будут скопированы все данные результата, в том числе данные, которые зарегистрированы на сервере. Если значение равно False, то будут скопированы только данные, которые не зарегистрированы на сервере. Сервис будет использовать данные, которые зарегистрированы на интегрированном сервере. Значение по умолчанию равно False.

Boolean
executionType
(чтение и запись)

Определяет, как клиент (приложение, использующее задачу) будет взаимодействовать с сервером и получать результаты выполнения задачи. ArcGIS Pro поддерживает оба типа обработки. Значение по умолчанию равно Asynchronous.

  • Synchronous — клиент будет ждать завершения задачи. Как правило, синхронная задача выполняется быстро – в течение не более 5 секунд.
  • Asynchronous — задача обычно выполняется медленнее, а клиент должен периодически запрашивать сервер о состоянии выполнения задачи и, если задача завершена, получить результат. В веб-приложении, использующем асинхронную задачу, должна быть реализована логика для проверки статуса задачи и обработки результата, когда ее выполнение будет завершено. ArcGIS Pro поддерживает оба типа обработки.

String
serverFolder
(чтение и запись)

Название папки, которая будет опубликована на сервере. Если папка не существует, она будет создана. Папкой по умолчанию является корневая папка сервера. Значение по умолчанию равно None.

String
portalFolder
(чтение и запись)

Имя папки портала, которая будет публиковаться, как веб-инструмент. Папкой по умолчанию является корневая папка в Моих ресурсах. Это свойство доступно только если для serverType задано FEDERATED_SERVER.

String
maximumRecords
(чтение и запись)

Максимальное число результатов, которые веб-инструмент или сервис могут возвратить клиенту. Чем большее значение будет задано для этого параметра, тем большее число записей или объектов, направляемых клиенту, сможет обрабатывать ГИС-сервер. Если не нужно возвращать какие-либо объекты, установите для этого параметра значение 0 (нуль). Как правило, это значение равно нулю только при включенном параметре Просмотреть результат с помощью картографического сервиса. Значением по умолчанию является 1000.

Integer
maxInstances
(чтение и запись)

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

Integer
minInstances
(чтение и запись)

Минимальное число экземпляров, которые будут запущены сервисом и станут доступны для использования. Для сервисов с большой нагрузкой можно увеличить это значение. Значение по умолчанию равно 1.

Integer
resultMapService
(чтение и запись)

Определяет, будут ли результаты всех задач сервиса отображаться в виде карты (в дополнение к другим результатам задачи). При True карта создается на сервере с помощью картографического сервиса, а затем отправляется обратно клиенту в виде изображения (например, файла .jpeg). Символы, надписи, прозрачность и все другие свойства возвращенной карты соответствуют настройкам выходного слоя. Если вы создаете слои результата в среде скриптов Python (вне ArcGIS Pro), то будут использоваться символы, установленные по умолчанию. Чтобы управлять символами, создайте файлы слоя с возможностями символов и использовать их для изменения выходных символов для задачи.

При True картографический сервис автоматически создается на сервере с тем же именем, что и у веб-инструмента или сервиса геообработки. Значение по умолчанию равно False.

Boolean
messageLevel
(чтение и запись)

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

  • None — клиенту не возвращаются сообщения геообработки, помимо содержащих информацию об успешном завершении обработки или ее сбое.
  • Error – клиенту возвращаются только те сообщения инструмента, которые свидетельствуют об ошибке.
  • Warning — клиенту возвращаются все сообщения об ошибках и предупреждения инструмента.
  • Info — клиенту возвращаются все сообщения инструмента, касающиеся обработки.

По умолчанию – Error.

String
maxUsageTime
(чтение и запись)

Максимальное время (в секундах) использования сервиса. Вы можете увеличить значение по умолчанию, равное 600 секунд (10 мин), чтобы выполнять долгосрочные задачи геообработки. Кроме того, можно уменьшить это время, чтобы клиент не применял сервисы неправильно. Значение по умолчанию – 600.

Integer
maxWaitTime
(чтение и запись)

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

Integer
capabilities
(чтение и запись)

Определяет возможности, которые будут поддерживаться сервисом.

  • Uploads - клиент может выгружать связанные операции и ресурсы.
  • None - возможности задавать не нужно. Используется по умолчанию.
String
constantValues
(чтение и запись)

Список имен параметров, которые будут настроены в виде константы. Если содержится несколько инструментов, имена параметров должны включать имя инструмента, например, ["toolX.parameterA", "toolY.parameterD"]. Значение по умолчанию равно None.

List
choiceLists
(чтение и запись)

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

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

Свойство использует словарь с именем задачи сервиса и именем параметра в качестве ключа, а также список строковых значений в качестве значения, например, {"ServiceTaskName.parameterName":["string1", "string2"]}. Значение по умолчанию равно None.

Dictionary
enableOutputFeatureService
(чтение и запись)

Определяет, будет ли доступно имя выходного сервиса объектов. Значение по умолчанию равно None.

Чтобы установить для этого свойства значение True, значение resultMapService должно быть True, значение executionType должно быть Asynchronous и значение serviceTypeдолжно быть WEB_TOOL.

Если не указано, для этого свойства будет автоматически задано True при выполнении всех следующих условий:

  • Значение resultMapService равно False или не указано.
  • Значение executionType равно Asynchronous или не указано.
  • Значение serviceType равно WEB_TOOL или не указано.

Подробнее о выходном сервисе объектов см. раздел Использование веб-инструментов с выходным сервисом объектов.

Boolean
convertFeatureLayerURL
(чтение и запись)

Определяет, будет ли URL-адрес векторного слоя преобразован в класс объектов файловой базы геоданных. Это свойство используется для сохранения URL-адреса векторного слоя или сервиса для входных или выходных параметров инструмента или данных проекта. Его можно использовать только при публикации в ArcGIS Enterprise или ArcGIS Server 11.2 или более поздней версии.

  • True — URL-адрес векторного слоя будет преобразован в класс объектов файловой базы геоданных. Используется по умолчанию.
  • False — URL-адрес векторного слоя сохраняется.
Boolean
removeDefaultValues
(чтение и запись)

Список имен параметров, для которых значения по умолчанию будут удалены в веб-инструменте. Если в веб-инструменте содержится несколько инструментов, имена параметров должны включать имя инструмента, например, ["BufferModel.Output_Feature_Class", "BufferModel.Distance_value_or_field"]. Чтобы удалить значения по умолчанию для всех параметров, используйте ключевое слово REMOVE_ALL в формате ["BufferModel.REMOVE_ALL"].

List

Обзор метода

МетодОписание
exportToSDDraft (out_sddraft)

Конвертирует GeoprocessingSharingDraft в файл черновика определения сервиса (.sddraft).

Методы

exportToSDDraft (out_sddraft)
ПараметрОписаниеТип данных
out_sddraft

A string that represents the path and file name for the output service definition draft file (.sddraft).

String

Пример кода

Опубликовать веб-инструмент в ArcGIS Enterprise

Следующий скрипт создаст файл черновика определения сервиса веб-инструмента (.sddraft). Затем файл черновика определения сервиса размещается и публикуется в ArcGIS Enterprise как веб-инструмент. Поскольку первый входной параметр инструмента - это класс объектов, входным режимом параметра веб-инструмента является значение, определенное пользователем.

import arcpy
import os

# Sign in to portal
arcpy.SignInToPortal("https://portal.domain.com/webadaptor", 
                     "MyUsername", "MyPassword")

# Set output file names
outdir = r"C:\Project"
service_name = "GeoprocessingSharingDraftExample"
federated_server_url = "https://MyFederatedServer.domain.com/serverWebadaptor"
toolbox = os.path.join(outdir, "MyAnalysisTools.tbx")
sddraft_filename = service_name + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
sd_filename = service_name + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)

# Run the tool and set to a result object
arcpy.ImportToolbox(toolbox)
result = arcpy.reports.MyCustomAnalysis(os.path.join(outdir, "parcels.gdb”, “taxlots"), "40", "MyOutput.pdf")

# Create GeoprocessingSharingDraft and set its properties
sddraft = arcpy.sharing.CreateSharingDraft("FEDERATED_SERVER", "WEB_TOOL", service_name, result)
sddraft.targetServer = federated_server_url
sddraft.description = "This is description"
sddraft.summary = "This is summary"
sddraft.tags = "tag1, tag2"
sddraft.serverFolder = "MyServerFolder"
sddraft.portalFolder = "MyPortalFolder"

# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)

try:
    # Run Stage Service tool
    arcpy.server.StageService(sddraft_output_filename, sd_output_filename)

    # Display the analyzer warning messages
    print(arcpy.GetMessages(1))

    # Share to portal
    arcpy.server.UploadServiceDefinition(sd_output_filename, federated_server_url)
except arcpy.ExecuteError:
    # Display the analyzer error or execution error messages
    print(arcpy.GetMessages(2))
Перезаписать веб-инструмент в ArcGIS Enterprise

Следующий скрипт перезаписывает файл черновика определения сервиса веб-инструмента (.sddraft). Если имя сервиса уже существует, веб-инструмент будет перезаписан. В противном случае будет создан новый веб-инструмент. Поскольку первым входным параметром инструмента является слой, а параметр choiceLists класса GeoprocessingSharingDraft содержит два слоя, входным режимом параметра веб-инструмента является список выбора, который содержит два слоя.

import arcpy
import os

# Sign in to portal
arcpy.SignInToPortal("https://portal.domain.com/webadaptor", 
                     "MyUsername", "MyPassword")

# Set output file names
outdir = r"C:\Project\Output"
service_name = "GeoprocessingSharingDraftExample"
federated_server_url = "https://MyFederatedServer.domain.com/serverWebadaptor"
toolbox = os.path.join(outdir, "MyAnalysisTools.tbx")
sddraft_filename = service_name + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
sd_filename = service_name + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)

# Run the tool and set to a result object
arcpy.management.MakeFeatureLayer(os.path.join(outdir, "parcels.gdb", "taxlots1"), "taxlotslayer1")
arcpy.management.MakeFeatureLayer(os.path.join(outdir, "parcels.gdb", "taxlots2"), "taxlotslayer2")
arcpy.ImportToolbox(toolbox)
result = arcpy.reports.MyCustomAnalysis("taxlotslayer1", "40", "MyOutput.pdf")

# Create GeoprocessingSharingDraft and set overwrite and choicelists properties
sddraft = arcpy.sharing.CreateSharingDraft("FEDERATED_SERVER", "WEB_TOOL", service_name, result)
sddraft.targetServer = federated_server_url
sddraft.description = "This is description"
sddraft.summary = "This is summary"
sddraft.tags = "tag1, tag2"
sddraft.serverFolder = "MyServerFolder"
sddraft.portalFolder = "MyPortalFolder"
sddraft.overwriteExistingService = True
sddraft.choicelists = {"mywebtooltask.parameter1": ["taxlotslayer1", "taxlotslayer2"]}

# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)

try:
    # Run Stage Service tool
    arcpy.server.StageService(sddraft_output_filename, sd_output_filename)

    # Display the analyzer warning messages
    print(arcpy.GetMessages(1))

    # Share to portal
    arcpy.server.UploadServiceDefinition(sd_output_filename, federated_server_url)
except arcpy.ExecuteError:
    # Display the analyzer error or execution error messages
    print(arcpy.GetMessages(2))
Создание и публикация определения автономнго сервиса

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

import arcpy
import os

# Set output file names
outdir = r"C:\Project\Output"
service_name = "GeoprocessingSharingDraftExample"
toolbox = os.path.join(outdir, "MyAnalysisTools.tbx")
sddraft_filename = service_name + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
sd_filename = service_name + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)

# Run the tool and set to a result object
arcpy.ImportToolbox(toolbox)
result = arcpy.reports.MyCustomAnalysis(os.path.join(outdir, "parcels.gdb", "taxlots"), "50", "MyOutput.pdf")

# Create GeoprocessingSharingDraft and set offline and offlineTarget properties
server_type = "FEDERATED_SERVER"
sddraft = arcpy.sharing.CreateSharingDraft("FEDERATED_SERVER", "WEB_TOOL", service_name, result)
sddraft.offline = True
# Set offlineTarget property to "11" for ArcGIS Enterprise 11.0 or later
# The default is ArcGIS Enterprise 10.9.1 or earlier
sddraft.offlineTarget = "10x"

# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)

# Run Stage Service tool
print("Start Staging")
arcpy.server.StageService(sddraft_output_filename, sd_output_filename)

# Sign in to portal to upload and publish
arcpy.SignInToPortal("https://portal.domain.com/webadaptor", 
                     "MyUserName", "MyPassword")
# Share to portal
print("Start Uploading")
arcpy.server.UploadServiceDefinition(sd_output_filename, server_type)

print("Finish Publishing")
Публикация сервиса геообработки в автономном ArcGIS Server

Следующий скрипт создает черновик файла определения сервиса сервиса геообработки (.sddraft). Затем файл скрипта черновика определения сервиса размещается и публикуется в ArcGIS Server как сервис геообработки. Поскольку первый входной параметр инструмента - это класс объектов, входным режимом параметра геообработки является значение, определенное пользователем.

import arcpy
import os

# Set output file names
outdir = r"C:\Project\Output"
service_name = "GeoprocessingSharingDraftExample"
toolbox = os.path.join(outdir, "MyAnalysisTools.tbx")
sddraft_filename = service_name + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
sd_filename = service_name + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)

# Run the tool and set to a result object
arcpy.ImportToolbox(toolbox)
result = arcpy.reports.MyCustomAnalysis(os.path.join(outdir, "parcels.gdb", "taxlots"), "40", "MyOutput.pdf")

# Create GeoprocessingSharingDraft
target_server_connection = os.path.join(outdir, "gisserver.ags.esri.com (publisher).ags")
sddraft = arcpy.sharing.CreateSharingDraft("STANDALONE_SERVER", "GP_SERVICE", service_name, result)
sddraft.targetServer = target_server_connection
sddraft.description = "This is description"
sddraft.summary = "This is summary"
sddraft.tags = "tag1, tag2"
sddraft.serverFolder = "MyServerFolder"

# Create Service Definition Draft file
sddraft.exportToSDDraft(sddraft_output_filename)

try:
    # Run Stage Service tool
    arcpy.server.StageService(sddraft_output_filename, sd_output_filename)

    # Display the analyzer warning messages
    print(arcpy.GetMessages(1))

    # Publish to stand-alone server
    arcpy.server.UploadServiceDefinition(sd_output_filename, target_server_connection)
except arcpy.ExecuteError:
    # Display the analyzer error or execution error messages
    print(arcpy.GetMessages(2))