¿Cómo configuro estados para recuperación o pasivación?
Dentro de las Definiciones de Estado de un flujo en flo-lang, además de poder configurar si un estado es terminal o no, también puedes definir:
-
Si un flujo debe ser passivated cuando la acción asociada con ese estado haya sido procesada.
-
Si el estado no es recuperable
Estas opciones son configurables por definición de Estado, dentro de la tabla "State Definitions" del flujo.
Para acceder a estas opciones haz clic en el nombre del Estado
Y luego ya sea:
-
Clic derecho en el nombre del Estado, luego selecciona "Inspect Node" de la lista
-
Presiona Ctrl+Alt+I y esto mostrará las opciones para el Estado.
Estado de pasivación
Configurar el Estado como "Is Passivating" ocasionará que el Flujo se pasive cuando se mueva a este Estado y se ejecute la Action desde la tabla de Event Behaviour. Pasivar esencialmente elimina la entidad del flujo de la memoria, para rehidratarse y activarse en un momento posterior.
| Puedes leer más sobre consideraciones para la pasivación aquí - Understanding Passivation, Remembering Entities, and Schedulers |
Puede interesarte hacer esto si sabes que el flujo estará inactivo por un período de tiempo. Ejemplos podrían incluir:
-
Enviar un pago para almacenamiento en espera (warehousing) - el pago será recuperado y el procesamiento continuará en una fecha posterior. En este caso pasivamos la instancia del flujo.
-
Enviar un pago para chequeo de Sanciones - hay una buena posibilidad de que Sanciones no devuelva instantáneamente, por lo que no necesitamos el flujo activo.
Independientemente del escenario, cualquier input de vuelta al flujo causará que el flujo se rehidrate y se active para continuar procesando desde este estado.
Estado recuperable
Configurar el Estado como "Not Recoverable" asegurará que cualquier acción asociada con el Estado a través de la tabla de Event Behaviour solo se ejecute una vez. El comportamiento por defecto de IPF es reintentar la Action asociada con el Estado cuando un flujo es recuperado (durante el reinicio de la aplicación). Configurar esta opción sobrescribe ese comportamiento por defecto.
Esto implica hacer la pregunta '¿pueden las acciones asociadas con este estado volver a reproducirse?'. Donde no puedan reproducirse, el Estado debe establecerse como "Not Recoverable".
Esto es particularmente útil cuando un dominio externo no puede tolerar solicitudes repetidas.