Tipos de tiempo de espera de Amazon SWF - Amazon Simple Workflow Service

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.

Tipos de tiempo de espera de Amazon SWF

Para garantizar que las ejecuciones de flujo de trabajo se ejecuten correctamente, Amazon SWF le permite establecer distintos tipos de tiempos de espera. Algunos tiempos de espera especifican cuánto puede tardar el flujo de trabajo en ejecutarse en su totalidad. Otros tiempos de espera especifican cuánto pueden tardar las tareas de actividad en asignarse a un proceso de trabajo y cuánto pueden tardar en completarse desde el momento de su programación. Todos los tiempos de espera de la API de Amazon SWF se especifican en segundos. Amazon SWF también admite la cadena NONE como valor de tiempo de espera, lo que indica que no se establecerá ningún tiempo de espera.

Para los tiempos de espera relacionados con las tareas de decisión y actividad, Amazon SWF añade un evento al historial de ejecución del flujo de trabajo. Los atributos del evento proporcionan información acerca del tipo de tiempo de espera que tuvo lugar y la tarea de decisión o actividad que se vio afectada. Amazon SWF también programa una tarea de decisión. Cuando el decisor reciba la nueva tarea de decisión, verá el evento de tiempo de espera en el historial y tomará las medidas adecuadas llamando a la acción RespondDecisionTaskCompleted.

Una tarea se considera abierta desde el momento en que se programa hasta que se cierra. Por tanto, una tarea se registra como abierta mientras un proceso de trabajo la procesa. Una tarea se cierra cuando un proceso de trabajo la registra como Completed, Canceled o Failed. Amazon SWF también puede cerrar una tarea como resultado de un tiempo de espera.

Tiempos de espera de las tareas de decisión y flujo de trabajo

En el siguiente diagrama se muestra cómo los tiempos de espera de decisión y flujo de trabajo están relacionados con la vida útil de un flujo de trabajo:


               La vida útil de un flujo de trabajo, con los tiempos de espera

Hay dos tipos de tiempo de espera que son pertinentes para las tareas de decisión y flujo de trabajo:

  • Tiempo de espera de inicio a cierre del flujo de trabajo (timeoutType: START_TO_CLOSE): este tiempo de espera especifica el tiempo máximo que puede tardar en completarse la ejecución de un flujo de trabajo. Se establece como valor predeterminado durante el registro del flujo de trabajo, pero se puede anular con un valor diferente al iniciarse el flujo de trabajo. Si se supera este tiempo de espera, Amazon SWF cerrará la ejecución del flujo de trabajo y añadirá un evento de tipo WorkflowExecutionTimedOut al historial de ejecución del flujo de trabajo. Además de timeoutType, los atributos del evento especifican la childPolicy que se encuentra en vigor para esta ejecución de flujo de trabajo. La política secundaria especifica cómo se controlan las ejecuciones de los flujos de trabajo secundarios si se agota el tiempo de espera de la ejecución de flujo de trabajo principal o termina por otro motivo. Por ejemplo, si childPolicy se establece en TERMINATE, las ejecuciones de flujos de trabajo secundarios se terminarán. Una vez que se haya agotado el tiempo de espera de una ejecución de flujo de trabajo, la única medida que podrá tomar al respecto son las llamadas de visibilidad.

  • Tiempo de espera de inicio a cierre de la tarea de decisión (timeoutType: START_TO_CLOSE): este tiempo de espera especifica el tiempo máximo que el decisor correspondiente puede tardar en completar una tarea de decisión. Se establece durante el registro del tipo de flujo de trabajo. Si se supera este tiempo de espera, la tarea se marcará como “Timed Out” en el historial de ejecución del flujo de trabajo y Amazon SWF añadirá un evento de tipo DecisionTaskTimedOut al historial del flujo de trabajo. Los atributos del evento incluirán los ID de los eventos correspondientes al momento en el que se programó esta tarea de decisión (scheduledEventId) y al momento en el que esta se inició (startedEventId). Además de añadir el evento, Amazon SWF también programa una tarea de decisión nueva para alertar al decisor de que se ha agotado el tiempo de espera de dicha tarea de decisión. Tras agotarse este tiempo de espera, un intento de completar la tarea de decisión con tiempo de espera agotado mediante RespondDecisionTaskCompleted producirá un error.

Tiempos de espera de las tareas de actividad

En el siguiente diagrama se muestra cómo los tiempos de espera están relacionados con la vida útil de una tarea de actividad:


               La vida útil de una tarea, con los tiempos de espera

Hay cuatro tipos de tiempo de espera que son pertinentes para las tareas de actividad:

  • Tiempo de espera de inicio a cierre de la tarea de actividad (timeoutType: START_TO_CLOSE): este tiempo de espera especifica el tiempo máximo que el proceso de trabajo de una actividad puede tardar en procesar una tarea después de haberla recibido. Los intentos de cerrar una tarea de actividad con tiempo de espera agotado mediante RespondActivityTaskCanceled, RespondActivityTaskCompleted y RespondActivityTaskFailed producirán un error.

  • Latido de la tarea de actividad (timeoutType: HEARTBEAT): este tiempo de espera especifica el tiempo máximo que se puede ejecutar una tarea antes de indicar su progreso en la acción RecordActivityTaskHeartbeat.

  • Programación de tareas de actividad hasta su inicio (timeoutType: SCHEDULE_TO_START): este tiempo de espera especifica cuánto tiempo espera Amazon SWF antes de agotar el tiempo de espera de la tarea de actividad si no hay procesos de trabajo disponibles para realizarla. Una vez que se agota el tiempo de espera, la tarea caducada no se asignará a otro proceso de trabajo.

  • Programación de tareas de actividad hasta su cierre (timeoutType: SCHEDULE_TO_CLOSE): este tiempo de espera especifica cuánto tiempo puede tardar la tarea desde el momento en que se programe hasta el momento en que se complete. Como práctica recomendada, este valor no debe ser mayor que la suma del tiempo de espera de la programación de la tarea para comenzar y el tiempo de espera del comienzo de la tarea para finalizar.

nota

Cada uno de los tipos de tiempo de espera tiene un valor predeterminado, que generalmente se establece en NONE (infinito). El tiempo máximo de cualquier ejecución de actividad se limita a un año, sin embargo.

Puede establecer valores predeterminados para estos durante el registro del tipo de actividad, pero puede anularlos con nuevos valores al programar la tarea de actividad. Cuando se agote uno de estos tiempos de espera, Amazon SWF añadirá un evento de tipo ActivityTaskTimedOut al historial del flujo de trabajo. El atributo de valor timeoutType de este evento especificará cuál de estos tiempos de espera ha tenido lugar. Para cada uno de los tiempos de espera, el valor de timeoutType se muestra entre paréntesis. Los atributos del evento también incluirán los ID de los eventos correspondientes al momento en el que se programó la tarea de actividad (scheduledEventId) y al momento en el que esta se inició (startedEventId). Además de añadir el evento, Amazon SWF también programa una tarea de decisión nueva para alertar al decisor de que se ha agotado el tiempo de espera.