裝置工作流程 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

裝置工作流程

裝置可以使用下列其中一種方式來處理其執行的任務。

  • 取得下一個任務
    1. 裝置首次上線時,應訂閱裝置的 notify-next 主題。

    2. 以 jobId $next 呼叫 DescribeJobExecution MQTT API 來取得下一個任務、任務文件及其他詳細資訊,包括任何儲存於 statusDetails 的狀態。如果任務文件具有程式碼檔簽章,則必須先驗證簽章,然後再繼續處理任務請求。

    3. 呼叫 UpdateJobExecutionMQTT API 以更新工作狀態。或者,裝置可以呼叫 StartNextPendingJobExecution,將此步驟與前一步驟結合至同一個呼叫裡。

    4. (選用) 當您呼叫 UpdateJobExecutionStartNextPendingJobExecution 時,您可以透過設定 stepTimeoutInMinutes 的值來新增步驟計時器。

    5. 執行由使用 UpdateJobExecutionMQTT API 之工作文件所指定的動作,以回報工作進度。

    6. 使用此 jobId 來呼叫 DescribeJobExecution MQTT API,即可繼續監控任務執行。如果刪除任務執行,DescribeJobExecution 會傳回 ResourceNotFoundException

      如果任務執行在裝置執行任務時遭到取消或刪除,裝置應可還原為有效狀態。

    7. 任務完成時呼叫 UpdateJobExecutionMQTT API 以更新任務狀態並回報成功或失敗。

    8. 由於此任務的執行狀態已變更為結束狀態,因此下一個可執行的任務 (若有) 將會變更。狀置會收到下一個待定任務執行已變更的通知。此時,裝置應繼續如步驟 2 所述運作。

    如果裝置仍在線上,它會繼續收到下一個待定任務執行的通知。這包括其任務執行資料、它何時完成任務或何時新增待定任務執行。在此情況下,裝置應繼續如步驟 2 所述運作。

  • 選取可用的任務
    1. 裝置首次上線時,應訂閱物件的 notify 主題。

    2. 呼叫 GetPendingJobExecutions MQTT API 來取得待定任務執行清單。

    3. 如果清單包含了一或多個任務執行項目,請選取其中一項。

    4. 呼叫 DescribeJobExecution MQTT API 來取得任務文件及其他詳細資訊,包括儲存於 statusDetails 的任何狀態。

    5. 呼叫 UpdateJobExecutionMQTT API 以更新工作狀態。如果 includeJobDocument 欄位在此命令中設定為 true,則裝置可以略過先前的步驟並擷取當前的任務文件。

    6. 或者,當您呼叫 UpdateJobExecution 時,您可以透過設定 stepTimeoutInMinutes 的值來新增步驟計時器。

    7. 執行由使用 UpdateJobExecutionMQTT API 之工作文件所指定的動作,以回報工作進度。

    8. 使用此 jobId 來呼叫 DescribeJobExecution MQTT API,即可繼續監控任務執行。如果任務執行在裝置執行任務時遭取消或刪除,裝置應可還原為有效狀態。

    9. 任務完成時呼叫 UpdateJobExecutionMQTT API 以更新任務狀態並回報成功或失敗。

    如果裝置維持在線上,只要有新的待定任務執行出現,裝置就會收到所有待定任務執行的通知。在此情況下,裝置可繼續如步驟 2 所述運作。

如果裝置無法實施任務,則應呼叫 UpdateJobExecution MQTT API 將任務狀態更新為 REJECTED