WorkflowConnection

摘要

WorkflowConnection 对象将提供对 Workflow Manager (Classic) 作业创建或获取方法的访问权限。

说明

作业将通过作业类型模板进行创建。新作业的所有属性会从作业类型自动继承,并且可以在使用 Job 方法进行创建之后更新。

属性

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

返回到 ArcGIS Pro 工程中工作流连接文件 (.jtc) 的路径。

如果存在现有 ArcGIS Pro 连接,则将返回到工作流连接文件的完整路径。如果使用 Connect 创建到数据库的连接,则 jtcPath 属性可用于获取建立连接的手动输入工作流连接路径。

String

方法概述

方法说明
createJob ({job_type_id}, {job_type_name}, {job_type_description}, {callback})

基于作业类型创建新的作业。

createSD (output_directory, service_name, {connection_file_path}, {folder_name}, {description}, {mininstances}, {maxinstances}, {maxusagetime}, {maxwaittime}, {maxidletime})

创建服务类型为 Workflow Manager (Classic)(可发布到指定 GIS Server)的服务定义 (.sd) 文件。

getJob (jobID)

通过作业 ID 返回单个作业。

getQualifiedTableName (table_name)

针对 Workflow Manager (Classic) 数据库中的表返回完全限定表名称。

queryJobs (fields, tables, {aliases}, {where}, {order_by})

基于条件查询作业并返回 QueryResult 对象,随后可让您访问符合条件的作业列表和作业属性。

方法

createJob ({job_type_id}, {job_type_name}, {job_type_description}, {callback})
参数说明数据类型
job_type_id

用于创建新作业的作业类型的 ID。

Integer
job_type_name

用于创建新作业的作业类型的名称。

String
job_type_description

可进行自定义并将其分配至正在创建的新作业的作业类型的属性,作为 JobTypeDescription 对象提供。

JobTypeDescription
callback

如果作业在创建后设置为自动执行,则将使用回调参数。回调参数将传递一个函数,提示用户基于步骤类型的输入做出响应。例如,执行提问步骤时,回调将执行可能的步骤响应选项并允许用户选择下一个步骤。当无法确定工作流中的下一步骤时,也可使用回调参数,从而使用户可选择要遵循的路径。

Function
返回值
数据类型说明
Job

将作为 Job 创建的作业返回。当通过在 JobTypeDescription 中提供 Geometry 对象列表来创建多个作业,且 LOI 未设置为联合时,将返回 Job 对象列表。

创建新作业需要作业类型名称、作业类型 ID 或作业类型描述。

以下脚本可在 Workflow Manager (Classic) 数据库中创建两个作业:一个作业由作业类型名称进行定义,而另一个则由作业类型 ID 进行定义。

import arcpy

#Establish a connection to a Workflow database
conn = arcpy.wmx.Connect(r'c:\test\Workflow.jtc')

#Create a Workflow Job of type Data Edits
job = conn.createJob(job_type_name="Data Edits")

#Create a Workflow Job of type 5
job2 = conn.createJob(job_type_id = 5)

以下脚本可在 Workflow Manager (Classic) 数据库中使用自定义的作业类型描述创建作业。自定义的作业描述可提供 LOI、为用户分配作业、为作业分配数据工作空间、使用 ID 分配父版本、分配父作业版本、为作业添加前缀以及分配作业版本。

import arcpy

#Establish a connection to a Workflow database
conn = arcpy.wmx.Connect(r'c:\test\Workflow.jtc')

#Create a polygon geometry for LOI
coordList = [[-105.0, 39.0], [-100.0, 39.0], [-100.0, 35.0], [-105.0, 35.0]]
array = arcpy.Array([arcpy.Point(x, y) for x, y in coordList])
loi = arcpy.Polygon(array)

#Create a job type description with customized properties
desc = {'LOI': 'loi', 'assignedTo':'amiller', 'assignedType': 'User', 'dataWorkspaceID':'{DB245005-0D1E-47B8-AE39-CC08530A6C9D}', 'jobTypeName':'Quality Control', 'parentJobID': '9999', 'parentVersionName': 'sde.Default', 'prefix':'QA_', 'versionName':'QA_QC'}

#Create a Workflow Job of type Quality Control
job = conn.createJob(job_type_description=desc)
createSD (output_directory, service_name, {connection_file_path}, {folder_name}, {description}, {mininstances}, {maxinstances}, {maxusagetime}, {maxwaittime}, {maxidletime})
参数说明数据类型
output_directory

输出 (.sd) 文件的文件夹路径。

String
service_name

服务的名称。名称只能包含字母数字字符和下划线。名称长度不能超过 120 个字符。

String
connection_file_path

ArcGIS Server 连接文件 (.ags) 的路径和文件名。

String
folder_name

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

String
description

描述摘要。

String
mininstances

