Creado

Juan Robles

Editado

Francisco Adrianza

18 mar 2025

Step Function plan-expiration

Descripción

Esta máquina de estado gestiona el proceso de expiracion de un plan, incluyendo la espera hasta la fecha de expiracion, la ejecución de la expiracion y la gestion para un posible cambio de fecha de expiracion. Permite controlar el momento en que un plan pasa a estar expirado en el sistema.

Parámetros Recibidos

  • plan_id: Identificador único del plan a expirar.

  • timestamp: Fecha/hora en la que debe expirar el plan. Puede ser 'END' para finalizar el proceso inmediatamente.

  • taskToken: Token para integración y control externo de la ejecución.

Flujo Principal

  1. Ejecución en paralelo

    • Rama 1: Guarda el task token para integración externa y permitir la edicion de la fecha de expiracion.

    • Rama 2: Verifica si debe finalizar el proceso o esperar hasta la fecha de expiración.

  2. Verificación y espera

    • Check End Signal: Determina si el proceso debe finalizar inmediatamente (timestamp = 'END') o continuar. Esto es necesario para manejar el caso en que el plan activo sea eliminado antes de poder llegar a su fecha de expiracion

    • Wait Until Expiration: Espera hasta la fecha/hora de expiración indicada por el parámetro timestamp.

    • Change Status: Ejecuta el cambio de estado del plan llamando a la Lambda correspondiente.

  3. Finalización

    • End Gracefully: Finaliza el proceso exitosamente si corresponde. (Se alcanza este estado cuando se elimina el plan antes de su activacion)

    • Break Change Status: Finaliza el proceso tras expirar el plan.

Diagrama

stepfunctions_graph (2).png

Documentacion previa:

Diagrama

mermaid-diagram-2025-03-20-125302.png

Código de Mermaid

stateDiagram-v2
    [*] --> Parallel
    state Parallel {
        [*] --> SaveTaskToken
        SaveTaskToken --> [*]

        [*] --> Wait
        Wait --> ChangeStatus
        ChangeStatus --> [*]
    }

    Parallel --> Choice
    Choice --> ChangeTimestamp : "Error != 'END'"
    Choice --> Success : Default
    ChangeTimestamp --> Parallel

    Success --> [*]