Développement d'un outil de traitement 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.

Développement d'un outil de traitement d'activité dans Amazon SWF

Un outil de traitement d'activité fournit l'implémentation d'un ou de plusieurs types d'activités. Il communique avec Amazon SWF pour recevoir les tâches de l'activité et les exécuter. Plusieurs outils de traitement d'activité peuvent réaliser des tâches dont le type d'activité est le même.

Amazon SWF rend une tâche d'activité accessible par les outils de traitement d'activité lorsque le décideur planifie cette dernière. Dès qu'un décideur planifie une tâche d'activité, il fournit les données (que vous déterminez) dont l'outil de traitement d'activité a besoin pour effectuer la tâche d'activité. Amazon SWF insère ces données dans la tâche d'activité avant de l'envoyer à l'outil de traitement de l'activité.

Les outils de traitement d'activité sont gérés par vous. Ils peuvent être écrits dans n'importe quel langage. Un outil de traitement peut être exécuté n'importe où, tant qu'il peut communiquer avec Amazon SWF via l'API. Comme Amazon SWF fournit toutes les informations nécessaires pour effectuer une tâche d'activité, tous les outils de traitement d'activité peuvent être sans état. L'absence d'état permet aux flux de travail d'être hautement évolutifs. Pour gérer les besoins accrus en capacité, il suffit d'ajouter des outils de traitement d'activité.

Cette section explique comment mettre en œuvre un outil de traitement d'activité. Les outils de traitement d'activité doivent régulièrement effectuer les opérations suivantes.

  1. Interrogez sur Amazon SWF pour obtenir une tâche d'activité.

  2. Commencer l'exécution de la tâche

  3. Signalez régulièrement une pulsation à Amazon SWF si la durée de vie de la tâche est longue.

  4. Signalez que la tâche a abouti ou échoué, et renvoyez les résultats à Amazon SWF.

Recherche de tâches d'activité

Pour effectuer les tâches d'activité, chaque outil de traitement d'activité doit les rechercher régulièrement dans Amazon SWF en appelant régulièrement laPollForActivityTaskaction.

Dans l'exemple suivant, l'outil de traitement d'activité ChargeCreditCardWorker01 recherche une tâche dans la liste des tâches, ChargeCreditCard-v0.1. Si aucune tâche d'activité n'est disponible, au bout de 60 secondes, Amazon SWF renvoie une réponse vide. Une réponse vide est une structure Task dans laquelle la valeur taskToken est une chaîne vide.

https://swf.us-east-1.amazonaws.com PollForActivityTask { "domain" : "867530901", "taskList" : { "name": "ChargeCreditCard-v0.1" }, "identity" : "ChargeCreditCardWorker01" }

Si une tâche d'activité devient disponible, Amazon SWF la retourne à l'outil de traitement d'activité. La tâche contient les données que le décideur spécifie quand il planifie l'activité.

Une fois qu'un outil de traitement d'activité reçoit une tâche d'activité, il peut l'effectuer. La section suivante décrit comment réaliser une tâche d'activité.

Réalisation de la tâche d'activité

Après avoir reçu une tâche d'activité, l'outil de traitement d'activité est prêt à l'exécuter.

Pour effectuer une tâche d'activité
  1. Programmez l'outil de traitement d'activité pour interpréter le contenu du champ d'entrée de la tâche. Ce champ contient les données spécifiées par le décideur lorsque la tâche a été programmée.

  2. Programmez l'outil de traitement d'activité pour commencer à traiter les données et à exécuter votre logique.

La section suivante décrit comment programmer les outils de traitement d'activité afin de fournir des mises à jour de l'état à Amazon SWF pour les activités de longue durée.

Création de rapports sur les pulsations des tâches d'activité

Si un délai de pulsation a été associé au type d'activité, l'outil de traitement d'activité doit enregistrer une pulsation avant que ce délai n'expire. Si une tâche d'activité ne fournit pas de pulsation dans le délai d'attente, la tâche excède, Amazon SWF la ferme et planifie une nouvelle tâche de décision pour informer un décideur de l'expiration. Le décideur peut ensuite replanifier la tâche d'activité ou effectuer une autre action.

Si, après expiration, l'outil de traitement d'activité tente de contacter Amazon SWF, par exemple en appelantRespondActivityTaskCompleted, Amazon SWF retournera unUnknownResourceÉchec.

Cette section décrit comment fournir une pulsation d'activité.

Pour enregistrer une pulsation pour la tâche d'activité, programmez l'outil de traitement d'activité pour appeler l'action RecordActivityTaskHeartbeat. Cette action fournit également un champ de chaîne que vous pouvez utiliser pour stocker les données de forme libre afin de quantifier la progression de la façon qui convient à votre application.

Dans cet exemple, l'outil de traitement d'activité signale une pulsation à Amazon SWF et utilise le champ des détails pour indiquer que la tâche d'activité est achevé à 40 %. Pour signaler la pulsation, l'outil de traitement d'activité doit spécifier le jeton de la tâche d'activité.

