GeoprocessingSharingDraft

摘要

您可通过 GeoprocessingSharingDraft 类创建 ArcGIS EnterpriseWeb 工具服务定义文件 (.sddraft) 或 ArcGIS Server地理处理服务

说明

要创建 GeoprocessingSharingDraft 对象,请使用 CreateSharingDraft 函数。

  • 要共享 Web 工具,将 serverType 参数设置为 FEDERATED_SERVER,将 serviceType 参数设置为 WEB_TOOL
  • 要共享地理处理服务,将 serverType 参数设置为 STANDALONE_SERVER,将 serviceType 参数设置为 GP_SERVICE

配置 GeoprocessingSharingDraft 对象后,可以使用 exportToSDDraft 方法将其保存到服务定义草稿文件 (.sddraft)。 随后即可使用过渡服务上传服务定义工具将其过渡和共享给 ArcGIS EnterpriseArcGIS Server。 有关详细信息,请参阅 arcpy.sharing 简介

代码示例可用于以下用途:

属性

属性说明数据类型
serverType
(只读)

创建共享草稿时指定的服务器类型。

  • FEDERATED_SERVER - ArcGIS Enterprise 门户联合服务器支持共享。
  • STANDALONE_SERVER - 独立 ArcGIS Server 站点支持共享。 这是默认设置。
String
serviceType
(只读)

创建共享草稿时指定的服务类型。

  • WEB_TOOL - 如果 serverType 设置为 FEDERATED_SERVER,则会共享 Web 工具
  • GP_SERVICE - 如果 serverType 设置为 STANDALONE_SERVER,则会共享地理处理服务。 这是默认设置。
String
serviceName
(可读写)

Web 工具或地理处理服务的名称。 用户可以看到该名称并使用该名称来识别服务。 名称只能包含字母数字字符和下划线。 对于 Web 工具,允许使用空格。 对于地理处理服务,不允许使用空格或特殊字符。 名称不能超过 120 个字符。 默认值为 None

String
description
(可读写)

Web 工具或地理处理服务的描述。 默认值为 None

String
summary
(可读写)

Web 工具或服务摘要。 使用此属性可以覆盖用户界面摘要,如果摘要不存在,则将提供摘要。 此处提供的摘要不会保留回原始地理处理工具中。 默认值为 None

String
tags
(可读写)

Web 工具或服务标签。 使用此属性可以覆盖用户界面标签,如果标签不存在,则将提供标签。 此处提供的标签不会保留回原始地理处理工具中。 默认值为 None

String
offline
(可读写)

指定是否要保存离线服务定义。 默认值为 False

以下列表显示属性设置为特定值时要执行的操作。

  • False - 如果使用类的 exportToSDDraft 方法创建连接的服务定义草稿文件 (.sddraft),则使用。 如果 serverType 属性已设置为 FEDERATED_SERVER,登录门户。 如果 serverType 属性已设置为 STANDALONE_SERVER,则向类的 targetServer 属性提供服务器 URL 或服务器连接文件 (.ags)。
  • True - 如果使用类的 exportToSDDraft 方法创建离线的服务定义草稿文件 (.sddraft),则使用。 如果 serverType 属性已设置为 FEDERATED_SERVER,则无需登录门户,或者如果 serverType 属性已设置为 STANDALONE_SERVER,则无需提供服务器连接文件或 URL。
Boolean
offlineTarget
(可读写)

将发布服务定义的目标服务器版本。 指定一个版本可确保服务定义包含与服务器兼容的内容。 仅在属性 offline 设置为 True 时支持此属性。

  • 10x - 内容将与 ArcGIS Server 10.9.1 或较早版本兼容。 这是默认设置。
  • 11 - 内容将与 ArcGIS Server 11.0 或更高版本兼容。
String
targetServer
(可读写)

将发布 Web 工具地理处理服务的服务器。 如果 offline 属性设置为 False,则此属性是必需的。

如果 serverType 属性已设置为 FEDERATED_SERVER,请提供 ArcGIS Enterprise 门户联合服务器的服务器 URL。

如果 serverType 属性已设置为 STANDALONE_SERVER,则支持以下内容:

  • ArcGIS Server 连接 - 您可以使用在 ArcGIS Pro 工程窗口中服务器节点下列出的 ArcGIS Server 连接,也可以浏览至存储服务器连接文件 (.ags) 的文件夹。
  • ArcGIS Server 的 URL - 如果已将 ArcGIS Server管理员连接添加到 ArcGIS Pro 工程,且您正在脚本中打开工程或在 ArcGIS Pro 中运行工具,则可以执行 ArcGIS Server 的 URL。

String
overwriteExistingService
(可读写)

