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