Annulation de tâches d'activité dans Amazon SWF - 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 de tâches d'activité dans Amazon SWF

L'annulation des tâches d'activité indique 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 coopératif et n'interrompt pas de force 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 du flux de travail reçoit le signal, Amazon SWF renvoie une réponse HTTP réussie similaire à la suivante. Amazon SWF générera 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 correctement la demande d'annulation, il renvoie une réponse HTTP réussie similaire à la suivante :

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 un ActivityTaskCanceled événement, programmez votre décideur pour qu'il prenne les mesures appropriées qui devraient suivre l'annulation de la tâche, 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 expire au lieu de l'annuler), votre décideur doit accepter les résultats de l'activité ou effectuer le nettoyage ou les mesures d'atténuation nécessaires à 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 professionnels de l'activité peuvent régulièrement RecordActivityTaskHeartbeat l'utiliser pour signaler à Amazon SWF que la tâche est toujours 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 l'annulation de la tâche, Amazon SWF définit la valeur de cancelRequest l'objet sur 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 réussite d'une tâche d'activité dont l'annulation a été demandée ; c'est à l'activité de déterminer comment traiter 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.

Lorsqu'Amazon SWF reçoit la RespondActivityTaskCanceled demande RespondActivityTaskCompleted ou, il met à jour l'historique d'exécution du flux de travail et planifie une tâche de décision pour 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.