指定是否覆盖现有 Web 工具或地理处理服务。 默认值为 False

Boolean
copyDataToServer
(可读写)

指定是否将结果中引用的数据复制到服务器。 如果值为 True,则将复制结果中的所有数据,包括注册到服务器的数据。 如果值为 False,则只会复制未在服务器上注册的数据。 服务将引用已在联合服务器中注册的数据。 默认值为 False

Boolean
executionType
(可读写)

客户端(使用任务的应用程序)如何与服务器进行交互以及如何从任务获取结果。 ArcGIS Pro 可以本地处理两种处理类型。 默认值为 Asynchronous

  • Synchronous - 客户端将等待任务完成。 通常,同步任务可以快速执行(不超过五秒)。
  • Asynchronous - 任务通常需要更长的时间运行,客户端必须定期向服务器查询任务是否已完成,如果已完成,则获取结果。 使用异步任务的 Web 应用程序必须已实施逻辑,才能在处理完成后检查任务状态并处理结果。 ArcGIS Pro 可以本地处理两种处理类型。

String
serverFolder
(可读写)

要发布到服务器的文件夹名称。 如果该文件夹当前不存在,则将创建该文件夹。 默认的文件夹为服务器根级别。 默认值为 None

String
portalFolder
(可读写)

将作为 Web 工具发布的门户文件夹的名称。 默认文件夹是“我的内容”中的根文件夹。 此属性仅在 serverTypeFEDERATED_SERVER 时才可用。

String
maximumRecords
(可读写)

Web 工具或服务可以返回给客户端的最大结果数。 将此值设成一个较大数值意味着您的 GIS 服务器可以将该数量的个人记录或要素发送到客户端。 如果您不希望返回任何要素,请将此值设为 0(零)。 通常情况下,只有当您启用通过地图服务查看结果时才将此值设为零。 默认值为 1000。

Integer
maxInstances
(可读写)

Web 工具或服务可以启动并可供使用的最大实例数。 对于频繁使用的 Web 工具或服务,您可能需要提高该值。 确保服务器具有的硬件足以支持此属性所允许的最大实例数。

Integer
minInstances
(可读写)

服务将要启动并可供使用的最少实例数。 对于频繁使用的服务,您可能需要提高该值。 默认值为 1。

Integer
resultMapService
(可读写)

发布时,可以选择将服务作为地图以查看服务所有任务的结果(以及任务的其他结果)。 该地图使用地图服务创建在服务器上,以将其以影像形式(如 .jpeg 文件)传输回客户端。 返回地图的符号系统、标注、透明度和所有其他属性与输出图层的设置完全相同。 如果您在 Python 脚本环境(ArcGIS Pro 之外)中创建结果图层,则将使用默认符号系统。 要保留符号系统的控制权,您必须使用符号系统预先创建图层文件,然后将其用于修改任务的输出符号系统。 选择此属性时,服务器上会自动创建一个地图服务,其名称与 Web 工具或地理处理服务相同。 默认值为 False

Boolean
messageLevel
(可读写)

Web 工具或地理处理服务的消息级别。 以下是服务返回到客户端的有效消息级别的列表:

  • 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
enableOutputFeatureService
(可读写)

此属性指定输入要素服务名称是否可用。 默认值为 None

要将此属性设置为 TrueresultMapService 不能为 TrueexecutionType 必须为 AsynchronousserviceType 必须为 WEB_TOOL

如果未指定,则当满足以下所有条件时,此属性将自动设置为 True

  • resultMapService 设置为 False 或未指定。
  • executionType 设置为 Asynchronous 或未指定。
  • serviceType 设置为 WEB_TOOL 或未指定。

有关输出要素服务的详细信息,请参阅将 web 工具与输出要素服务一起使用

Boolean

方法概述

方法说明
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

代码示例

将 Web 工具发布到 ArcGIS Enterprise

以下脚本可以创建 Web 工具服务定义草稿文件 (.sddraft)。 然后,系统会将服务定义草稿文件过渡并作为 Web 工具发布到 ArcGIS Enterprise。 由于工具的第一个工具输入参数是要素类,web 工具参数的输入模式用户定义

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))
将 Web 工具覆盖到 ArcGIS Enterprise

以下脚本可以覆盖 Web 工具服务定义草稿文件 (.sddraft)。 如果服务名称已存在,则将覆盖该 web 工具。 否则,将创建新 web 工具。 由于第一个工具输入参数是图层,而 GeoprocessingSharingDraft 类的 choicelists 参数包含两个图层,web 工具参数的输入模式为包含两个图层的选项列表

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))
创建并发布离线服务定义

以下脚本将为目标门户版本创建离线服务定义,并将其发布为 Web 工具。

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))