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
(только чтение)

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

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.

  • 10x - контент будет совместим с ArcGIS Server 10.9.1 или более ранней версии. Используется по умолчанию.
  • 11 - контент будет совместим с ArcGIS Server 11.0 или более поздней версии.
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
(чтение и запись)

При публикации можно выбрать просмотр результата всех задач сервиса в виде карты (в дополнение к любым другим результатам задачи). Карта создается на сервере с помощью картографического сервиса, а затем отправляется обратно клиенту в виде изображения (например, файла .jpeg). Символы, надписи, прозрачность и все другие свойства возвращенной карты соответствуют настройкам выходного слоя. Если вы создаете слои результата в среде скриптов Python (вне ArcGIS Pro), то будут использоваться символы, установленные по умолчанию. Чтобы управлять символами, вам необходимо сначала создать файлы слоя возможностями символов и использовать их для изменения выходных символов для задачи. При выборе этого свойства картографический сервис автоматически создается на сервере с тем же именем, что и веб-инструмент или сервис геообработки. Значение по умолчанию равно 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"]. Значением по умолчанию является Нет.

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

Пример кода

Опубликовать веб-инструмент в 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.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))
Перезаписать веб-инструмент в 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.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")
Публикация сервиса геообработки в автономном 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))