Операция задачи: execute (REST)
Каждая задача геообработки содержит поддерживаемую операцию на основе свойства Тип выполнения (Execution type) родительского сервиса. Если тип выполнения сервиса геообработки является синхронным, все задачи геообработки в рамках сервиса будут поддерживать только операцию Выполнить задачу (Execute Task). URL-адрес операции задачи execute: http://<url-задачи-го>/execute.
Как выполнить задачу
Чтобы выполнить задачу геообработки, клиент должен построить требуемый URL-адрес на основе URL-адреса задачи выполнения и добавления пар имя-значение для всех требуемых входных параметров задачи, как показано ниже:
http://<url-задачи>/execute?параметр1=значение1&параметр2=значение2
параметр1=значение1 — это пара имя-значение, где параметр1 является именем параметра задачи, а значение1 является представлением ASCII значения JSON. При отправке URL-адреса запроса на сервер, задача выполняется на сервере с использованием предоставленных входных значений. Если в конце выполнения задача завершается успешно, сервер формирует ответ, включая значения выходных параметров, и отправляет его клиенту, как показано ниже. Если задача завершается со сбоем, сервер отправляет клиенту сообщение об ошибке.
Успешный результат выполнения задачи
Ответ, отправляемый клиентом, называется результатом задачи геообработки и включает значения выходных параметров и сообщения, созданные задачей геообработки во время выполнения. Результат задачи будет содержать массив выходных параметров. Каждый выходной параметр в массиве имеет paramName, dataType и соответствующее значение. Результат задачи также будет содержать сообщения геообработки. Каждый элемент в массиве сообщений имеет тип (esriJobMessageTypeInformative, esriJobMessageTypeWarning или esriJobMessageTypeError), а также описание сообщения. Сообщения, возвращаемые сервером, зависят от уровня сообщений сервиса геообработки. Если уровень сообщений имеет значение Нет (None), сервер не будет возвращать каких-либо сообщений.
Дополнительные сведения об уровнях сообщений в сервисах геообработки
Ниже приводится результат задачи JSON для задачи Построение буфера для точек (Buffer Points) с одним выходным параметром Output_Polygons.
Представление 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
]
}
Сообщение об ошибке
Операция задачи execute может завершиться со сбоем из-за недопустимых параметров или других сбоев инструментов геообработки. В некоторых случаях сервер возвратит ошибку задачи геообработки с числовым кодом, строкой Невозможно завершить операцию (Unable to complete operation) и сведениями о сбое. Формат JSON для этой ошибки приведен ниже.
Ошибка JSON, возвращенная задачей геообработки
{"error":{"code":400,"message":"Unable to complete operation.","details":[]}}
Уровень сведений в сообщении об ошибке зависит от уровня сообщений в сервисе геообработки. В зависимости от уровня сообщений свойство details будет включать соответствующие сообщения инструмента геообработки, созданные во время выполнения. Если входные параметры инструмента являются недопустимыми или свойство уровня сообщений сервиса геообработки имеет значение Нет (None), свойство details будет пустым, как показано в приведенном выше примере.
Операция cancel не поддерживается при операции execute. Она поддерживается только для операции отправки задания submitJob.