Resumen
Converts Result objects and result files (.rlt) to a service definition draft file (.sddraft).
Nota:
A draft service definition does not contain data. A draft service alone cannot be used to publish a service.
Debate
CreateGPSDDraft is the first step to automating the publishing of a geoprocessing result to a GIS server using ArcPy. The output created from CreateGPSDDraft is a service definition draft file (.sddraft). A service definition draft is the combination of a result file or Result object, information about the server, and a set of service properties. A Result object can be created in a Python script by setting a variable and running a tool. For example, the following buffer result is saved to a variable called result:
import arcpy
result = arcpy.Buffer_analysis("inPts", "output.shp", "100 Meters")
Information about the server includes the server connection, server type being published to, type of service being published, metadata for the service (Item info), and data references (whether data is copied to the server).
The function returns a dictionary containing errors, warnings, and messages that you should address before creating the service definition file (.sd).
The service definition draft must be converted to a fully consolidated .sd file using the Stage Service tool. Staging compiles all the necessary information to successfully publish the GIS resource. If the data is not registered with the server, it will be added when the service definition draft is staged. The .sd file can be uploaded and published as a GIS service to a specified GIS server using the Upload Service Definition tool. This step copies the .sd file to the server, extracts required information, and publishes the GIS resource. For more information, see An overview of the Publishing toolset.
Nota:
If publishing to ArcGIS Enterprise or ArcGIS Server 10.9.1 or earlier, set the number of the staging version when using the Stage Service tool. For a list of server numbers, refer to the Staging Version parameter in the tool.
Sintaxis
CreateGPSDDraft (result, out_sddraft, service_name, {server_type}, {connection_file_path}, {copy_data_to_server}, {folder_name}, {summary}, {tags}, {executionType}, {resultMapServer}, {showMessages}, {maximumRecords}, {minInstances}, {maxInstances}, {maxUsageTime}, {maxWaitTime}, {maxIdleTime}, {capabilities}, {constantValues}, {choiceLists})
Parámetro | Explicación | Tipo de datos |
result [result,...] | One or multiple Result objects or result files (.rlt). Multiple results must be supplied in a list format. The following example demonstrates multiple results as input to the CreateGPSDDraft function:
| Result |
out_sddraft | The path and file name for the output .sddraft file. | String |
service_name | The name of the service. This is the name people will see and use to identify the service. The name can only contain alphanumeric characters and underscores. No spaces or special characters are allowed. The name cannot be more than 120 characters. | String |
server_type | Specifies the server type. If a connection_file_path parameter value is not provided, a server_type value must be specified. If a connection_file_path parameter value is provided, the server_type value is taken from the connection file. In this case, you can specify FROM_CONNECTION_FILE or skip the parameter. Nota:MY_HOSTED_SERVICES is only available when creating .sddraft files from ArcGIS Pro.
(El valor predeterminado es ARCGIS_SERVER) | String |
connection_file_path | The path and file name to the ArcGIS Server connection file (.ags). | String |
copy_data_to_server | Specifies whether the data referenced in the result parameter will be copied to the server. This parameter is only used if the server_type value is ARCGIS_SERVER and the connection_file_path value isn't provided. If the connection_file_path value is provided, the server's registered data stores will be used. For example, if the data in the result parameter is registered with the server, copy_data_to_server will always be False. Conversely, if the data in the result parameter is not registered with the server, copy_data_to_server will always be True.
(El valor predeterminado es False) | Boolean |
folder_name | The folder name where the service definition will be published. If the folder does not exist, it will be created. The default folder is the server root level. (El valor predeterminado es None) | String |
summary | The Item Description Summary text. Use this parameter to override the user interface summary or to provide a summary if one does not exist. The summary provided here will not be persisted in the map document. (El valor predeterminado es None) | String |
tags | The Item Description tags. Use this parameter to override the user interface tags or to provide tags if they do not exist. The tags provided here will not be persisted in the map document. (El valor predeterminado es None) | String |
executionType | Sincrónico y asíncrono definen cómo el cliente (la aplicación que utiliza la tarea) interactúa con el servidor y obtiene el resultado de la tarea. Cuando un servicio se establece en sincrónico, el cliente espera que la tarea finalice. Por lo general, una tarea sincrónica se ejecuta rápidamente, en cinco segundos o menos. Una tarea asíncrona generalmente tarda más tiempo en ejecutarse y el cliente debe preguntar periódicamente al servidor si la tarea no ha terminado y, si ha terminado, obtener el resultado. Una aplicación web con una tarea asíncrona debe tener lógica aplicada para verificar el estado de una tarea y manejar el resultado una vez que finalice la ejecución. Los clientes de ArcGIS Desktop manejan ambos tipos de ejecución de forma nativa. (El valor predeterminado es Asynchronous) | String |
resultMapServer | Specifies whether the result of all tasks will be visualized with the service as a map (in addition to other results of the task) when publishing a geoprocessing service. 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, create the layer files with symbology and use them to modify the output symbology of the task. When True, a map service is automatically created on the server with the same name as the geoprocessing service. The default is False. (El valor predeterminado es False) | Boolean |
showMessages | Specifies the message level that will be used for the geoprocessing service. The following are the valid message levels the service will return to the client:
(El valor predeterminado es None) | String |
maximumRecords | El número máximo de resultados que el servicio puede devolver a un cliente. La configuración de este valor como un gran número significa que el servidor SIG puede manejar el envío de una gran cantidad de registros o entidades individuales al cliente. Si no desea devolver ninguna entidades, establezca este valor en 0 (cero). Por lo general, establezca este valor en cero sólo cuando habilite Ver resultado con un servicio de mapas. (El valor predeterminado es 1000) | Integer |
minInstances | The minimum number of instances a service will start and make available for use. For heavily used services, you can increase this value. (El valor predeterminado es 1) | Integer |
maxInstances | The maximum number of instances a service can start and make available for use. For heavily used services, you can increase this value. Ensure that the server has adequate hardware to support the maximum number of instances indicated. (El valor predeterminado es 2) | Integer |
maxUsageTime | La cantidad máxima de tiempo, en segundos, que un servicio se puede utilizar. Es posible que deba aumentar el valor predeterminado de 600 segundos (10 minutos) para tareas de geoprocesamiento que duren mucho tiempo. Alternativamente, puede ser necesario reducir este tiempo para garantizar que un cliente no abusará de sus servicios. (El valor predeterminado es 600) | Integer |
maxWaitTime | La cantidad máxima de tiempo, en segundos, que el cliente debe esperar para conectarse con una instancia antes de que caduque. Cuando todas las instancias están ocupados procesando solicitudes, las solicitudes posteriores están a la cola. Si este tiempo de inactividad se acaba antes de que esté disponible una instancia, la tarea fallará. El valor predeterminado es 60 segundos (1 minuto). (El valor predeterminado es 60) | Integer |
maxIdleTime | La cantidad máxima de tiempo, en segundos, que una instancia seguirá activa antes de que tenga lugar el acortamiento de grupo Cualquier instancia por encima de la cantidad mínima de instancias que no se han utilizado será cerrada unan vez que se haya terminado el valor máximo de inactividad. (El valor predeterminado es 1800) | Integer |
capabilities | Specifies the capabilities a service will support. Currently, only Uploads is supported. (El valor predeterminado es None) | String |
constantValues [constantValues,...] | 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"]. (El valor predeterminado es None) | String |
choiceLists | Constrains values for any input parameter with a choice list input mode in the web tool or geoprocessing service. The choice list and its values must be created before using this property; you cannot use this property to add new values to the choice list. If you have a feature or raster input, you must create the layer for each value in the choice list first and use this property to constrain. The property uses a dictionary with the service task and parameter name as the key, and a list of the string values as the value, for example, {"ServiceTaskName.parameterName":["string1", "string2"]}. (El valor predeterminado es None) | Dictionary |
Tipo de datos | Explicación |
Dictionary | Returns a dictionary of information messages, warnings, and errors. |
Muestra de código
The following script demonstrates the complete publishing of a web tool to a federated server. Automating the publishing of web tools uses a combination of ArcPy functions and geoprocessing tools in the Publishing toolset. The workflow begins by running a geoprocessing task that you want to publish. After you successfully run the geoprocessing task, sign in to your portal to proceed. Then use the CreateGPSDDraft function to create a service definition draft. The Item Description, Summary, and Tags for the input geoprocessing result are overwritten using the summary and tags parameters. The function returns an analyzer dictionary that identifies issues that may prevent successful publishing. After resolving any serious issues, the service definition can be staged. Staging takes the service definition draft and consolidates all the information needed to publish the service into a complete service definition. Use the Stage Service tool to stage the service definition. Finally, use the Upload Service Definition tool to upload the service definition to the portal and publish the web tool.
import arcpy
toolbox = "c:/gis/gp/MyAnalysisTools.tbx"
sddraft = "c:/gis/gp/drafts/AnalysisReport.sddraft"
sd = "c:/gis/gp/sd/AnalysisReport.sd"
portalurl = "https://myportal.esri.com/portal"
portalusername = "username"
portalpassword = "password"
serverURL = "https://myserver.esri.com/server"
serviceName = "AnalysisReportService"
# Run the tool and set to a result object
arcpy.ImportToolbox(toolbox)
result = arcpy.reports.MyCustomAnalysis("c:/gis/data/parcels.gdb/taxlots",
"40", "MyOutput.pdf")
# Sign in to Portal
arcpy.SignInToPortal(portalurl, portalusername, portalpassword)
# Create service definition draft and return analyzer messages
analyzeMessages = arcpy.CreateGPSDDraft(
result, sddraft, serviceName, server_type="MY_HOSTED_SERVICES",
copy_data_to_server=True, folder_name=None,
summary="Analysis Service", tags="gp", executionType="Synchronous",
resultMapServer=False, showMessages="Info", maximumRecords=5000,
minInstances=2, maxInstances=3, maxUsageTime=100, maxWaitTime=10,
maxIdleTime=180)
# Stage and upload the service if the sddraft analysis did not
# contain errors
if analyzeMessages['errors'] == {}:
# The following runs StageService for ArcGIS 11 Enterprise. If you're using version
# 10.9.1 or earlier, you must provide the staging version. For example,
# the staging version for 10.9.1 server is 209.
arcpy.server.StageService(sddraft, sd)
# Run UploadServiceDefinition
# Use URL to a federated server
arcpy.server.UploadServiceDefinition(sd, serverURL)
else:
# If the sddraft analysis contained errors, display them
print(analyzeMessages['errors'])
The following script demonstrates the complete process of publishing a geoprocessing service to a stand-alone server. The workflow is similar to publishing to a federated server, except you do not need to sign in to your portal. In addition, set the parameter server type to ARCGIS_SERVER, and provide a server connection file (.ags) for the CreateGPSDDraft function. The server connection file parameter from the Upload Service Definition tool must also be provided with a server connection file. Ensure that the existing .ags file has server login credentials.
import arcpy
toolbox = "c:/gis/gp/MyAnalysisTools.tbx"
sddraft = "c:/gis/gp/drafts/AnalysisReport.sddraft"
sd = "c:/gis/gp/sd/AnalysisReport.sd"
serverconnectionfile = "c:/gis/gp/myserver.ags"
serviceName = "AnalysisReportService"
# Run the tool and set to a result object
arcpy.ImportToolbox(toolbox)
result = arcpy.reports.MyCustomAnalysis("c:/gis/data/parcels.gdb/taxlots",
"40", "MyOutput.pdf")
# Create service definition draft and returns analyzer messages
analyzeMessages = arcpy.CreateGPSDDraft(
result, sddraft, serviceName, server_type="MY_HOSTED_SERVICES",
connection_file_path= serverconnectionfile,
copy_data_to_server=True, folder_name=None,
summary="Analysis Service", tags="gp", executionType="Synchronous",
resultMapServer=False, showMessages="Info", maximumRecords=5000,
minInstances=2, maxInstances=3, maxUsageTime=100, maxWaitTime=10,
maxIdleTime=180)
# Stage and upload the service if the sddraft analysis did not
# contain errors
if analyzeMessages['errors'] == {}:
# The following runs StageService for ArcGIS 11 server. If you're using version 10.9.1
# or earlier, you must provide the staging version. For example, the staging
# version for 10.9.1 server is 209.
arcpy.server.StageService(sddraft, sd)
# Run UploadServiceDefinition
# Use URL to a federated server
arcpy.server.UploadServiceDefinition(sd, serverconnectionfile)
else:
# If the sddraft analysis contained errors, display them
print(analyzeMessages['errors'])