GeoprocessingSharingDraft

Synthèse

The GeoprocessingSharingDraft class allows you to create a service definition draft file (.sddraft) for a web tool for ArcGIS Enterprise or a geoprocessing service for ArcGIS Server.

Discussion

To create a GeoprocessingSharingDraft object, use the CreateSharingDraft function.

  • To share a web tool, set the serverType parameter to FEDERATED_SERVER and the serviceType parameter to WEB_TOOL.
  • To share a geoprocessing service, set the serverType parameter to STANDALONE_SERVER and the serviceType parameter to GP_SERVICE.

After the GeoprocessingSharingDraft object has been configured, it can be saved to a service definition draft file (.sddraft) using the exportToSDDraft method. It can then be staged and shared to either ArcGIS Enterprise or ArcGIS Server using the Stage Service and Upload Service Definition tools. For more information, see Introduction to arcpy.sharing.

Code samples are available for the following:

Propriétés

PropriétéExplicationType de données
serverType
(Lecture seule)

The server type as specified when the sharing draft was created.

  • FEDERATED_SERVER—An ArcGIS Enterprise portal federated server is supported for sharing.
  • STANDALONE_SERVER—A stand-alone ArcGIS Server site is supported for sharing. This is the default.
String
serviceType
(Lecture seule)

The service type as specified when the sharing draft was created.

  • WEB_TOOL—A web tool is shared if serverType is set to FEDERATED_SERVER.
  • GP_SERVICE—A geoprocessing service is shared if serverType is set to STANDALONE_SERVER. This is the default.
String
serviceName
(Lecture et écriture)

The name of the web tool or geoprocessing service. This is the name people will see and use to identify the service. The name can only contain alphanumeric characters and underscores. For a web tool, spaces are allowed. For a geoprocessing service, no spaces or special characters are allowed. The name cannot be more than 120 characters. The default value is None.

String
description
(Lecture et écriture)

The description of the web tool or geoprocessing service. The default value is None.

String
summary
(Lecture et écriture)

The web tool or service summary. Use this property to override the user interface summary or to provide a summary if one does not exist. The summary provided here will not be persisted back to the original geoprocessing tool. The default value is None.

String
tags
(Lecture et écriture)

The web tool or service tags. Use this property to override the user interface tags or to provide tags if they do not exist. The tags provided here will not be persisted back to the original geoprocessing tool. The default value is None.

String
offline
(Lecture et écriture)

Specifies whether to save an offline service definition. The default value is False.

The following list shows what to do when the property is set to a specific value.

  • False—Use if a connected service definition draft file (.sddraft) is created using the exportToSDDraft method of the class. Sign in to a portal if the serverType property is set to FEDERATED_SERVER. Provide a server URL or a server connection file (.ags) to the targetServer property of the class if the serverType property is set to STANDALONE_SERVER.
  • True—Use if an offline service definition draft file (.sddraft) is created using the exportToSDDraft method of the class. There is no need to sign in to a portal if the serverType property is set to FEDERATED_SERVER, or to provide a server connection file or URL if the serverType property is set to STANDALONE_SERVER.
Boolean
offlineTarget
(Lecture et écriture)

The target server version to which the service definition will be published. Specifying a version ensures that the service definition contains content compatible with your server. This property is only honored if the offline property is set to True.

  • 10x—Content will be compatible with ArcGIS Server 10.9.1 or earlier. This is the default.
  • 11—Content will be compatible with ArcGIS Server 11.0 or later.
String
targetServer
(Lecture et écriture)

The server to which the web tool or geoprocessing service will be published. This property is required if the offline property is set to False.

If the serverType property is set to FEDERATED_SERVER, provide the server URL to the ArcGIS Enterpriseportal federated server.

If the serverType property is set to STANDALONE_SERVER, the following are supported:

  • ArcGIS Server connection—You can use ArcGIS Server connections listed under the Servers node in the ArcGIS Pro Project window, or you can browse to a folder where server connection files (.ags) are stored.
  • URL to ArcGIS Server—You can specify the URL to ArcGIS Server, provided an administrator connection to ArcGIS Server has been added to the ArcGIS Pro project, and you are opening the project in the script or running the tool in ArcGIS Pro.

String
overwriteExistingService
(Lecture et écriture)

Specifies whether to overwrite an existing web tool or geoprocessing service. The default value is False.

Boolean
copyDataToServer
(Lecture et écriture)

Specifies whether the data referenced in the result will be copied to the server. If the value is True, all data in the result will be copied, including data that is registered with your server. If the value is False, only data that is not registered with your server will be copied. Data registered with your federated server will be referenced by the service. The default value is False.

Boolean
executionType
(Lecture et écriture)

How the client (the application using the task) interacts with the server and gets the result from the task. ArcGIS Pro handles both processing types natively. The default value is Asynchronous.

  • Synchronous—The client waits for the task to finish. Typically, a synchronous task processes quickly—five seconds or less.
  • Asynchronous—The task typically takes longer to run, and the client must periodically query the server if the task has finished and, if it has, get the result. A web app using an asynchronous task must have logic implemented to check the status of a task and handle the result once processing is finished. ArcGIS Pro handles both processing types natively.

String
serverFolder
(Lecture et écriture)

