Add Running tasks article and various corrections
This commit is contained in:
265
Running-tasks.md
Normal file
265
Running-tasks.md
Normal file
@@ -0,0 +1,265 @@
|
||||
# Running a task
|
||||
This page documents how to run a task from the FarmMaps API.
|
||||
Once you have uploaded some data and made sure the relevant cropfield is available, you can now instruct the system to start processing the data.
|
||||
Processing data is done by running tasks. There are many different types of tasks to acomplish many different things such as:
|
||||
|
||||
* Identifying the type of file to start automatic processing
|
||||
* Converting a CSV file to a Shapefile
|
||||
* Filtering data for valid values
|
||||
* Creating a taskmap of input data.
|
||||
|
||||
|
||||
## Workflow task.
|
||||
There is one special type of task, the `workflow` task.
|
||||
When an item (i.e. file-upload, folder, cropfield etc.) is created there are certain processing tasks that can be done by "default".
|
||||
As an example, for an uploaded file these tasks are:
|
||||
|
||||
- Re-assembling the part-chunks back into a single file
|
||||
- Identifying the type of file, and how it should be processed.
|
||||
|
||||
For a cropfield there are slightly different tasks such as:
|
||||
|
||||
- retrieve AHN mapping data (cut-out from public height maps)
|
||||
- retrieve soil compaction data (based on a public map)
|
||||
- retrieve shadow mapping data (based on satellite imagery)
|
||||
|
||||
These steps are all defined in the workflow for each `itemType`.
|
||||
So, once an item has been created, we can run the `workflow` task to execute the predefined tasks automatically.
|
||||
|
||||
### Example: Running the workflow task for a cropfield.
|
||||
We run a task by adding the `taskType` to the body of the request, with `vnd.farmmaps.task.workflow` as the type of task.
|
||||
The item that the task will be executed on is specified in the url by it's itemcode. Other types of tasks can be run by changing the taskType.
|
||||
|
||||
**Request**
|
||||
```http
|
||||
POST /api/v1/items/98a480ad8d7444a8a10ef547cd8594eb/tasks HTTP/1.1
|
||||
Authorization: Bearer <access token>
|
||||
Accept: application/json
|
||||
Content-Type: application/json
|
||||
Cache-Control: no-cache
|
||||
Host: farmmaps.awacc.nl
|
||||
Accept-Encoding: gzip, deflate, br
|
||||
Connection: keep-alive
|
||||
Content-Length: 49
|
||||
|
||||
```
|
||||
|
||||
**Response**
|
||||
```http
|
||||
HTTP/1.1 201 Created
|
||||
Server: nginx/1.14.0 (Ubuntu)
|
||||
Date: Sat, 25 Apr 2020 13:55:28 GMT
|
||||
Content-Type: application/json; charset=utf-8
|
||||
Transfer-Encoding: chunked
|
||||
Connection: keep-alive
|
||||
Cache-Control: no-store,no-cache
|
||||
Pragma: no-cache
|
||||
Content-Encoding: br
|
||||
Location: /api/v1/items/98a480ad8d7444a8a10ef547cd8594eb/tasks/52173fb5bf1146efa276ecfe1fda5f60
|
||||
Vary: Accept-Encoding
|
||||
|
||||
```
|
||||
|
||||
**Troubleshooting**
|
||||
|Status code|Description|
|
||||
|---|---|
|
||||
|201|Task created|
|
||||
|400|Error: Tasktype not found|
|
||||
|401|Error: Not authenticated|
|
||||
|403|Error: No WRITE permissions in item|
|
||||
|404|Error: Item not found|
|
||||
|
||||
## Polling for task status
|
||||
Now that the task was created, we can retrieve its status by performing a **GET** request on the same endpoint as used for starting task.
|
||||
Note that the response contains a lot of tasks, and also multiple workflow tasks, indicating that multiple workflows were triggered.
|
||||
|
||||
**Request**
|
||||
```http
|
||||
GET /api/v1/items/98a480ad8d7444a8a10ef547cd8594eb/tasks HTTP/1.1
|
||||
Accept: application/json
|
||||
Authorization: Bearer <access token>
|
||||
Cache-Control: no-cache
|
||||
Host: farmmaps.awacc.nl
|
||||
Accept-Encoding: gzip, deflate, br
|
||||
Connection: keep-alive
|
||||
```
|
||||
|
||||
**Response**
|
||||
```http
|
||||
HTTP/1.1 200 OK
|
||||
Server: nginx/1.14.0 (Ubuntu)
|
||||
Date: Sat, 25 Apr 2020 14:34:01 GMT
|
||||
Content-Type: application/json; charset=utf-8
|
||||
Transfer-Encoding: chunked
|
||||
Connection: keep-alive
|
||||
Cache-Control: no-store,no-cache
|
||||
Pragma: no-cache
|
||||
Content-Encoding: br
|
||||
Vary: Accept-Encoding
|
||||
|
||||
```
|
||||
|
||||
**Troubleshooting**
|
||||
|Status code|Description|
|
||||
|---|---|
|
||||
|401|Error: Not authenticated|
|
||||
|403|Error: No READ permissions in parent item|
|
||||
|404|Error: Parent item not found|
|
||||
|
||||
### Polling a single task
|
||||
Polling for a siingle task can be done by appending g the `ItemTaskCode` to the task URL:
|
||||
|
||||
**Request**
|
||||
```http
|
||||
GET /api/v1/items/98a480ad8d7444a8a10ef547cd8594eb/tasks/a1daf49cf08142c289825def78986027 HTTP/1.1
|
||||
Accept: application/json
|
||||
Authorization: Bearer <access token>
|
||||
User-Agent: PostmanRuntime/7.24.1
|
||||
Cache-Control: no-cache
|
||||
Postman-Token: dafc3b2a-35be-4f68-b398-ddab1f36864f
|
||||
Host: farmmaps.awacc.nl
|
||||
Accept-Encoding: gzip, deflate, br
|
||||
Connection: keep-alive
|
||||
```
|
||||
|
||||
**Response**
|
||||
```http
|
||||
HTTP/1.1 200 OK
|
||||
Server: nginx/1.14.0 (Ubuntu)
|
||||
Date: Sat, 25 Apr 2020 15:02:05 GMT
|
||||
Content-Type: application/json; charset=utf-8
|
||||
Transfer-Encoding: chunked
|
||||
Connection: keep-alive
|
||||
Cache-Control: no-store,no-cache
|
||||
Pragma: no-cache
|
||||
Content-Encoding: br
|
||||
Vary: Accept-Encoding
|
||||
|
||||
```
|
||||
**Troubleshooting**
|
||||
|Status code|Description|
|
||||
|---|---|
|
||||
|401|Error: Not authenticated|
|
||||
|403|Error: No READ permissions in parent item|
|
||||
|404|Error: Parent item not found|
|
||||
|
||||
## What's next?
|
||||
Now that you know how to run a task, you can start running specialized tasks to create or process your own data.
|
||||
Head over to the [Task Examples](/wiki/Home#task-examples)
|
||||
|
||||
|
||||
|
||||
|
||||
"started":"2020-04-25T13:55:33.903717",
|
||||
"finished":"2020-04-25T13:55:34.636575"
|
||||
},
|
||||
{
|
||||
"taskType":"vnd.farmmaps.task.soilcompaction",
|
||||
"code":"1667fce90d954b1b90d9997e5e642e8d",
|
||||
"state":1,
|
||||
"started":"2020-04-25T13:55:33.575171",
|
||||
"finished":"2020-04-25T13:55:34.767101"
|
||||
},
|
||||
{
|
||||
"taskType":"vnd.farmmaps.task.ahn",
|
||||
"code":"23b1e66325134e8cbd778d57865590f2",
|
||||
"state":1,
|
||||
"started":"2020-04-25T13:55:33.465586",
|
||||
"finished":"2020-04-25T13:55:35.170389"
|
||||
},
|
||||
{
|
||||
"taskType":"vnd.farmmaps.task.tipstar",
|
||||
"code":"80bcf30893614ad288fe8409cee5f9b1",
|
||||
"state":1,
|
||||
"started":"2020-04-25T13:55:36.893606",
|
||||
"finished":"2020-04-25T13:55:37.331862"
|
||||
},
|
||||
{
|
||||
"taskType":"vnd.farmmaps.task.workflow",
|
||||
"code":"c4c7d23b6e534a7e9b5dfb79847ea449",
|
||||
"state":1,
|
||||
"started":"2020-04-25T13:55:37.237456",
|
||||
"finished":"2020-04-25T13:55:37.567148"
|
||||
},
|
||||
{
|
||||
"taskType":"vnd.farmmaps.task.trijntje",
|
||||
"code":"e29539ed7a014dfcb739ad3d87298cc2",
|
||||
"state":1,
|
||||
"started":"2020-04-25T13:55:44.271105",
|
||||
"finished":"2020-04-25T13:55:45.64174"
|
||||
},
|
||||
{
|
||||
"taskType":"vnd.farmmaps.task.satellite",
|
||||
"code":"b5a549be975e4196972806157ee7f2cd",
|
||||
"state":1,
|
||||
"started":"2020-04-25T13:55:33.778997",
|
||||
"finished":"2020-04-25T13:57:13.811563"
|
||||
},
|
||||
{
|
||||
"taskType":"vnd.farmmaps.task.shadow",
|
||||
"code":"a1daf49cf08142c289825def78986027",
|
||||
"state":1,
|
||||
"started":"2020-04-25T13:55:33.153348",
|
||||
"finished":"2020-04-25T13:56:14.590014"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
**Troubleshooting**
|
||||
|Status code|Description|
|
||||
|---|---|
|
||||
|401|Error: Not authenticated|
|
||||
|403|Error: No READ permissions in parent item|
|
||||
|404|Error: Parent item not found|
|
||||
|
||||
### Polling a single task
|
||||
Polling for a siingle task can be done by appending g the `ItemTaskCode` to the task URL:
|
||||
|
||||
**Request**
|
||||
```http
|
||||
GET /api/v1/items/98a480ad8d7444a8a10ef547cd8594eb/tasks/a1daf49cf08142c289825def78986027 HTTP/1.1
|
||||
Accept: application/json
|
||||
Authorization: Bearer <access token>
|
||||
User-Agent: PostmanRuntime/7.24.1
|
||||
Cache-Control: no-cache
|
||||
Postman-Token: dafc3b2a-35be-4f68-b398-ddab1f36864f
|
||||
Host: farmmaps.awacc.nl
|
||||
Accept-Encoding: gzip, deflate, br
|
||||
Connection: keep-alive
|
||||
```
|
||||
|
||||
**Response**
|
||||
```http
|
||||
HTTP/1.1 200 OK
|
||||
Server: nginx/1.14.0 (Ubuntu)
|
||||
Date: Sat, 25 Apr 2020 15:02:05 GMT
|
||||
Content-Type: application/json; charset=utf-8
|
||||
Transfer-Encoding: chunked
|
||||
Connection: keep-alive
|
||||
Cache-Control: no-store,no-cache
|
||||
Pragma: no-cache
|
||||
Content-Encoding: br
|
||||
Vary: Accept-Encoding
|
||||
|
||||
{
|
||||
"taskType":"vnd.farmmaps.task.shadow",
|
||||
"code":"a1daf49cf08142c289825def78986027",
|
||||
"state":1,
|
||||
"started":"2020-04-25T13:55:33.153348",
|
||||
"finished":"2020-04-25T13:56:14.590014"
|
||||
}
|
||||
```
|
||||
**Troubleshooting**
|
||||
|Status code|Description|
|
||||
|---|---|
|
||||
|401|Error: Not authenticated|
|
||||
|403|Error: No READ permissions in parent item|
|
||||
|404|Error: Parent item not found|
|
||||
|
||||
## What's next?
|
||||
Now that you know how to run a task, you can start running specialized tasks to create or process your own data.
|
||||
Head over to the [Task Examples](/wiki/Home#task-examples)
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user