Annulation d'une tâche d'activité Amazon Simple Workflow Service - Amazon Simple Workflow Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Annulation d'une tâche d'activité Amazon Simple Workflow Service

L'annulation d'une tâche d'activité permet au décideur de mettre fin aux activités qui n'ont plus besoin d'être effectuées. Amazon SWF utilise un mécanisme d'annulation et n'interrompt pas les tâches d'activité en cours d'exécution. Vous devez programmer les outils de traitement d'activité pour traiter les demandes d'annulation.

Le décideur peut décider d'annuler une activité tâche alors que c'est une tâche de la décision de traitement. Pour annuler une tâche d'activité, le décideur utilise l'action RespondDecisionTaskCompleted avec la décision RequestCancelActivityTask.

Si la tâche d'activité n'a pas encore été acquise par un outil de traitement d'activité, le service annule la tâche. Notez qu'il existe une condition de concurrence potentielle dans le sens où un outil de traitement d'activité peut acquérir la tâche à tout moment. Si la tâche a déjà été attribuée à un outil de traitement d'activité, il sera invité à annuler la tâche.

Dans cet exemple, l'exécution de flux de travail reçoit un signal pour annuler la commande.

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"}

Si l'exécution de flux de travail reçoit le signal, Amazon SWF renvoie une réponse HTTP positive similaire à ce qui suit. Amazon SWF génère une tâche de décision pour demander au décideur de traiter le signal.

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

Lorsque le décideur traite la tâche de décision et voit le signal dans l'historique, il tente d'annuler l'activité en cours qui présente l'ID d'activité ShipOrderActivity0001. L'ID d'activité est fourni dans l'historique du flux de travail à partir de l'événement de la tâche d'activité planifiée.

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

Si Amazon SWF reçoit la demande d'annulation, il renvoie une réponse HTTP positive similaire à ce qui suit :

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

La tentative d'annulation est enregistrée dans l'historique en tant qu'événement ActivityTaskCancelRequested.

Si la tâche est annulée avec succès, comme indiqué par unActivityTaskCanceledévénement : programmez votre décideur pour qu'il prenne les mesures appropriées qui doivent suivre l'annulation, telles que la fermeture de l'exécution du flux de travail.

Si la tâche d'activité n'a pas pu être annulée, par exemple, si la tâche se termine, échoue ou exprime au lieu d'être annulée, le décideur doit accepter les résultats de l'activité ou effectuer les tâches de nettoyage ou d'atténuation des risques requises par votre cas d'utilisation.

Si la tâche d'activité a déjà été acquise par un outil de traitement d'activité, la demande d'annulation est transmise via le mécanisme task-heartbeat. Les travailleurs d'activité peuvent utiliser périodiquementRecordActivityTaskHeartbeatpour indiquer à Amazon SWF que la tâche est encore en cours.

Notez que les outils de traitement d'activité ne sont obligés de générer une pulsation, même si cette approche est recommandée pour les tâches de longue durée. L'annulation d'une tâche nécessite l'enregistrement d'une pulsation régulière. Si l'outil de traitement d'activité ne génère pas de pulsation, la tâche ne peut pas être annulée.

Si le décideur demande une annulation de la tâche, Amazon SWF définit la valeur decancelRequests'opposer à true. L'objet cancelRequest fait partie de l'objet ActivityTaskStatus qui est renvoyé par le service en réponse à RecordActivityTaskHeartbeat.

Amazon SWF n'empêche pas la finalisation d'une tâche d'activité dont l'annulation a été demandée. C'est à l'activité de déterminer comment gérer la demande d'annulation. Selon vos besoins, programmez l'outil de traitement d'activité pour annuler la tâche d'activité ou ignorer la demande d'annulation.

Si vous souhaitez que l'outil de traitement d'activité indique que le travail de la tâche d'activité a été annulé, programmez-le pour répondre avec RespondActivityTaskCanceled. Si vous souhaitez que l'outil de traitement d'activité termine la tâche, programmez le pour répondre avec un RespondActivityTaskCompleted standard.

Lorsque Amazon SWF reçoit leRespondActivityTaskCompletedouRespondActivityTaskCanceled, il met à jour l'historique d'exécution du flux de travail et planifie une tâche de décision pour en informer le décideur.

Programmez le décideur pour traiter la tâche de décision et pour renvoyer toutes décisions supplémentaires. Si la tâche d'activité est annulée avec succès, programmez le décideur pour effectuer les tâches requises pour continuer ou pour fermer l'exécution du flux de travail. Si la tâche d'activité n'est pas annulée avec succès, programmez le décideur pour accepter les résultats, pour les ignorer ou pour planifier tout nettoyage requis.