Comment AWS Flow Framework fonctionne Java - AWS Flow Framework pour Java

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.

Comment AWS Flow Framework fonctionne Java

Le AWS Flow Framework for Java fonctionne avec Amazon SWF pour faciliter la création d'applications évolutives et tolérantes aux pannes afin d'effectuer des tâches asynchrones qui peuvent être longues, distantes, ou les deux. Le « Hello World ! » les exemples présentés Qu'est-ce que c'est AWS Flow Framework pour Java ? ont présenté les bases de l'utilisation du pour AWS Flow Framework implémenter des applications de flux de travail de base. Cette section fournit des informations conceptuelles sur le fonctionnement AWS Flow Framework des applications. La première section résume la structure de base d'une AWS Flow Framework application, et les autres sections fournissent des détails supplémentaires sur le fonctionnement AWS Flow Framework des applications.

Types de délai d'expiration Amazon SWF

Pour garantir que les exécutions des flux de travail s'exécutent correctement, Amazon SWF vous permet de définir différents types de délais d'expiration. Certains délais spécifient la durée totale d'exécution du flux de travail. D'autres délais définissent combien de temps les tâches d'activité peuvent prendre avant d'être affectées à un outil de traitement, ainsi que combien de temps elles peuvent prendre pour se terminer à compter de l'heure où elles sont planifiées. Tous les délais d'expiration de l'API Amazon SWF sont spécifiés en secondes. Amazon SWF prend également en charge la chaîne en NONE tant que valeur de délai d'attente, ce qui indique l'absence de délai d'expiration.

Pour les délais liés aux tâches de décision et aux tâches d'activité, Amazon SWF ajoute un événement à l'historique d'exécution du flux de travail. Les attributs de l'événement fournissent des informations sur le type de délai d'attente qui s'est produit et sur la tâche de décision ou d'activité affectée. Amazon SWF planifie également une tâche de décision. Lorsque le décideur reçoit la nouvelle tâche de décision, il voit l'événement de temporisation dans l'historique et prend l'action appropriée en l'RespondDecisionTaskCompletedappelant.

Une tâche est considérée comme ouverte depuis le moment où elle est planifiée jusqu'à ce qu'elle soit fermée. Par conséquent, une tâche est indiquée comme ouverte lorsqu'un outil de traitement s'en occupe. Une tâche est fermée lorsqu'un outil de traitement la signale comme terminée, comme annulée ou comme ayant échoué. Une tâche peut également être fermée par Amazon SWF en raison d'un délai d'attente.

Délais liés au flux de travail et aux tâches de décision

Le schéma suivant illustre comment les délais de flux de travail et de décision sont liés à la durée de vie d'un flux de travail :

Durée de vie d'un flux de travail, avec des délais

Il existe deux types de délai qui s'appliquent aux tâches du flux de travail et aux tâches de décision :

  • Du début à la fermeture du flux de travail (timeoutType: START_TO_CLOSE) : ce délai indique la durée maximale d'exécution d'un flux de travail. Il est défini comme valeur par défaut lors de l'enregistrement du flux de travail, mais peut être remplacé par une autre valeur lorsque le flux de travail est lancé. Si ce délai est dépassé, Amazon SWF ferme l'exécution du flux de travail et ajoute un événement de WorkflowExecutionTimedOuttype à l'historique d'exécution du flux de travail. Outre timeoutType, les attributs de l'événement spécifient la stratégie childPolicy qui est en vigueur pour cette exécution de flux de travail. La stratégie enfant définit comment les exécutions de flux de travail enfant sont gérées si l'exécution de flux de travail parent expire ou si elle est arrêtée. Par exemple, si la stratégie childPolicy est définie sur TERMINATE, les exécutions de flux de travail enfant sont arrêtées. Une fois qu'une exécution de flux de travail expire, vous ne pouvez plus effectuer que les appels de visibilité.

  • Début de la fin de la tâche de décision (timeoutType: START_TO_CLOSE) : ce délai indique le temps maximum que le décideur correspondant peut prendre pour terminer une tâche de décision. Il est défini lors de l'enregistrement du type de flux de travail. Si ce délai est dépassé, la tâche est marquée comme expirée dans l'historique d'exécution du flux de travail, et Amazon SWF ajoute un événement de DecisionTaskTimedOuttype à l'historique du flux de travail. Les attributs de l'événement comprennent les ID des événements qui correspondent au moment où cette tâche de décision (scheduledEventId) a été planifiée et au moment où elle a été lancée (startedEventId). Outre l'ajout de l'événement, Amazon SWF planifie également une nouvelle tâche de décision pour avertir le décideur que le délai imparti pour cette tâche de décision a expiré. Après expiration de ce délai, toute tentative de finalisation de la décision avec RespondDecisionTaskCompleted échoue.

Délais des tâches d'activité

Le schéma suivant illustre le lien entre les délais d'attente et la durée de vie d'une tâche d'activité :

Durée de vie d'une tâche, avec des délais

Quatre types de délai s'appliquent aux tâches d'activité :

  • Début de la fin de la tâche d'activité (timeoutType: START_TO_CLOSE) : ce délai indique le temps maximum qu'un agent d'activité peut prendre pour traiter une tâche une fois qu'il l'a reçue. Les tentatives de clôture d'une tâche d'activité dont le délai imparti a expiré à l'aide de RespondActivityTaskCanceledRespondActivityTaskCompleted, et RespondActivityTaskFailedéchoueront.

  • Activity Task Heartbeat (timeoutType: HEARTBEAT) : ce délai indique la durée maximale pendant laquelle une tâche peut être exécutée avant de fournir sa progression au cours de l'RecordActivityTaskHeartbeataction.

  • Planification des tâches d'activité jusqu'au début (timeoutType: SCHEDULE_TO_START) : ce délai indique la durée pendant laquelle Amazon SWF attend avant de mettre fin à la tâche d'activité si aucun collaborateur n'est disponible pour effectuer la tâche. Lorsque la tâche arrive à expiration, elle n'est pas attribuée à un autre outil de traitement.

  • Calendrier de clôture des tâches d'activité (timeoutType: SCHEDULE_TO_CLOSE) : ce délai indique le temps que la tâche peut prendre entre le moment où elle est planifiée et le moment où elle est terminée. Il est recommandé que cette valeur ne soit pas supérieure à la somme du délai d'expiration de la tâche et du schedule-to-start délai d'expiration de la tâche start-to-close .

Note

Chacun des types de délai a une valeur par défaut, généralement définie sur NONE (infini). Toutefois, la durée maximale de toute exécution d'activité est limitée à un an.

Vous définissez ces valeurs par défaut lors de l'enregistrement du type d'activité, mais vous pouvez les remplacer par d'autres valeurs lorsque vous planifiez la tâche d'activité. Lorsque l'un de ces délais se produit, Amazon SWF ajoute un événement de ActivityTaskTimedOuttype à l'historique du flux de travail. La valeur d'attribut timeoutType de cet événement indique quel délai a expiré. Pour chaque délai, la valeur timeoutType est indiquée entre parenthèses. Les attributs de l'événement comprennent également les ID des événements qui correspondent au moment où la tâche d'activité (scheduledEventId) a été planifiée et au moment où elle a été lancée (startedEventId). Outre l'ajout de l'événement, Amazon SWF planifie également une nouvelle tâche de décision pour avertir le décideur que le délai imparti s'est écoulé.