Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Flusso di lavoro dei processi
Di seguito vengono illustrati i diversi passaggi del flusso di lavoro dei processi, dall'avvio di un nuovo processo alla segnalazione dello stato di completamento dell'esecuzione di un processo.
Avvio di un nuovo processo
Quando viene creato un nuovo lavoro, AWS IoT Jobs pubblica un messaggio sull'$aws/things/
argomento per ogni dispositivo di destinazione.thing-name
/jobs/notify
Il messaggio contiene le informazioni seguenti:
{ "timestamp":1476214217017, "jobs":{ "QUEUED":[{ "jobId":"0001", "queuedAt":1476214216981, "lastUpdatedAt":1476214216981, "versionNumber" : 1 }] } }
Il dispositivo riceve questo messaggio sull'argomento '$aws/things/
quando l'esecuzione del processo viene aggiunta alla coda.thingName
/jobs/notify'
Nota
Per i processi con SchedulingConfig
opzionale, il processo manterrà lo stato iniziale di SCHEDULED
. Quando il processo raggiunge startTime
selezionata, si verificherà quanto segue:
-
Lo stato del processo verrà aggiornato a
IN_PROGRESS
. -
Il processo avvierà l'implementazione del documento del processo in tutti i dispositivi nel gruppo di destinazione.
Recupero delle informazioni sul processo
Per ottenere ulteriori informazioni sull'esecuzione di un processo, il dispositivo chiama l'API MQTT DescribeJobExecution con il campo includeJobDocument
impostato su true
(impostazione di default).
Se la richiesta ha esito positivo, il servizio AWS IoT Jobs pubblica un messaggio sull'$aws/things/MyThing/jobs/0023/get/accepted
argomento:
{ "clientToken" : "client-001", "timestamp" : 1489097434407, "execution" : { "approximateSecondsBeforeTimedOut": number, "jobId" : "023", "status" : "QUEUED", "queuedAt" : 1489097374841, "lastUpdatedAt" : 1489097374841, "versionNumber" : 1, "jobDocument" : { < contents of job document > } } }
Se la richiesta fallisce, il servizio AWS IoT Jobs pubblica un messaggio sull'$aws/things/MyThing/jobs/0023/get/rejected
argomento.
Il dispositivo a questo punto dispone del documento del processo che può utilizzare per eseguire le operazioni remote per il processo. Se il documento del processo contiene un URL Amazon S3 prefirmato, il dispositivo può usare l'URL per scaricare i file necessari per il processo.
Segnalazione dello stato dell'esecuzione del processo
Quando un dispositivo esegue il processo, può chiamare l'API MQTT UpdateJobExecution per aggiornare lo stato dell'esecuzione del processo.
Ad esempio, un dispositivo può aggiornare lo stato dell'esecuzione di un processo impostandolo su IN_PROGRESS
pubblicando il messaggio seguente nell'argomento $aws/things/MyThing/jobs/0023/update
:
{ "status":"IN_PROGRESS", "statusDetails": { "progress":"50%" }, "expectedVersion":"1", "clientToken":"client001" }
Jobs risponde pubblicando un messaggio nell'argomento $aws/things/MyThing/jobs/0023/update/accepted
o $aws/things/MyThing/jobs/0023/update/rejected
:
{ "clientToken":"client001", "timestamp":1476289222841 }
Il dispositivo può combinare le due richieste precedenti chiamando StartNextPendingJobExecution. In questo modo si ottiene e si avvia la successiva esecuzione di processo in sospeso e si consente al dispositivo di aggiornare lo stato di esecuzione del processo. Questa richiesta, inoltre, restituisce il documento del processo quando c'è un'esecuzione del processo in sospeso.
Se il processo contiene un TimeoutConfig, il timer in corso inizia a funzionare. È inoltre possibile impostare un timer a intervalli per l'esecuzione di un lavoro impostando un valore per stepTimeoutInMinutes
quando si chiama UpdateJobExecution. Il timer della fase si applica solo all'esecuzione del processo che stai aggiornando. È possibile impostare un nuovo valore per questo timer ogni volta che si aggiorna l'esecuzione di un processo. È inoltre possibile creare uno step timer quando si chiama StartNextPendingJobExecution. Se l'esecuzione del processo resta nello stato IN_PROGRESS
per un periodo di tempo superiore a quello consentito dall'intervallo del timer della fase, l'esecuzione del processo non va a buon fine e viene impostato lo stato TIMED_OUT
terminale. Il timer della fase non ha alcun effetto su quello in corso impostato al momento della creazione di un processo.
Il campo status
può essere impostato su IN_PROGRESS
, SUCCEEDED
o FAILED
. Non è possibile aggiornare lo stato dell'esecuzione di un processo già in stato terminale.
Segnalazione del completamento dell'esecuzione
Quando il dispositivo completa l'esecuzione del processo, chiama l'API MQTT UpdateJobExecution. Se il processo ha avuto esito positivo, impostare status
su SUCCEEDED
e, nel payload del messaggio, in statusDetails
, aggiungere altre informazioni sul processo come coppie nome-valore. Il timer in corso e quello della fase si interrompono al completamento dell'esecuzione del processo.
Per esempio:
{ "status":"SUCCEEDED", "statusDetails": { "progress":"100%" }, "expectedVersion":"2", "clientToken":"client-001" }
Se il processo ha avuto esito negativo, il valore di status
viene impostato su FAILED
e in statusDetails
vengono aggiunte informazioni sull'errore che si è verificato:
{ "status":"FAILED", "statusDetails": { "errorCode":"101", "errorMsg":"Unable to install update" }, "expectedVersion":"2", "clientToken":"client-001" }
Nota
L'attributo statusDetails
può contenere un numero qualsiasi di coppie nome-valore.
Quando il servizio AWS IoT Jobs riceve questo aggiornamento, pubblica un messaggio sull'$aws/things/MyThing/jobs/notify
argomento per indicare che l'esecuzione del lavoro è completa:
{ "timestamp":1476290692776, "jobs":{} }
Processi aggiuntivi
Se ci sono altre esecuzioni dei processi in sospeso per il dispositivo, vengono incluse nel messaggio pubblicato in $aws/things/MyThing/jobs/notify
.
Per esempio:
{ "timestamp":1476290692776, "jobs":{ "QUEUED":[{ "jobId":"0002", "queuedAt":1476290646230, "lastUpdatedAt":1476290646230 }], "IN_PROGRESS":[{ "jobId":"0003", "queuedAt":1476290646230, "lastUpdatedAt":1476290646230 }] } }