Paso 11 - Añadir una función de dominio
Introducción al paso 11
En este paso añadirás una "Domain Function" al flujo e introducirás el concepto de "Action Timeout". Una función de dominio es donde invocas un servicio construido dentro de tu aplicación (en lugar de llamar a un sistema/dominio externo usando una petición/respuesta).
La función de dominio, igual que un dominio externo, devuelve una respuesta que se define en una biblioteca de funciones de dominio.
Añadirás un servicio de enriquecimiento del agente deudor (debtor agent enrichment) donde:
-
La información detallada de los agentes deudores se almacena dentro de la aplicación
-
La aplicación enviará información del agente deudor desde la petición de pago al servicio de enriquecimiento del agente deudor
-
La información del agente deudor se valida frente al registro almacenado del agente deudor
-
Los datos de dirección se recuperan del servicio de enriquecimiento del agente deudor y se añaden al agregado
-
Los datos de dirección adicionales se usan más tarde en la Notificación que se envía cuando un pago se completa
Si asumimos que la función a menudo es lenta, o a veces no proporciona respuesta, entonces podemos añadir un timeout a nuestro flujo de modo que el pago pase a un estado terminal donde un operador pueda revisarlo.
Crear una Domain Function
Puedes crear una biblioteca de funciones de dominio haciendo clic derecho en el modelo desde el panel izquierdo y seleccionando New > v2Flo > Domain Function Library.
Proporciona los detalles que ya conoces de la función, incluida la respuesta; esto debería dar una biblioteca similar a esta:
Añadir nuevos datos de negocio
Dijimos que, en tu caso de uso, el servicio de enriquecimiento proporcionaría la dirección del agente deudor.
Necesitas añadir eso a la biblioteca de datos de negocio antes de poder añadirlo a la función de dominio que creaste.
Ahora que has añadido la dirección del agente deudor, puedes volver a la función de dominio y añadirla a la respuesta.
Actualizar el flujo
Ahora puedes actualizar el flujo con la función de dominio y los nuevos datos de negocio que has creado.
State Definition
Necesitarás un nuevo estado mientras esperas una respuesta del servicio de enriquecimiento del agente deudor.
Event Definition
Ahora añade dos eventos nuevos para las dos nuevas respuestas que vas a recibir.
No olvides añadir los nuevos datos que recibes del servicio de enriquecimiento del agente deudor para que se añadan al agregado y puedan usarse más tarde en la notificación.
Event Behaviour
Y, por último, añade el nuevo estado 'Enriching' con los dos eventos nuevos al flujo.
Necesitarás modificar el primer event behaviour para que, cuando la validación de cuenta deudora pase, el pago se mueva a un estado de enriquecimiento y se añada la nueva acción 'Call Function'.
Quizá también quieras reordenar las filas para que sea más lógico (consulta atajos de teclado).
Mapping Function Definition
Quieres asegurarte de que la dirección enriquecida del agente deudor se incluye en la notificación (es decir, el 'Payment Status Report').
Para lograrlo, necesitarás actualizar la definición de la función de mapeo para mapear el PSR de modo que la dirección del agente deudor se incluya en las entradas; por el momento solo estás mapeando desde el Pacs008.
Cuando lo hayas hecho, debería verse así:
Este es un escenario de mapeo bastante sencillo. Asume que la función de dominio proporcionará la dirección del agente deudor en formato ISO. Si necesitaras convertir esa dirección desde otro formato a ISO y hacer que esos datos estén disponibles en el journal de eventos, podrías usar el input enricher. Si no eres desarrollador quizá no entres en este nivel de detalle con datos de negocio: el Flow Designer es una herramienta colaborativa para ser usada conjuntamente por desarrolladores y no desarrolladores.
Action Timeout
Ahora que has actualizado el flujo, puedes añadir el paso final: el action timeout.
Un action timeout es un evento especializado que, en lugar de generarse como resultado de una entrada (normalmente una respuesta), se crea como resultado de que expire un timeout configurado después de haberse realizado una acción.
En nuestro caso, la 'acción' es la petición a la función de dominio 'Debtor Agent Enrichment' y la acción compensatoria que queremos realizar es mover el estado a un estado terminal para revisión manual.
Si tienes el módulo Human Task Manager (HTM), podrías pausar el flujo mientras se revisa el pago y después continuar; en este caso de uso HTM no se usa y habría que enviar una nueva transacción al flujo.
Añadir el Action Timeout al Event Behaviour
Para añadir un action timeout:
-
Abre el flujo
-
Busca el event behaviour
-
Haz clic en 'Add Event Behaviour'
-
Selecciona 'Enriching' en la celda 'With Current States' de la nueva fila
-
En la celda For Event selecciona 'Action Timeout' y, a continuación, selecciona 'Debtor Agent Enrichment' en la parte de 'any action' de la celda
Crear el nuevo estado terminal Manual Payment
Puedes usar la función 'Intentions' para moverte rápidamente desde el Event Behaviour a crear el nuevo estado manual que quieres:
-
Coloca el cursor en la celda Move To State
-
Pulsa ALT+Enter y selecciona 'Add Move To State'
-
Serás llevado directamente a la sección de definición de estados del flujo donde podrás añadir el nuevo estado.
| Hemos elegido usar el estado global CANCELLED para que sea más evidente en el IPF dashboard que el banco ha tomado la decisión consciente de cancelar un pago. |