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.
Modifications du code décideur : Gestion des versions et indicateurs de fonction
Cette section explique comment éviter les modifications irréversibles apportées à un décideur à l'aide des deux méthodes suivantes :
La gestion des versions offre une solution basique.
La gestion des versions avec indicateurs de fonction s'appuie sur la solution de gestion des versions : Aucune nouvelle version du flux de travail n'est présentée, et il n'y a aucun besoin de renvoyer un nouveau code pour mettre à jour la version.
Avant de tester ces solutions, familiarisez-vous avec la section Exemple de scénario qui explique les causes et les effets des modifications irréversibles apportées à un décideur.
Le processus de reproduction et les modifications de code
Lorsqu'unAWS Flow Framework opérateur de décision pour Java exécute une tâche de décision, il doit d'abord reconstruire l'état actuel de l'exécution avant de pouvoir y ajouter des étapes. Pour ce faire, le décideur utilise un processus appelé reproduction.
Le processus de reproduction exécute de nouveau le code décideur depuis le début, tout en parcourant simultanément l'historique des événements passés. Le fait de parcourir l'historique des événements permet à l'infrastructure de réagir aux signaux ou aux fins de tâches et de débloquer des objets Promise
dans le code.
Lorsque le framework exécute le code du décideur, il attribue un identifiant à chaque tâche planifiée (activité, fonction Lambda, minuteur, flux de travail enfant ou signal sortant) en incrémentant un compteur. Le framework communique cet identifiant à Amazon SWF et l'ajoute aux événements de l'historique, tels queActivityTaskCompleted
.
Pour que le processus de reproduction fonctionne, il est essentiel que le code décideur soit déterministe, et qu'il planifie les mêmes tâches dans le même ordre pour chaque décision dans chaque exécution de flux de travail. Si vous ne respectez pas cette exigence, l'infrastructure pourrait, par exemple, entraîner l'échec de correspondance de l'ID dans un événement ActivityTaskCompleted
à un objet Promise
existant.