Paso 10 - Añadir un subflujo
Introducción al paso 10
En este paso introducirás un subflujo. Usar un subflujo es una manera de agrupar lógicamente un conjunto de eventos y estados (en este caso, sanciones). Los subflujos pueden reutilizarse dentro del mismo flujo y en diferentes flujos del mismo modelo.
Si estás familiarizado con el modelado de casos de uso, un subflujo es exactamente lo mismo que un caso de uso INCLUDED en otro.
|
Para este caso de uso, llamarás al subflujo de sanciones una vez que se haya completado la validación de la cuenta deudora y dicha validación haya pasado.
Introducirás el siguiente flujo de sanciones:
-
Se envía una petición a un nuevo dominio externo de sanciones
-
Si la respuesta es 'no hit', continúa el procesamiento del pago
-
Si la respuesta es 'hit', se esperará una segunda respuesta que será 'pass', 'fail' o 'block'
-
Si la respuesta es 'fail', entonces la transacción se rechaza
-
Si la respuesta es 'block', la transacción se tratará manualmente y el pago se termina
Crear un nuevo subflujo
Puedes crear un nuevo subflujo haciendo clic derecho en tu modelo desde el panel izquierdo y seleccionando New > v2Fo > SubFlow.
Ponle un nombre al subflujo y habrás creado un subflujo inicial, que debería verse así:
Rellenar el subflujo
Verás que un subflujo se organiza exactamente igual que un flujo, donde defines estados y eventos y los añades a los initiation, input y event behaviours.
Ahora que ya llevas un tiempo creando y actualizando flujos, inténtalo tú mismo y construye un flujo de sanciones válido. Necesitarás:
-
Crear un dominio externo que represente el sistema de sanciones
-
Crear una única petición de sanciones con múltiples respuestas para 'Hit', 'No Hit' y la 'Final Response'
-
Crear una nueva Response Code Library para los posibles códigos de la 'Final Response' de sanciones ('Pass', 'Fail' o 'Block')
-
Definir estados y eventos en el subflujo
-
Crear un initiation behaviour en el subflujo
-
Incorporar esas respuestas en el input behaviour del subflujo
-
Completar el subflujo creando el event behaviour
Subflow
Y tu subflujo debería verse así:
| El estado global para todo en el subflujo es 'PENDING' porque queremos que todos los subestados se muestren en el IPF Dashboard bajo ese estado global. Si quisieras, podrías crear una nueva biblioteca de estados globales solo para el subflujo de sanciones y usarlos en su lugar. |
Añadir el subflujo al Event Behaviour
Ahora que has creado un subflujo de sanciones reutilizable, puedes conectarlo a tu flujo.
Añadir un Sub State de subflujo
Primero hay que colocarlo en el lugar correcto: una vez que la validación de cuenta ha pasado, comprobarás sanciones antes de decidir si es un 'On Us Payment' o un 'Scheme Payment'.
Así que, en el primer event behaviour, elimina la decisión del 'Move to State' y pulsa Ctrl+Space. Tendrás la opción de crear un subflow state; elige esa opción y tu event behaviour debería verse así:
Nombrar el subflujo
Al igual que las decisiones, que usaste en un paso anterior, los subflujos pueden usarse múltiples veces, así que necesitas un nombre único cada vez que se llama a un subflujo.
En tu caso, llamarás al subflujo de sanciones una vez antes de enviar a compensación; llamemos al subestado 'Sanctions'.
Añadir la acción "Call subflow"
Una vez que has movido el pago al subflow substate, también debes indicar al flujo que realmente envíe el pago al subflujo.
Sustituye el 'Perform Action' (que actualmente es la decisión) por una llamada a un subflujo: elimina la entrada actual y pulsa Ctrl+Space, luego selecciona el subflujo que acabas de crear.
Si hubieras creado múltiples subflujos, todos ellos estarían disponibles para seleccionar.
Finalizar el Event Behaviour
Ahora que has creado un nuevo subestado 'Sanctions', puedes especificar qué debe ocurrir cuando el pago está en ese estado.
Para los subflujos, un estado terminal es el equivalente a un evento (es decir, un estado terminal en un subflujo se usa para mover el pago de un estado a otro en el flujo llamante).
Si recuerdas, creaste tres estados terminales en el subflujo: 'Sanctions Passed', 'Sanctions Blocked' y 'Sanctions Failed'; debes añadirlos en el event behaviour del flujo llamante.
Añade dos nuevas filas de event behaviour como se muestra a continuación.
| Debes incorporar la decisión que eliminaste del event behaviour 1 en el nuevo event behaviour (en este caso, el 11). |