

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Arbeitsablauf für Aufträge
<a name="jobs-workflow-jobs-online"></a>

Im Folgenden werden die verschiedenen Schritte des Auftragsworkflows vom Starten eines neuen Auftrags bis hin zur Meldung des Abschlussstatus einer Auftragsausführung dargestellt.

## Starten Sie einen neuen Auftrag
<a name="jobs-respond-new-job"></a>

Wenn ein neuer Job erstellt wird, veröffentlicht AWS IoT Jobs für jedes Zielgerät eine Nachricht zu `$aws/things/{{thing-name}}/jobs/notify` diesem Thema.

Die Nachricht enthält die folgenden Informationen:

```
{
    "timestamp":1476214217017,
    "jobs":{
        "QUEUED":[{
            "jobId":"0001",
            "queuedAt":1476214216981,
            "lastUpdatedAt":1476214216981,
            "versionNumber" : 1
        }]
    }
}
```

Das Gerät erhält diese Nachricht auf dem `'$aws/things/{{thingName}}/jobs/notify'`-Thema, wenn die Auftragsausführung in die Warteschlange gesetzt wird.

**Anmerkung**  
Bei Aufträgen mit dem optionalen `SchedulingConfig` behält der Auftrag den ursprünglichen `SCHEDULED`-Status bei. Wenn der Auftrag den ausgewählten `startTime` erreicht, passiert Folgendes:  
Der Status des Auftragsstatus wird auf `IN_PROGRESS` aktualisiert.
Der Auftrag beginnt mit dem Rollout des Auftragsdokuments auf alle Geräte der Zielgruppe.

## Auftragsinformationen abrufen
<a name="jobs-respond-get-job"></a>

