Documentation for a newer release is available. View Latest

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:

step 11 1

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.

step 11 2

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.

step 11 3

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.

step 11 4

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.

step 11 5

Input Behaviour

Añade las dos respuestas que recibes de la función de dominio:

step 11 6

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).

step 11 7

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í:

step 11 8

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

step 11 9

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.

step 11 10
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.

Completar el Event Behaviour

Vuelve al event behaviour y añade el nuevo estado que acabas de crear para completar el flujo.

step 11 11

Comprobar el gráfico

Cuando abras el gráfico, notarás que ahora tienes una opción para mostrar el action timeout en el gráfico. Si eliges verlo, el gráfico debería verse así:

step 11 12