每项地理处理任务都具有一项基于父服务执行类型属性的受支持操作。如果地理处理服务的执行类型是同步的,则服务内的所有地理处理任务都将仅支持执行任务操作。执行任务操作的 URL 为 http://<gp-task-url>/execute。
如何执行任务
要执行地理处理任务,客户端必须用“执行任务”URL 构建一项 URL 请求,并添加任务所有要求输入参数的名称值对,如下所示:
http://<task-url>/execute?parameter1=value1¶meter2=value2
parameter1=value1 是名称值对,其中 parameter1 是任务参数的名称,value1 是 JSON 值的 ASCII 表示。当请求 URL 发送至服务器后,任务将以给定的输入值在服务器上运行。执行完成时,如果任务成功,则服务器会使用输出参数的值构建响应并将其发送至客户端,如下所示:如果任务失败,则服务器会向客户端发送错误响应。
成功的任务结果
客户端发送的响应称为地理处理任务结果,其中包括执行过程中地理处理任务生成的输出参数值和消息。任务结果将包括输出参数的数组。数组中每个输出参数都将包含 paramName、dataType 及其 value。任务结果还将包含地理处理消息数组。消息数组的每个元素都将具有类型(esriJobMessageTypeInformative、esriJobMessageTypeWarning 或 esriJobMessageTypeError)和消息描述。服务器返回的消息取决于地理处理服务的消息级别。如果消息级别设置为 None,则服务器将不会返回任何消息。
以下显示的是输出参数为 Output_Polygons 的缓冲点任务的任务结果 JSON。
地理处理任务结果的 JSON 表示。(为简洁起见,示例中几何和消息数组值已截断。)
{
"results":[
{"paramName": "Output_Polygons",
"dataType": "GPFeatureRecordSetLayer",
"value":{
"displayFieldName": "",
"geometryType": "esriGeometryPolygon",
"spatialReference": {"wkid": 102726,"latestWkid": 102726},
"fields":[{"name": "FID","type": "esriFieldTypeOID","alias": "FID"},
{"name": "BUFF_DIST","type": "esriFieldTypeDouble","alias": "BUFF_DIST"},
{"name": "Shape_Length","type": "esriFieldTypeDouble","alias": "Shape_Length"},
{"name": "Shape_Area","type": "esriFieldTypeDouble","alias": "Shape_Area"},
"features": [{"attributes": {"FID": 1,"BUFF_DIST": 3280.83333333,"Shape_Length": 20613.401930152133,
"Shape_Area": 3.381121258723078E7},
"geometry": {"rings": [[[7643591.49993746,684676.8331969529],[7643683.927544728,684675.5310036689],...more]]},
"exceededTransferLimit": false
}
}],
"messages": [{"type":"esriJobMessageTypeInformative","description": "Start Time: Mon Feb 27 15:56:09 2012"},
{"type":"esriJobMessageTypeInformative","description": "Executing (BufferPoints): BufferPoints.. "}...more
]
}
错误响应
参数无效或其他地理处理工具失效可能会导致执行任务操作失败。在这种情况下,服务器将返回一条带有编码的地理处理任务错误消息、字符串 Unable to complete operation. 以及失败的详细信息。错误消息的 JSON 格式如下:
地理处理任务返回的错误 JSON
{"error":{"code":400,"message":"Unable to complete operation.","details":[]}}
错误响应的细节层次取决于地理处理服务的消息级别。基于消息的级别,细节属性将包含执行过程中生成的相应地理处理工具消息。如果工具的输入参数无效或地理处理服务的消息级别属性设置为 None,则错误响应的 details 属性将为空,如上例所示。