Annullamento del task di attività di Amazon Simple - Amazon Simple Workflow Service

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à.

Annullamento del task di attività di Amazon Simple

L'annullamento del task di attività permette al decisore di terminare le attività che non devono più essere eseguite. Amazon SWF utilizza un meccanismo di annullamento cooperativo e non ferma in modo forzato l'esecuzione dei task di attività in. Devi programmare i lavoratori di attività per gestire le richieste di annullamento.

Il decisore può decidere di annullare un task di attività mentre sta elaborando un task di decisione. Per annullare un task di attività, il decisore utilizza l'azione RespondDecisionTaskCompleted con la decisione RequestCancelActivityTask.

Se il task di attività non è stato ancora acquisito da un lavoratore di attività, il servizio annullerà il task. C'è una race condition potenziale per cui un lavoratore di attività può acquisire il task in qualunque momento. Se il task è già stato assegnato a un lavoratore di attività, allora al lavoratore di attività verrà richiesto di annullare il task.

In questo esempio, l'esecuzione di flusso di lavoro riceve un segnale per annullare l'ordine.

https://swf.us-east-1.amazonaws.com SignalWorkflowExecution {"domain": "867530901", "workflowId": "20110927-T-1", "runId": "9ba33198-4b18-4792-9c15-7181fb3a8852", "signalName": "CancelOrder", "input": "order 3553"}

Se l'esecuzione del flusso di lavoro riceve il segnale, Amazon SWF restituisce una risposta HTTP corretta simile a quella riportata di seguito. Amazon SWF genererà un task di decisione per comunicare al decisore di elaborare il segnale.

HTTP/1.1 200 OK Content-Length: 0 Content-Type: application/json x-amzn-RequestId: 6c0373ce-074c-11e1-9083-8318c48dee96

Quando il decisore elabora il task di decisione e visualizza il segnale nella cronologia, il decisore tenta di annullare l'attività in sospeso che ha l'ID attività ShipOrderActivity0001. L'ID attività viene fornito nella cronologia del flusso di lavoro dall'evento del task di attività pianificato.

https://swf.us-east-1.amazonaws.com RespondDecisionTaskCompleted { "taskToken":"12342e17-80f6-FAKE-TASK-TOKEN32f0223", "decisions":[{ "decisionType":"RequestCancelActivityTask", "RequestCancelActivityTaskDecisionAttributes":{ "ActivityID":"ShipOrderActivity0001" } } ] }

Se Amazon SWF riceve senza errori la richiesta di annullamento, restituisce una risposta HTTP corretta simile a quella illustrata di seguito:

HTTP/1.1 200 OK Content-Length: 0 Content-Type: application/json x-amzn-RequestId: 6c0373ce-074c-11e1-9083-8318c48dee96

Il tentativo di annullamento viene registrato nella cronologia come l'evento ActivityTaskCancelRequested.

Se l'attività viene annullata correttamente, come indicato da unActivityTaskCanceledevento—programmare il decisore per adottare le misure appropriate che dovrebbero seguire l'annullamento dell'attività, ad esempio la chiusura dell'esecuzione del flusso di lavoro.

Se l'attività non può essere annullata, ad esempio se l'attività viene completata, fallimentata o scaduta invece di annullare, il decisore deve accettare i risultati dell'attività o eseguire qualsiasi pulizia o attenuazione necessaria dal caso d'uso.

Se il task di attività è già stato acquisito da un lavoratore di attività, allora la richiesta di annullamento viene trasmessa attraverso un meccanismo task-heartbeat. Gli addetti alle attività possono utilizzare periodicamenteRecordActivityTaskHeartbeatper comunicare ad Amazon SWF che il task è ancora in corso.

I lavoratori di attività non devono fornire un heartbeat, sebbene sia consigliato per i task di lunga durata. L'annullamento del task richiede una registrazione periodica dell'heartbeat; se il lavoratore non fornisce l'heartbeat, il task non può essere annullato.

Se il decisore richiede l'annullamento del task di attività, Amazon SWF imposta il valore delcancelRequestoggetto su true. L'oggetto cancelRequest fa parte dell'oggetto ActivityTaskStatus che viene restituito dal servizio in risposta a RecordActivityTaskHeartbeat.

Amazon SWF non impedisce il completamento di un task di attività di cui è stato richiesto l'annullamento; è l'attività che deve determinare come gestire la richiesta di annullamento. In base ai requisiti, programma il lavoratore di attività affinché annulli il task di attività o ignori la richiesta di annullamento.

Se desideri che il lavoratore di attività indichi che il lavoro per il task di attività è stato annullato, programmalo in modo che risponda con RespondActivityTaskCanceled. Se desideri che il lavoratore di attività completi il task, programmalo con RespondActivityTaskCompleted standard.

Quando Amazon SWF riceve ilRespondActivityTaskCompletedoRespondActivityTaskCanceled, aggiorna la cronologia dell'esecuzione del flusso di lavoro e pianifica un task di decisione per informare il decisore.

Programma il decisore per elaborare il task di decisione e restituisci le decisioni aggiuntive. Se il task di attività viene annullato correttamente, programma il decisore affinché esegua i task necessari per continuare o chiudere l'esecuzione del flusso di lavoro. Se il task di attività non viene annullato correttamente, programma il decisore affinché accetti o ignori i risultati o programmi la pulizia necessaria.