本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
裝置工作流程
裝置可以使用下列其中一種方式來處理其執行的任務。
-
取得下一個任務
-
裝置首次上線時,應訂閱裝置的
notify-next
主題。 -
以 jobId
$next
呼叫 DescribeJobExecution MQTT API 來取得下一個任務、任務文件及其他詳細資訊,包括任何儲存於statusDetails
的狀態。如果任務文件具有程式碼檔簽章,則必須先驗證簽章,然後再繼續處理任務請求。 -
呼叫 UpdateJobExecutionMQTT API 以更新工作狀態。或者,裝置可以呼叫 StartNextPendingJobExecution,將此步驟與前一步驟結合至同一個呼叫裡。
-
(選用) 當您呼叫 UpdateJobExecution 或 StartNextPendingJobExecution 時,您可以透過設定
stepTimeoutInMinutes
的值來新增步驟計時器。 -
執行由使用 UpdateJobExecutionMQTT API 之工作文件所指定的動作,以回報工作進度。
-
使用此 jobId 來呼叫 DescribeJobExecution MQTT API,即可繼續監控任務執行。如果刪除任務執行,DescribeJobExecution 會傳回
ResourceNotFoundException
。如果任務執行在裝置執行任務時遭到取消或刪除,裝置應可還原為有效狀態。
-
任務完成時呼叫 UpdateJobExecutionMQTT API 以更新任務狀態並回報成功或失敗。
-
由於此任務的執行狀態已變更為結束狀態,因此下一個可執行的任務 (若有) 將會變更。狀置會收到下一個待定任務執行已變更的通知。此時,裝置應繼續如步驟 2 所述運作。
如果裝置仍在線上,它會繼續收到下一個待定任務執行的通知。這包括其任務執行資料、它何時完成任務或何時新增待定任務執行。在此情況下,裝置應繼續如步驟 2 所述運作。
-
-
選取可用的任務
-
裝置首次上線時,應訂閱物件的
notify
主題。 -
呼叫 GetPendingJobExecutions MQTT API 來取得待定任務執行清單。
-
如果清單包含了一或多個任務執行項目,請選取其中一項。
-
呼叫 DescribeJobExecution MQTT API 來取得任務文件及其他詳細資訊,包括儲存於
statusDetails
的任何狀態。 -
呼叫 UpdateJobExecutionMQTT API 以更新工作狀態。如果
includeJobDocument
欄位在此命令中設定為true
,則裝置可以略過先前的步驟並擷取當前的任務文件。 -
或者,當您呼叫 UpdateJobExecution 時,您可以透過設定
stepTimeoutInMinutes
的值來新增步驟計時器。 -
執行由使用 UpdateJobExecutionMQTT API 之工作文件所指定的動作,以回報工作進度。
-
使用此 jobId 來呼叫 DescribeJobExecution MQTT API,即可繼續監控任務執行。如果任務執行在裝置執行任務時遭取消或刪除,裝置應可還原為有效狀態。
-
任務完成時呼叫 UpdateJobExecutionMQTT API 以更新任務狀態並回報成功或失敗。
如果裝置維持在線上,只要有新的待定任務執行出現,裝置就會收到所有待定任務執行的通知。在此情況下,裝置可繼續如步驟 2 所述運作。
-
如果裝置無法實施任務,則應呼叫 UpdateJobExecution MQTT API 將任務狀態更新為 REJECTED
。