

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

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

Perangkat dapat menangani pekerjaan yang dijalankannya menggunakan salah satu cara berikut. 
+ 

**Dapatkan pekerjaan berikutnya**

  1. Saat perangkat pertama kali online, perangkat harus berlangganan `notify-next` topik perangkat.

  1. Panggil [DescribeJobExecution](jobs-mqtt-api.md#mqtt-describejobexecution) API MQTT dengan JoBid `$next` untuk mendapatkan pekerjaan berikutnya, dokumen pekerjaannya, dan detail lainnya, termasuk status apa pun yang disimpan. `statusDetails` Jika dokumen pekerjaan memiliki tanda tangan file kode, Anda harus memverifikasi tanda tangan sebelum melanjutkan dengan memproses permintaan pekerjaan.

  1. Panggil API [UpdateJobExecution](jobs-mqtt-api.md#mqtt-updatejobexecution) MQTT untuk memperbarui status pekerjaan. Atau, untuk menggabungkan ini dan langkah sebelumnya dalam satu panggilan, perangkat dapat menelepon[StartNextPendingJobExecution](jobs-mqtt-api.md#mqtt-startnextpendingjobexecution).

  1. (Opsional) Anda dapat menambahkan pengatur waktu langkah dengan menetapkan nilai `stepTimeoutInMinutes` saat Anda memanggil salah satu [UpdateJobExecution](jobs-mqtt-api.md#mqtt-updatejobexecution) atau[StartNextPendingJobExecution](jobs-mqtt-api.md#mqtt-startnextpendingjobexecution).

  1. Lakukan tindakan yang ditentukan oleh dokumen pekerjaan menggunakan [UpdateJobExecution](jobs-mqtt-api.md#mqtt-updatejobexecution) MQTT API untuk melaporkan kemajuan pekerjaan.

  1. Lanjutkan untuk memantau eksekusi pekerjaan dengan memanggil [DescribeJobExecution](jobs-mqtt-api.md#mqtt-describejobexecution) MQTT API dengan JoBid ini. Jika eksekusi pekerjaan dihapus, [DescribeJobExecution](jobs-mqtt-api.md#mqtt-describejobexecution) mengembalikan file`ResourceNotFoundException`.

     Perangkat harus dapat memulihkan ke keadaan yang valid jika eksekusi pekerjaan dibatalkan atau dihapus saat perangkat menjalankan pekerjaan.

  1. Hubungi [UpdateJobExecution](jobs-mqtt-api.md#mqtt-updatejobexecution) MQTT API setelah selesai dengan pekerjaan untuk memperbarui status pekerjaan dan melaporkan keberhasilan atau kegagalan.

  1. Karena status eksekusi pekerjaan ini telah diubah menjadi status terminal, pekerjaan berikutnya yang tersedia untuk eksekusi (jika ada) berubah. Perangkat diberi tahu bahwa eksekusi pekerjaan tertunda berikutnya telah berubah. Pada titik ini, perangkat harus melanjutkan seperti yang dijelaskan pada langkah 2. 

  Jika perangkat tetap online, ia terus menerima pemberitahuan tentang eksekusi pekerjaan tertunda berikutnya. Ini termasuk data eksekusi pekerjaannya, ketika menyelesaikan pekerjaan atau eksekusi pekerjaan baru yang tertunda ditambahkan. Ketika ini terjadi, perangkat berlanjut seperti yang dijelaskan pada langkah 2.
+ 

**Pilih dari pekerjaan yang tersedia**

  1. Ketika perangkat pertama kali online, itu harus berlangganan `notify` topik hal itu.

  1. Hubungi [GetPendingJobExecutions](jobs-mqtt-api.md#mqtt-getpendingjobexecutions) MQTT API untuk mendapatkan daftar eksekusi pekerjaan yang tertunda.

  1. Jika daftar berisi satu atau lebih eksekusi pekerjaan, pilih salah satu.

  1. Hubungi [DescribeJobExecution](jobs-mqtt-api.md#mqtt-describejobexecution) MQTT API untuk mendapatkan dokumen pekerjaan dan detail lainnya, termasuk status apa pun yang disimpan. `statusDetails`

  1. Panggil API [UpdateJobExecution](jobs-mqtt-api.md#mqtt-updatejobexecution) MQTT untuk memperbarui status pekerjaan. Jika `includeJobDocument` bidang diatur ke `true` dalam perintah ini, perangkat dapat melewati langkah sebelumnya dan mengambil dokumen pekerjaan pada saat ini.

  1. Secara opsional, Anda dapat menambahkan pengatur waktu langkah dengan menyetel nilai `stepTimeoutInMinutes` saat Anda menelepon[UpdateJobExecution](jobs-mqtt-api.md#mqtt-updatejobexecution).

  1. Lakukan tindakan yang ditentukan oleh dokumen pekerjaan menggunakan [UpdateJobExecution](jobs-mqtt-api.md#mqtt-updatejobexecution) MQTT API untuk melaporkan kemajuan pekerjaan.

  1. Lanjutkan untuk memantau eksekusi pekerjaan dengan memanggil [DescribeJobExecution](jobs-mqtt-api.md#mqtt-describejobexecution) MQTT API dengan JoBid ini. Jika eksekusi pekerjaan dibatalkan atau dihapus saat perangkat menjalankan pekerjaan, perangkat harus dapat memulihkan ke status yang valid.

  1. Hubungi [UpdateJobExecution](jobs-mqtt-api.md#mqtt-updatejobexecution) MQTT API setelah selesai dengan pekerjaan untuk memperbarui status pekerjaan dan melaporkan keberhasilan atau kegagalan.

  Jika perangkat tetap online, itu akan diberitahu tentang semua eksekusi pekerjaan yang tertunda ketika eksekusi pekerjaan baru yang tertunda tersedia. Ketika ini terjadi, perangkat dapat melanjutkan seperti yang dijelaskan pada langkah 2.

Jika perangkat tidak dapat melakukan pekerjaan, perangkat harus memanggil [UpdateJobExecution](jobs-mqtt-api.md#mqtt-updatejobexecution) MQTT API untuk memperbarui status pekerjaan ke. `REJECTED`