服务将要启动并可供使用的最少实例数。

(默认值为 1)

Integer
maxinstances

服务可以启动并可供使用的最大实例数。

(默认值为 2)

Integer
maxusagetime

一个服务能被使用的最长时间,以秒为单位。对于预计长时间运行的任务,请延长默认时间。

(默认值为 600)

Integer
maxwaittime

超时之前客户端连接一个实例需要等待的最长时间(以秒计)。当所有实例都忙于处理请求时,随后的请求将进入排队状态。如果在实例变为可用状态之前超时,则任务会失败。

(默认值为 60)

Integer
maxidletime

池收缩之前一个实例能继续保持活跃的最长时间(以秒计)。对于所有超出最小实例数且未被使用的实例,一旦达到最长空闲时间,即会被关闭。

Integer
返回值
数据类型说明
String

生成的 .sd 文件的输出路径。

createSD 是使用 ArcPy 将 Workflow Manager (Classic) 服务类型自动发布到 GIS Server 的第一步。从 createSD 创建的输出是表示 Workflow Manager (Classic) 服务类型的服务定义文件 (.sd),该文件由服务器信息和一组服务属性组合而成。

可在特定服务器连接信息未知的情况下编写服务定义。在这种情况下,可以忽略 connection_file_path 参数。

创建输出服务定义文件后,可以使用上载服务定义上载输出服务定义文件并将其作为 Workflow Manager (Classic) 服务发布到指定的 GIS Server。此步骤获取服务定义文件,并将其复制到服务器,提取所需信息并发布 GIS 资源。有关详细信息,请参阅发布工具集概述

如果使用 ArcGIS Pro,则必须将指定 GIS Server 联合到门户。

创建 Workflow Manager (Classic) 服务定义文件并将其发布到联合 GIS Server。

import arcpy

#Establish a connection to a Workflow database
conn = arcpy.wmx.Connect(r'c:\test\Workflow.jtc')

# Create the service definition file with connecting to the federated ArcGIS Server

conn.createSD(r'c:\test\SD','Workflow', None, 'serverfolder','service description',2,4,3000,300,2000)

# Publish the service using the service definition file
arcpy.UploadServiceDefinition_server(r'c:\test\SD\workflow.sd', 'https://servername.domain:6443/arcgis')
getJob (jobID)
参数说明数据类型
jobID

要返回的作业 ID。

Integer
返回值
数据类型说明
Job

将作业返回为 Job

提供检索作业的简便方式。

从 数据库中获取作业。

import arcpy

#Establish a connection to a Workflow database
conn = arcpy.wmx.Connect(r'c:\test\Workflow.jtc')

#Access a Workflow Job
job = conn.getJob(99999)
getQualifiedTableName (table_name)
参数说明数据类型
table_name

要限定的表名称。

String
返回值
数据类型说明
String

返回完全限定表名称。

Workflow Manager (Classic) 数据库获取完全限定表名称。

import arcpy


#Establish a connection to a Workflow database
conn = arcpy.wmx.Connect(r'c:\test\Workflow.jtc')

#Enter a tablename in the Workflow database
tablename = conn.getQualifiedTableName("Trails")
queryJobs (fields, tables, {aliases}, {where}, {order_by})
参数说明数据类型
fields

要为符合条件的作业返回的查询表的字段。

String
tables

Workflow Manager (Classic) 数据库中用于查询作业的表。

String
aliases

由用户为返回的字段定义的别名。别名按与对应字段相同的顺序列出。

String
where

查询作业所使用的 where 子句

String
order_by

对查询结果进行排序所使用的字段。

String
返回值
数据类型说明
Object

QueryJobs 方法返回 QueryResult 对象并可让您访问该查询返回的作业列表和作业属性。

QueryResult 对象是由引用了特定作业的 QueryRow 和引用了 QueryJobs 方法所返回的特定作业属性的 QueryField 组成的列表。

以下脚本运行查询以查找并打印分配给当前用户的作业名称。

import arcpy

#Establish a connection to a Workflow database
conn = arcpy.wmx.Connect(r'c:\test\Workflow.jtc')

#Run a query for the jobs assigned to the current user and print each job name
for row in conn.queryJobs("JOB_NAME,ASSIGNED_TO","JTX_JOBS","Job Name,Assigned To", "ASSIGNED_TO = '[SYS:CUR_LOGIN]'", "JOB_NAME").rows:
	print(row[0])

代码示例

以下脚本将从 Workflow Manager (Classic) 数据库中创建一项作业并获取其他作业。

import arcpy

#Establish a connection to a Workflow database
conn = arcpy.wmx.Connect(r'c:\test\Workflow.jtc')

#Create a Workflow Job of type Data Edits
job = conn.createJob(job_type_name="Data Edits")

#Access a Workflow Job
job = conn.getJob(99999)