디바이스 워크플로우
디바이스는 다음 방법 중 하나를 사용하여 실행되는 작업을 처리할 수 있습니다.
-
다음 작업 가져오기
-
디바이스가 처음 온라인에 연결되면 해당 디바이스의
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
로 업데이트해야 합니다.