Краткая информация
Класс 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 (только чтение) | Тип сервера указывается при создании публикуемого черновика.
| String |
serviceType (только чтение) | Тип сервиса указывается при создании публикуемого черновика.
| String |
serviceName (чтение и запись) | Имя веб-инструмента или сервиса геообработки. Это имя будут видеть пользователи и идентифицировать по нему сервис. Имя может содержать только буквы, цифры и знак подчеркивания. Для веб-инструмента допускается использование пробелов. Для сервиса геообработки не допускается использование пробелов и специальных символов. Длина имени не должна превышать 120 символов. Значение по умолчанию равно None. | String |
description (чтение и запись) | Описание веб-инструмента или сервиса геообработки. Значение по умолчанию равно None. | String |
summary (чтение и запись) | Краткая информация о веб-инструменте или сервисе. Используйте это свойство для замены краткой информации пользовательского интерфейса или создания этой информации, если она не существует. Приведенная здесь краткая информация не будет сохранена в исходном инструменте геообработки. Значение по умолчанию равно None. | String |
tags (чтение и запись) | Теги веб-инструмента или сервиса. Используйте это свойство для замены тегов пользовательского интерфейса или введения тегов, если они отсутствуют. Приведенные здесь теги не будут сохранены в исходном инструменте геообработки. Значение по умолчанию равно None. | String |
offline (чтение и запись) | Определяет, будет ли сохраняться определение сервиса офлайн. Значение по умолчанию равно False. В следующем списке показано, что нужно делать в случае задания для свойства какого-либо значения.
| Boolean |
offlineTarget (чтение и запись) | Версия целевого сервиса, для которой будет опубликовано определение сервиса. Задание версии позволяет быть уверенным в том, что в определении сервиса содержится контент, совместимый с вашим сервером. Это свойство поддерживается, только если для свойства offline задано True.
| String |
targetServer (чтение и запись) | Сервер, на котором будет опубликован веб-инструмент или сервис геообработки. Это свойство необходимо, если для свойства offline задано False. Если для свойства serverType задано FEDERATED_SERVER, укажите URL сервера к интегрированному с сервером порталу ArcGIS Enterprise. Если для свойства serverType задано STANDALONE_SERVER, поддерживаются следующие варианты:
| String |
overwriteExistingService (чтение и запись) | Указывает, перезаписывать ли существующие веб-инструмент или сервис геообработки. Значение по умолчанию равно False. | Boolean |
copyDataToServer (чтение и запись) | Определяет, будут ли копироваться на сервер данные результата. Если значение равно True, то будут скопированы все данные результата, в том числе данные, которые зарегистрированы на вашем сервере. Если значение равно False, то будут скопированы только данные, которые не зарегистрированы на вашем сервере. Сервис будет использовать данные, которые зарегистрированы на вашем интегрированном сервере. Значение по умолчанию равно False. | Boolean |
executionType (чтение и запись) | Как клиент (приложение, использующее задачу) будет взаимодействовать с сервером и получать результаты выполнения задачи. ArcGIS Pro поддерживает оба типа обработки. Значение по умолчанию равно Asynchronous.
| String |
serverFolder (чтение и запись) | Название папки, которая будет опубликована на сервере. Если папка не существует, она будет создана. Папкой по умолчанию является корневая папка сервера. Значение по умолчанию равно None. | String |
portalFolder (чтение и запись) | Имя папки портала, которая будет публиковаться, как веб-инструмент. Папкой по умолчанию является корневая папка в Моих ресурсах. Это свойство доступно только если для serverType задано FEDERATED_SERVER. | String |
maximumRecords (чтение и запись) | Максимальное число результатов, которые веб-инструмент или сервис могут возвратить клиенту. Чем большее значение будет задано для этого параметра, тем большее число записей или объектов, направляемых клиенту, сможет обрабатывать ГИС-сервер. Если не нужно возвращать какие-либо объекты, установите для этого параметра значение 0 (нуль). Как правило, это значение равно нулю только при включенном параметре Просмотреть результат с помощью картографического сервиса. Значением по умолчанию является 1000. | Integer |
maxInstances (чтение и запись) | Максимальное число экземпляров, которые могут быть запущены веб-инструментом или сервисом и доступны для использования. Для сервисов и веб-инструментов с большой нагрузкой вам может понадобиться увеличить это значение. Убедитесь, что на сервере присутствует достаточное аппаратное обеспечение для поддержки того максимального числа экземпляров, которое было задано для этого свойства. | Integer |
minInstances (чтение и запись) | Минимальное число экземпляров, которые будут запущены сервисом и станут доступны для использования. Для сервисов с большой нагрузкой вам может понадобиться увеличить это значение. Значение по умолчанию равно 1. | Integer |
resultMapService (чтение и запись) | При публикации можно выбрать просмотр результата всех задач сервиса в виде карты (в дополнение к любым другим результатам задачи). Карта создается на сервере с помощью картографического сервиса, а затем отправляется обратно клиенту в виде изображения (например, файла .jpeg). Символы, надписи, прозрачность и все другие свойства возвращенной карты соответствуют настройкам выходного слоя. Если вы создаете слои результата в среде скриптов Python (вне ArcGIS Pro), то будут использоваться символы, установленные по умолчанию. Чтобы управлять символами, вам необходимо сначала создать файлы слоя возможностями символов и использовать их для изменения выходных символов для задачи. При выборе этого свойства картографический сервис автоматически создается на сервере с тем же именем, что и веб-инструмент или сервис геообработки. Значение по умолчанию равно False. | Boolean |
messageLevel (чтение и запись) | Уровень сообщения для веб-инструмента или сервиса геообработки. Далее приведен список доступных уровней сообщений, которые сервис будет возвращать :
По умолчанию – Error. | String |
maxUsageTime (чтение и запись) | Максимальное время (в секундах) использования сервиса. Вы можете увеличить значение по умолчанию, равное 600 секунд (10 мин), чтобы выполнять долгосрочные задачи геообработки. Кроме того, можно уменьшить это время, чтобы клиент не применял сервисы неправильно. Значение по умолчанию – 600. | Integer |
maxWaitTime (чтение и запись) | Максимальное время в секундах, в течение которого клиент будет ждать подключения к экземпляру, прежде чем истечет срок ожидания. Когда все экземпляры заняты обработкой запросов, последующий запросы добавляются в очередь. Если срок ожидания истекает до того, как экземпляр станет доступным, задача завершится со сбоем. Значение по умолчанию – 60. | Integer |
capabilities (чтение и запись) | Возможности, которые поддерживает сервис. Значением по умолчанию является Нет.
| String |
constantValues (чтение и запись) | Список имен параметров, которые будут настроены в виде константы. Если содержится несколько инструментов, имена параметров должны включать имя инструмента, например, ["toolX.parameterA", "toolY.parameterD"]. Значением по умолчанию является Нет. | List |
choicelists (чтение и запись) | Поддерживаемые значения выбора для строкового параметра с использованием параметра имени задачи сервиса и списка строковых значений, например, {"ServiceTaskName.parameterName":["string1", "string2"]}. Значением по умолчанию является Нет. | Dictionary |
Обзор метода
Метод | Описание |
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 |
Пример кода
Следующий скрипт создаст файл черновика определения сервиса веб-инструмента (.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.esri.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))
Следующий скрипт перезаписывает файл черновика определения сервиса веб-инструмента (.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.esri.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")
Следующий скрипт создает черновик файла определения сервиса сервиса геообработки (.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))