The folder name that will be published to the server. If the folder does not currently exist, it will be created. The default folder is the server root level. The default value is None.

String
portalFolder
(Lecture et écriture)

The name of the folder of the portal that will be published as a web tool. The default folder is the root folder in My Content. This property is only available when serverType is FEDERATED_SERVER.

String
maximumRecords
(Lecture et écriture)

The maximum number of results the web tool or service can return to a client. Setting this value to a large number means your GIS server can handle sending that number of individual records or features to the client. If you don't want to return any features, set this value to 0 (zero). Typically, you set this value to zero only when you enable View result with a map service. The default value is 1000.

Integer
maxInstances
(Lecture et écriture)

The maximum number of instances a web tool or service can start and make available for use. For heavily used web tools or services, you may need to increase this value. Ensure that the server has adequate hardware to support the maximum number of instances allowed for this property.

Integer
minInstances
(Lecture et écriture)

The minimum number of instances a service will start and make available for use. For heavily used services, you may need to increase this value. The default value is 1.

Integer
resultMapService
(Lecture et écriture)

When publishing, you can choose to view the result of all tasks with the service as a map (in addition to other results of the task). The map is created on the server using a map service for transport back to the client as an image (a .jpeg file, for example). The symbology, labeling, transparency, and all other properties of the returned map are the same as the settings of the output layer. If you are creating result layers in the Python scripting environment (outside ArcGIS Pro), default symbology will be used. To maintain control over symbology, you must precreate layer files with symbology and use them to modify the output symbology of the task. When you choose this property, a map service is automatically created on the server with the same name as the web tool or geoprocessing service. The default value is False.

Boolean
messageLevel
(Lecture et écriture)

The message level for the web tool or geoprocessing service. The following is a list of valid message levels the service will return to the client:

  • None—No geoprocessing messages are returned to the client except those regarding whether the processing was successful or failed.
  • Error—Only tool messages that produce an error are returned to the client.
  • Warning—All tool error and warning messages are returned to the client.
  • Info—All tool messages from processing are returned to the client.

The default is Error.

String
maxUsageTime
(Lecture et écriture)

The maximum time, in seconds, that a service can be used. You can increase the default of 600 seconds (10 minutes) for long-running geoprocessing tasks. Alternatively, you can reduce this time to ensure that a client will not misapply the service. The default value is 600.

Integer
maxWaitTime
(Lecture et écriture)

The maximum time, in seconds, that a client will wait to connect with an instance before timing out. When all instances are busy processing requests, subsequent requests are queued. If this time-out elapses before an instance becomes available, the task will fail. The default value is 60.

Integer
capabilities
(Lecture et écriture)

The capabilities a service can support. The default value is None.

  • UPLOADS—The client can upload related operations and resources.
  • None—No capabilities need to be set. This is the default.
String
constantValues
(Lecture et écriture)

A list of parameter names to be set as a constant. If multiple tools are included, parameter names must be qualified with the tool name, for example, ["toolX.parameterA", "toolY.parameterD"]. The default value is None.

List
choicelists
(Lecture et écriture)

The supported choice values for a string parameter using the service task name parameter and the list of the string values, for example, {"ServiceTaskName.parameterName":["string1", "string2"]}. The default value is None.

Dictionary
enableOutputFeatureService
(Lecture et écriture)

This property specifies whether the output feature service name will be available or not. The default value is None.

To set this property to True, the resultMapService cannot be True, the executionType must be Asynchronous, and the serviceType must be WEB_TOOL.

If not specified, this property will be set to True automatically when all of the following conditions are met:

  • The resultMapService is set to False or not specified.
  • The executionType is set to Asynchronous or not specified.
  • The serviceType is set to WEB_TOOL or not specified.

See use web tools with output feature service for more information about output feature service.

Boolean

Vue d’ensemble des méthodes

MéthodeExplication
exportToSDDraft (out_sddraft)

Converts a GeoprocessingSharingDraft to a service definition draft file (.sddraft).

Méthodes

exportToSDDraft (out_sddraft)
ParamètreExplicationType de données
out_sddraft

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

String

Exemple de code

Publish a web tool to ArcGIS Enterprise

The following script creates a web tool service definition draft file (.sddraft). The service definition draft file is then staged and published to ArcGIS Enterprise as a web tool. Since the first tool input parameter of the tool is a feature class, the input mode of the web tool parameter is user-defined.

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))
Overwrite a web tool to ArcGIS Enterprise

The following script overwrites a web tool service definition draft file (.sddraft). If the service name already exists, the web tool will be overwritten. Otherwise, a new web tool will be created. Since the first tool input parameter is a layer and the choicelists parameter of the GeoprocessingSharingDraft class contains two layers, the input mode of the web tool parameter is a choice list containing two layers.

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))
Create and publish an offline service definition

The following script creates an offline service definition for the target portal version and publishes it as a web tool.

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")
Publish a geoprocessing service to stand-alone ArcGIS Server

The following script creates a geoprocessing service service definition draft file (.sddraft). The script service definition draft file is then staged and published to ArcGIS Server as a geoprocessing service. Since the first tool input parameter of the tool is a feature class, the input mode of the geoprocessing parameter is user defined.

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