Um weitere Informationen zu einer Auftragsausführung abzurufen, ruft das Gerät die [DescribeJobExecution](jobs-mqtt-api.md#mqtt-describejobexecution)-MQTT-API mit dem Wert `true` in dem Feld `includeJobDocument` ab (Standard).

Wenn die Anfrage erfolgreich ist, veröffentlicht der AWS IoT Jobs-Service eine Nachricht zum `$aws/things/MyThing/jobs/0023/get/accepted` Thema:

```
{
    "clientToken" : "client-001",
    "timestamp" : 1489097434407,
    "execution" : {
        "approximateSecondsBeforeTimedOut": number,
        "jobId" : "023",
        "status" : "QUEUED",
        "queuedAt" : 1489097374841,
        "lastUpdatedAt" : 1489097374841,
        "versionNumber" : 1,
        "jobDocument" : {
            < contents of job document >
        }
    }
}
```

Wenn die Anfrage fehlschlägt, veröffentlicht der AWS IoT Jobs-Service eine Nachricht zu dem `$aws/things/MyThing/jobs/0023/get/rejected` Thema.

Das Gerät verfügt jetzt über das Auftragsdokument, das es verwenden kann, um die Remoteoperationen für den Auftrag durchzuführen. Wenn das Auftragsdokument eine vorsignierte Amazon S3-URL enthält, kann das Gerät diese URL zum Download aller für den Auftrag erforderlicher Dateien verwenden.

## Melden des Status der Auftragsausführung
<a name="jobs-job-processing"></a>

Wenn das Gerät den Auftrag ausführt, kann es die [UpdateJobExecution](jobs-mqtt-api.md#mqtt-updatejobexecution)-MQTT-API aufrufen, um den Status der Auftragsausführung zu aktualisieren.

Beispielsweise kann ein Gerät den Status der Auftragsausführung zu `IN_PROGRESS` aktualisieren, indem es die folgende Nachricht auf dem Thema `$aws/things/MyThing/jobs/0023/update` veröffentlicht:

```
{
    "status":"IN_PROGRESS",
    "statusDetails": {
        "progress":"50%"
    },
    "expectedVersion":"1",
    "clientToken":"client001"
}
```

Jobs reagiert mit der Veröffentlichung einer Nachricht auf das Thema `$aws/things/MyThing/jobs/0023/update/accepted` oder `$aws/things/MyThing/jobs/0023/update/rejected`:

```
{
    "clientToken":"client001",
    "timestamp":1476289222841
}
```

Das Gerät kann die beiden vorherigen Anforderungen durch den Aufruf von [StartNextPendingJobExecution](jobs-mqtt-api.md#mqtt-startnextpendingjobexecution) kombinieren. Dadurch wird die nächste ausstehende Auftragsausführung abgerufen und gestartet, und das Gerät kann den Auftragsausführungsstatus aktualisieren. Diese Anforderung gibt auch das Auftragsdokument aus, wenn eine Auftragsausführung aussteht.

Wenn der Job eine enthält [TimeoutConfig](https://docs.aws.amazon.com//iot/latest/apireference/API_TimeoutConfig.html), beginnt der Timer in Bearbeitung zu laufen. Sie können auch einen Schrittzeitgeber für die Ausführung eines Jobs festlegen, indem Sie einen Wert für den `stepTimeoutInMinutes` Zeitpunkt des Aufrufs [UpdateJobExecution](https://docs.aws.amazon.com//iot/latest/apireference/API_iot-jobs-data_UpdateJobExecution.html)festlegen. Der Schritt Timer gilt nur für die Auftragsausführung, die Sie aktualisieren. Sie können einen neuen Wert für diesen Timer bei jeder Aktualisierung einer Auftragsausführung einrichten. Sie können beim Aufrufen auch einen Schritttimer erstellen [StartNextPendingJobExecution](https://docs.aws.amazon.com//iot/latest/apireference/API_iot-jobs-data_StartNextPendingJobExecution.html). Falls die Auftragsausführung länger als das Schritt-Timer-Intervall im Status `IN_PROGRESS` bleibt, schlägt sie fehl und wechselt in den terminalen Status `TIMED_OUT`. Der Schritt-Timer hat keine Auswirkungen auf den Timer „In Bearbeitung“, den Sie beim Erstellen eines Auftrags festlegen.

Das Feld `status` kann auf `IN_PROGRESS`, `SUCCEEDED` oder `FAILED` gesetzt werden. Der Status einer bereits im Status „Terminal“ befindlichen Auftragsausführung kann nicht aktualisiert werden.

## Meldung des Abschlusses der Ausführung
<a name="jobs-job-completed"></a>

Wenn das Gerät die Ausführung des Auftrags abgeschlossen hat, ruft es die [UpdateJobExecution](jobs-mqtt-api.md#mqtt-updatejobexecution)-MQTT-API ab. Wenn der Auftrag erfolgreich war, setzen Sie `status` auf `SUCCEEDED`, und fügen Sie in `statusDetails` in der Nachrichtnutzlast weitere Informationen zu dem Auftrag als Name/Wert-Paare hinzu. Die Timer „In Bearbeitung“ und „Schritt“ enden, wenn die Auftragsausführung abgeschlossen ist.

Beispiel:

```
{
    "status":"SUCCEEDED",
    "statusDetails": {
        "progress":"100%"
    },
    "expectedVersion":"2",
    "clientToken":"client-001"
}
```

Wenn der Auftrag nicht erfolgreich war, setzen Sie `status` auf `FAILED`, und fügen Sie in `statusDetails`Informationen zu dem aufgetretenen Fehler hinzu:

```
{
    "status":"FAILED",
    "statusDetails": {
        "errorCode":"101",
        "errorMsg":"Unable to install update"
    },
    "expectedVersion":"2",
    "clientToken":"client-001"
}
```

**Anmerkung**  
Das Attribut `statusDetails` kann eine beliebige Zahl von Name/Wert-Paaren enthalten.

Wenn der AWS IoT Jobs-Service dieses Update erhält, veröffentlicht er eine Meldung zu diesem `$aws/things/MyThing/jobs/notify` Thema, um darauf hinzuweisen, dass die Jobausführung abgeschlossen ist:

```
{
    "timestamp":1476290692776,
    "jobs":{}
}
```

## Zusätzliche Aufträge
<a name="jobs-additional-job"></a>

Wenn für das Gerät weitere Auftragsausführungen ausstehen, sind diese in der Nachricht enthalten, die für `$aws/things/MyThing/jobs/notify` veröffentlicht wurde.

Beispiel:

```
{
    "timestamp":1476290692776,
    "jobs":{
        "QUEUED":[{
            "jobId":"0002",
            "queuedAt":1476290646230,
            "lastUpdatedAt":1476290646230
        }],
        "IN_PROGRESS":[{
            "jobId":"0003",
            "queuedAt":1476290646230,
            "lastUpdatedAt":1476290646230
        }]
    }
}
```