Conceptos de Flujo
Flujos
En IPF, el procesamiento de un pago se realiza y controla mediante un "Flow". Un flujo representa un único proceso de negocio de principio a fin y está diseñado para especificar la duración de un único pago. Un solo flujo puede tener múltiples caminos a través de él, cada uno representando una forma diferente de procesar un pago individual basado en los datos proporcionados para ese flujo.
Un flujo contiene una serie de elementos:
-
"Nombre"
-
"Descripción"
-
"Versión"
-
"Global state set
-
Lista de "Estados"
-
Lista de "Events"
-
Initiation Behaviour"
-
Lista de "Input Behaviours"
-
Lista de "Event Behaviours"
-
Lista de "Aggregate Functions"
-
Lista de "Mapping Definiciones de Función
-
Lista de "Enriquecedores de Entrada"
Se discute una definición de cada uno de estos aspectos en las otras secciones de Conceptos.
| La combinación de "Nombre del Flujo" y "Versión del Flujo" identifica de manera única un flujo. La versión es solo un identificador numérico opcional, por lo que, por ejemplo, un flujo puede llamarse "Prueba" y tener la versión 3. Entonces, el flujo puede ser identificado de manera única como "Prueba V3". Si no se definió una versión, puede ser identificado simplemente por el nombre "Prueba". Este identificador se conoce como "Flow Id". |
Subflows
Lo siguiente a considerar son los segmentos reutilizables del flujo.
Podemos, por ejemplo, necesitar realizar un chequeo de sanciones en varios lugares diferentes dentro del flujo. Podríamos especificar cada sección del flujo por separado y redactar la lógica cada vez, pero idealmente nos gustaría poder reutilizar la lógica común cada vez. Aquí es donde se introduce el concepto de "Subflujo".
Un subflujo es un componente de flujo reutilizable. Es esencialmente lo mismo que un flujo en el sentido de que tiene estados,input behaviours y event behaviours. Sin embargo, un subflujo no tiene vida propia y solo se utiliza como un mecanismo de reutilización y, por lo tanto, DEBE estar contenido dentro de un flujo externo. Al invocar un subflujo, es muy similar en comportamiento a recibir un event:

La clave para entender es que en lugar de trasladarse a un state y luego llamando a una acción como el procesamiento normal anterior, aquí pasamos a un pseudo-state que actúa como un punto de entrada al subflujo. El "control" del flujo se transfiere al subflujo, en este punto procesará a través de la entrada y event behaviours hasta que alcance un terminal state en el subflujo. Cuando alcanza un terminal state, el control se devolverá al flujo que llama con un resultado del nombre del terminal state. Esto puede ser utilizado para el procesamiento posterior.
| Tenga en cuenta que para lograr la reutilización del subflujo en múltiples lugares, cuando un subflujo se coloca dentro de un flujo principal, es state’s se mostrará como "<subflowid> <subflow state nombre>" donde <subflowid> es el psuedo-state nombre del flujo de llamada y <subflujo state name> es el nombre del state dentro del subflujo. |
Flow Calls
Finalmente, también es posible llamar directamente a un flujo desde otro, a veces denominado "flujo a flujo". En este caso, el control se transfiere al flujo secundario, y esperamos un resultado que se devuelva. El flujo hijo puede informar que ha alcanzado cualquier state volver al flujo padre. Más comúnmente, esto será cuando un terminal state se alcanza y el flujo secundario ha terminado de procesar, pero también permite la retroalimentación del flujo secundario para estados intermedios antes de que finalice. Esto proporciona una oportunidad para pasar el control de un lado a otro entre el flujo secundario y el flujo principal según sea necesario.

Completar un Flujo
El final o la finalización de un IPF flow es donde el flujo se transfiere a un *Terminal*state(vea aquí para definir). En este punto:
-
Puede realizar un Acción de Notificación sobre la transición al Terminal state
-
No se puede activar ningún comportamiento de entrada adicional. Events(& por lo tanto no hay más State transición)
-
El flujo terminado será pasivado
-
Las entradas del diario del flujo terminado son elegibles para archivo.
| Cuando un state se define como Terminal, lo que significa que no hay más state las transiciones son intencionadas (no definirá ninguna más)Event Comportamiento más allá de eso state y ninguna entrada en el flujo activa ningún comportamiento adicional). Este es el final del procesamiento de los flujos. Si usted tiene la intención de potencialmente transitar de esto state, el state no debe definirse como terminal. |