https://swf.us-east-1.amazonaws.com RecordActivityTaskHeartbeat { "taskToken" : "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "details" : "40" }

Cette action ne crée pas en soi un événement dans l'historique d'exécution du flux de travail. Toutefois, si la tâche expire, l'historique d'exécution du flux de travail contient un événement ActivityTaskTimedOut qui comprend les informations provenant de la dernière pulsation générée par l'outil de traitement d'activité.

Réussite ou échec d'une tâche d'activité

Après l'exécution d'une tâche, l'outil de traitement d'activité doit indiquer si celle-ci a réussi ou échoué.

Finalisation d'une tâche d'activité

Pour finaliser une tâche d'activité, programmez l'outil de traitement d'activité pour appeler l'action RespondActivityTaskCompleted une fois que la tâche d'activité aboutit, en spécifiant le jeton correspondant.

Dans cet exemple, l'outil de traitement d'activité indique que la tâche s'est correctement déroulée.

https://swf.us-east-1.amazonaws.com RespondActivityTaskCompleted { "taskToken": "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "results": "40" }

Lorsque l'activité se termine, Amazon SWF planifie une nouvelle tâche de décision pour l'exécution du flux de travail à laquelle l'activité est associée.

Programmez l'outil de traitement d'activité pour rechercher une autre tâche d'activité une fois qu'une tâche est terminée. Avec ce processus en boucle, l'outil de traitement d'activité recherche et finalise constamment les tâches.

Si l'activité ne répond pas dans leDélai d'attente de début de fermeturepériode, ou siPlanification de la fermeture du délai d'expirationa été dépassé, Amazon SWF déclare l'expiration de la tâche d'activité et planifie une tâche de décision. Cette approche permet à un décideur d'effectuer une action appropriée, telle que la reprogrammation de la tâche.

Par exemple, si une instance Amazon EC2 exécute une tâche d'activité et que l'instance échoue avant la fin de la tâche, le décideur reçoit un événement d'expiration dans l'historique d'exécution du flux de travail. Si la tâche d'activité utilise une pulsation, le décideur reçoit l'événement lorsque la tâche ne parvient pas à fournir la pulsation suivante, après l'échec de l'instance Amazon EC2. Si ce n'est pas le cas, le décideur finit par recevoir l'événement lorsque la tâche d'activité n'aboutit pas dans les délais spécifiés. Il appartient ensuite au décideur de réaffecter la tâche ou d'effectuer une autre action.

Échec d'une tâche d'activité

Si un outil de traitement d'activité ne parvient pas à effectuer une tâche d'activité pour une raison quelconque, mais qu'il parvient encore à communiquer avec Amazon SWF, vous pouvez le programmer pour qu'il échoue à la tâche.

Pour que l'outil de traitement d'activité abandonne une tâche d'activité, programmez-le pour qu'il appelle l'action RespondActivityTaskFailed, qui spécifie le jeton de la tâche.

https://swf.us-east-1.amazonaws.com RespondActivityTaskFailed { "taskToken" : "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "reason" : "CC-Invalid", "details" : "Credit Card Number Checksum Failed" }

En tant que développeur, vous définissez les valeurs qui sont stockées dans les champs Reason et Details. Il s'agit de chaînes de forme libre. Vous pouvez utiliser les conventions de code d'erreur qui servent votre application. Amazon SWF ne traite pas ces valeurs. Cependant, Amazon SWF peut afficher ces valeurs dans la console.

Dès qu'un tâche d'activité échoue, Amazon SWF planifie une tâche de décision pour l'exécution du flux de travail à laquelle la tâche d'activité est associée afin d'en informer le décideur. Programmez le décideur pour gérer les activités ayant échoué, par exemple en replanifiant l'activité ou en abandonnant l'exécution du flux de travail, selon la nature de l'échec.

Lancement des outils de traitement d'activité

Pour lancer les outils de traitement d'activité, compressez votre logique dans un fichier exécutable que vous pourrez utiliser sur la plateforme de ces outils de traitement d'activité. Par exemple, vous pouvez compresser votre code activité sous forme de fichier exécutable Java que vous pouvez exécuter sur des serveurs Linux et Windows.

Une fois lancés, les outils de traitement d'activité se mettent à rechercher des tâches. Toutefois, tant que le décideur ne planifie pas les tâches d'activité, ces recherches expirent sans tâche et les outils de traitement d'activité continuent simplement de rechercher des tâches.

Comme les recherches sont des demandes sortantes, l'outil de traitement d'activité peut s'exécuter sur n'importe quel réseau ayant accès au point de terminaison Amazon SWF.

Vous pouvez lancer autant de outils de traitement d'activité que vous le souhaitez. Lorsque le décideur planifie les tâches d'activité, Amazon SWF distribue automatiquement ces dernières aux outils de traitement d'activité qui les recherchent.