本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设备工作流程
设备可以使用以下任一方式处理它运行的任务。
-
获取下一个任务
-
当设备首次联机时,它应订阅设备的
notify-next
主题。 -
使用 jobId
$next
调用 DescribeJobExecution MQTT API 以获取下一个任务、其任务文档和其他详细信息,包括保存在statusDetails
中的任何状态。如果任务文档具有代码文件签名,则您必须验证签名,然后才能继续处理任务请求。 -
调用 UpdateJobExecution MQTT API 以更新任务状态。或者,要在一个调用中将此步骤与上一步骤合并,设备可调用 StartNextPendingJobExecution。
-
(可选)您可在调用 UpdateJobExecution 或 StartNextPendingJobExecution 时为
stepTimeoutInMinutes
设置值来添加步骤计时器。 -
使用 UpdateJobExecution MQTT API 执行任务文档所指定的操作以报告任务的进度。
-
通过使用此 jobId 调用 DescribeJobExecution MQTT API 来继续监控任务执行。如果删除了任务执行,DescribeJobExecution 将返回
ResourceNotFoundException
。如果在设备运行任务时取消或删除了任务执行,则设备应能够恢复到有效状态。
-
在任务完成后调用 UpdateJobExecution MQTT API 以更新任务状态并报告成功或失败。
-
由于此任务的执行状态已更改为最终状态,因此,可用于执行的下一个任务(如果有)将发生更改。设备将收到下一个待处理任务执行已更改的通知。此时,设备将按照步骤 2 中所述继续操作。
如果设备保持联机状态,则将继续收到下一个待处理任务执行的通知。这包括它在完成任务或添加新的待处理任务执行时的任务执行数据。在发生此情况时,设备将按照步骤 2 中所述继续操作。
-
-
从可用任务中选择
-
当设备首次联机时,它应订阅事物的
notify
主题。 -
调用 GetPendingJobExecutions MQTT API 以获取待处理任务执行的列表。
-
如果列表中包含一个或多个任务执行,请选择一个任务执行。
-
调用 DescribeJobExecution MQTT API 以获取任务文档和其它详细信息,包括保存在
statusDetails
中的任何状态。 -
调用 UpdateJobExecution MQTT API 以更新任务状态。如果在此命令中将
includeJobDocument
字段设置为true
,则设备可跳过上一个步骤并在此时检索任务文档。 -
(可选)您可在调用 UpdateJobExecution 时为
stepTimeoutInMinutes
设置值来添加步骤计时器。 -
使用 UpdateJobExecution MQTT API 执行任务文档所指定的操作以报告任务的进度。
-
通过使用此 jobId 调用 DescribeJobExecution MQTT API 来继续监控任务执行。如果在设备运行任务时取消或删除了任务执行,则设备应能够恢复到有效状态。
-
在任务完成后调用 UpdateJobExecution MQTT API 以更新任务状态并报告成功或失败。
如果设备保持联机状态,则在一个新的待处理任务执行变为可用时,它将收到所有待处理任务执行的通知。在发生此情况时,设备可按照步骤 2 中所述继续操作。
-
如果设备无法执行任务,它应调用 UpdateJobExecution MQTT API 来将任务状态更新为 REJECTED
。