Краткая информация
Класс 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 (чтение и запись) | Определяет, будут ли результаты всех задач сервиса отображаться в виде карты (в дополнение к другим результатам задачи). При True карта создается на сервере с помощью картографического сервиса, а затем отправляется обратно клиенту в виде изображения (например, файла .jpeg). Символы, надписи, прозрачность и все другие свойства возвращенной карты соответствуют настройкам выходного слоя. Если вы создаете слои результата в среде скриптов Python (вне ArcGIS Pro), то будут использоваться символы, установленные по умолчанию. Чтобы управлять символами, создайте файлы слоя с возможностями символов и использовать их для изменения выходных символов для задачи. При True картографический сервис автоматически создается на сервере с тем же именем, что и у веб-инструмента или сервиса геообработки. Значение по умолчанию равно False. | Boolean |
messageLevel (чтение и запись) | Определяет уровень сообщения, который будет использоваться для веб-инструмента или сервиса геообработки. Далее приведен список доступных уровней сообщений, которые сервис будет возвращать :
По умолчанию – Error. | String |
maxUsageTime (чтение и запись) | Максимальное время (в секундах) использования сервиса. Вы можете увеличить значение по умолчанию, равное 600 секунд (10 мин), чтобы выполнять долгосрочные задачи геообработки. Кроме того, можно уменьшить это время, чтобы клиент не применял сервисы неправильно. Значение по умолчанию – 600. | Integer |
maxWaitTime (чтение и запись) | Максимальное время в секундах, в течение которого клиент будет ждать подключения к экземпляру, прежде чем истечет срок ожидания. Когда все экземпляры заняты обработкой запросов, последующий запросы добавляются в очередь. Если срок ожидания истекает до того, как экземпляр станет доступным, задача завершится со сбоем. Значение по умолчанию – 60. | Integer |
capabilities (чтение и запись) | Определяет возможности, которые будут поддерживаться сервисом.
| 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 при выполнении всех следующих условий:
Подробнее о выходном сервисе объектов см. раздел Использование веб-инструментов с выходным сервисом объектов. | Boolean |
convertFeatureLayerURL (чтение и запись) | Определяет, будет ли URL-адрес векторного слоя преобразован в класс объектов файловой базы геоданных. Это свойство используется для сохранения URL-адреса векторного слоя или сервиса для входных или выходных параметров инструмента или данных проекта. Его можно использовать только при публикации в ArcGIS Enterprise или ArcGIS Server 11.2 или более поздней версии.
| 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 |
Пример кода
Следующий скрипт создаст файл черновика определения сервиса веб-инструмента (.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))
Следующий скрипт перезаписывает файл черновика определения сервиса веб-инструмента (.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")
Следующий скрипт создает черновик файла определения сервиса сервиса геообработки (.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))