

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Alur kerja pekerjaan
<a name="jobs-workflow-jobs-online"></a>

Berikut ini menunjukkan langkah-langkah yang berbeda dalam alur kerja pekerjaan mulai dari memulai pekerjaan baru hingga melaporkan status penyelesaian pelaksanaan pekerjaan.

## Memulai pekerjaan baru
<a name="jobs-respond-new-job"></a>

Saat pekerjaan baru dibuat, AWS IoT Jobs menerbitkan pesan tentang `$aws/things/thing-name/jobs/notify` topik untuk setiap perangkat target.

Pesan tersebut berisi informasi berikut:

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

Perangkat menerima pesan ini tentang `'$aws/things/thingName/jobs/notify'` topik saat eksekusi pekerjaan diantrian.

**catatan**  
Untuk pekerjaan dengan opsional`SchedulingConfig`, pekerjaan akan mempertahankan status status awal`SCHEDULED`. Ketika pekerjaan mencapai yang dipilih`startTime`, hal berikut akan terjadi:  
Status status pekerjaan akan diperbarui ke`IN_PROGRESS`.
Pekerjaan akan memulai peluncuran dokumen pekerjaan ke semua perangkat dalam kelompok sasaran.

## Dapatkan informasi pekerjaan
<a name="jobs-respond-get-job"></a>

Untuk mendapatkan informasi selengkapnya tentang eksekusi pekerjaan, perangkat memanggil API [DescribeJobExecution](jobs-mqtt-api.md#mqtt-describejobexecution) MQTT dengan `includeJobDocument` bidang yang disetel ke `true` (default).

Jika permintaan berhasil, layanan AWS IoT Jobs menerbitkan pesan tentang `$aws/things/MyThing/jobs/0023/get/accepted` topik:

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

Jika permintaan gagal, layanan AWS IoT Jobs akan menerbitkan pesan tentang `$aws/things/MyThing/jobs/0023/get/rejected` topik tersebut.

Perangkat sekarang memiliki dokumen pekerjaan yang dapat digunakan untuk melakukan operasi jarak jauh untuk pekerjaan itu. Jika dokumen pekerjaan berisi URL presigned Amazon S3, perangkat dapat menggunakan URL tersebut untuk mengunduh file apa pun yang diperlukan untuk pekerjaan tersebut.

## Laporkan status eksekusi pekerjaan
<a name="jobs-job-processing"></a>

Saat perangkat menjalankan pekerjaan, perangkat dapat memanggil [UpdateJobExecution](jobs-mqtt-api.md#mqtt-updatejobexecution) MQTT API untuk memperbarui status eksekusi pekerjaan.

Misalnya, perangkat dapat memperbarui status eksekusi pekerjaan `IN_PROGRESS` dengan memublikasikan pesan berikut tentang `$aws/things/MyThing/jobs/0023/update` topik tersebut:

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

Pekerjaan merespons dengan menerbitkan pesan ke `$aws/things/MyThing/jobs/0023/update/accepted` atau `$aws/things/MyThing/jobs/0023/update/rejected` topik:

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

Perangkat dapat menggabungkan dua permintaan sebelumnya dengan menelepon[StartNextPendingJobExecution](jobs-mqtt-api.md#mqtt-startnextpendingjobexecution). Itu mendapatkan dan memulai eksekusi pekerjaan tertunda berikutnya dan memungkinkan perangkat untuk memperbarui status eksekusi pekerjaan. Permintaan ini juga mengembalikan dokumen pekerjaan ketika ada eksekusi pekerjaan yang tertunda.

Jika pekerjaan berisi a [TimeoutConfig](https://docs.aws.amazon.com//iot/latest/apireference/API_TimeoutConfig.html), pengatur waktu yang sedang berlangsung mulai berjalan. Anda juga dapat mengatur pengatur waktu langkah untuk eksekusi pekerjaan dengan menetapkan nilai `stepTimeoutInMinutes` saat Anda menelepon [UpdateJobExecution](https://docs.aws.amazon.com//iot/latest/apireference/API_iot-jobs-data_UpdateJobExecution.html). Pengatur waktu langkah hanya berlaku untuk eksekusi pekerjaan yang Anda perbarui. Anda dapat menetapkan nilai baru untuk timer ini setiap kali Anda memperbarui eksekusi pekerjaan. Anda juga dapat membuat pengatur waktu langkah saat menelepon [StartNextPendingJobExecution](https://docs.aws.amazon.com//iot/latest/apireference/API_iot-jobs-data_StartNextPendingJobExecution.html). Jika eksekusi pekerjaan tetap dalam `IN_PROGRESS` status lebih lama dari interval pengatur waktu langkah, itu gagal dan beralih ke `TIMED_OUT` status terminal. Pengatur waktu langkah tidak berpengaruh pada pengatur waktu yang sedang berlangsung yang Anda atur saat membuat pekerjaan.

`status`Bidang dapat diatur ke`IN_PROGRESS`,`SUCCEEDED`, atau`FAILED`. Anda tidak dapat memperbarui status eksekusi pekerjaan yang sudah dalam status terminal.

## Eksekusi laporan selesai
<a name="jobs-job-completed"></a>

Ketika perangkat selesai menjalankan pekerjaan, ia memanggil [UpdateJobExecution](jobs-mqtt-api.md#mqtt-updatejobexecution) MQTT API. Jika pekerjaan berhasil, setel `status` ke `SUCCEEDED` dan, di payload pesan`statusDetails`, tambahkan informasi lain tentang pekerjaan sebagai pasangan nama-nilai. Pengatur waktu dalam proses dan langkah berakhir ketika eksekusi pekerjaan selesai.

Contoh:

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

Jika pekerjaan tidak berhasil, atur `status` ke `FAILED` dan, di`statusDetails`, tambahkan informasi tentang kesalahan yang terjadi:

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

**catatan**  
`statusDetails`Atribut dapat berisi sejumlah pasangan nama-nilai.

Ketika layanan AWS IoT Jobs menerima pembaruan ini, ia menerbitkan pesan tentang `$aws/things/MyThing/jobs/notify` topik tersebut untuk menunjukkan bahwa pelaksanaan pekerjaan telah selesai:

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

## Pekerjaan tambahan
<a name="jobs-additional-job"></a>

Jika ada eksekusi pekerjaan lain yang tertunda untuk perangkat, mereka disertakan dalam pesan yang dipublikasikan ke`$aws/things/MyThing/jobs/notify`.

Contoh:

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