Realización de cambios en el código del decisor: control de versiones y marcas de características - AWS Flow Framework para Java

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Realización de cambios en el código del decisor: control de versiones y marcas de características

Esta sección muestra cómo evitar cambios que no son compatibles con las versiones anteriores a un decisor mediante dos métodos:

Antes de probar estas soluciones, familiarícese con la sección Escenario de ejemplo que explica las causas y los efectos de los cambios al decisor que no son compatibles con las versiones anteriores.

El proceso de reproducción y cambios de códigos

Cuando un proceso de trabajo de decisor de AWS Flow Framework para Java ejecuta una tarea de decisión, en primer lugar debe reconstruir el estado actual de la ejecución antes de añadirle pasos. El decisor lo hace utilizando un proceso denominado reproducción.

El proceso de reproducción vuelve a ejecutar el código del decisor desde el principio, al tiempo que recorre simultáneamente el historial de eventos que ya se han producido. Recorrer el historial de eventos permite al marco de trabajo reaccionar a señales o tareas finalizada y desbloquear los objetos Promise en el código.

Cuando el marco de trabajo ejecuta el código del decisor, asigna un ID a cada tarea programada (una actividad, una función de Lambda, un temporizador, un flujo de trabajo secundario o una señal saliente); para ello, aumenta un contador. El marco de trabajo comunica este ID a Amazon SWF y añade el ID a los eventos del historial, como por ejemplo, ActivityTaskCompleted.

Para que el proceso de reproducción se realice con éxito, es importante que el código del decisor sea determinista y programar las mismas tareas en el mismo orden para todas las decisiones en cada ejecución de flujo de trabajo. Si no cumple este requisito, el marco de trabajo podría, por ejemplo, no hacer coincidir el ID en un evento ActivityTaskCompleted con un objeto Promise existente.