Documentation for a newer release is available. View Latest

Paso 5 - Añadir petición/respuesta a un dominio externo

Introducción al paso 5

Las peticiones y sus respuestas correspondientes están en el corazón de un proceso: suelen ser lo que genera eventos, que a su vez impulsan cambios de estado en la máquina de estados finitos.

En este paso añadirás un nuevo dominio para el sistema contable del agente deudor y, después, una petición/respuesta para determinar si la cuenta del deudor está activa o cerrada.

Será necesario actualizar el flujo con un nuevo estado y datos de negocio; añadirás por primera vez eventos, input behaviour y event behaviour.

El sistema contable del agente deudor proporcionará una respuesta de aceptación o rechazo:

  • Si 'Accept', el flujo continuará

  • Si 'Reject', la transacción será rechazada y el flujo terminará

Una respuesta de aceptación indicará que los fondos han sido reservados y contendrá una referencia que será necesaria en pasos posteriores del flujo.

Crear un nuevo dominio externo

Primero añadamos un nuevo dominio externo para representar el sistema contable del agente deudor al que llamarás para determinar el estado de la cuenta.

Esto significará que, una vez completado este paso, habrá dos dominios externos: uno para representar el sistema de monitorización de pagos y otro para la plataforma contable del agente deudor. Se añadirán otros en pasos sucesivos.

Ya creaste un dominio externo en un paso anterior, así que solo necesitas hacer clic derecho en tu modelo y seleccionar New > v2Flo > External Domain.

Configura el dominio así:

step 5 1

Añadir una petición al dominio externo

Con la pestaña Debtors Accounting System abierta, haz clic en Add Request.

Añade los detalles de la petición que se hará para verificar que la cuenta es válida y está activa:

  • Añade el nombre de la petición (p. ej., Debtor Account Validation Request)

  • Añade una descripción para la petición

Añadir una respuesta

Ahora debes configurar la respuesta de la petición. Complétalo como sigue:

step 5 2

Observa que aquí has preseleccionado los códigos de respuesta "AcceptOrReject"; podrías definir cualquier otro conjunto de códigos de respuesta que se ajuste a tus requisitos añadiendo una biblioteca de códigos de respuesta. Lo harás en un paso posterior.

También observa que 'Completing' está seleccionado automáticamente. Hay circunstancias en las que puedes recibir más de una respuesta a una única petición, y solo puedes completar la petición original cuando se recibe una respuesta final (Completing). La marca completing te permite especificar si esta respuesta en particular es no final o final. Si hay timeouts configurados, el timeout solo se cancelará cuando llegue una respuesta completing.

Ejemplo: un sistema de sanciones puede proporcionar una 'holding response' mientras se realiza una investigación. La 'holding' sería la primera respuesta y Completing se establecería a false. La segunda respuesta sería el resultado de la investigación, y en ese caso Completing se establecería a true. Explorarás esto en un paso posterior del tutorial.

La petición debería verse así ahora:

step 5 3

Añadir nuevos estados

Ahora que has creado un nuevo dominio externo, necesitas conectarlo con el flujo que creaste en el Paso 3. Primero, abre el flujo.

Creemos dos estados nuevos para el flujo: uno para mientras esperas la respuesta del sistema contable del agente deudor y otro para representar un pago rechazado.

step 5 4

Verás aquí un subrayado rojo (1); si pasas el ratón por la marca roja en la barra lateral derecha (2), o sobre los nombres, podrás ver por qué:

step 5 5

Esto nos advierte de que el estado no se usa en ninguna parte, así que lo corregirás añadiendo los estados al event behaviour. Antes de eso, tendrás que definir los eventos.

Añadir eventos

A continuación necesitas definir eventos. Un evento representa algo que ha sucedido e impulsa la transición entre estados. Añadámoslos pulsando el botón "Add Event" y añade dos eventos: uno para cuando la verificación de cuenta pasa y otro para cuando falla:

step 5 6

Verás avisos en las definiciones de eventos indicando que aún no se han usado en el flujo. Lo corregirás enseguida.

Input Behaviour

El input behaviour indica al flujo qué hacer cuando recibe algo; normalmente será una instrucción o la respuesta a una petición enviada desde el flujo.

Tienes una nueva entrada (la respuesta a la petición de verificación de cuenta deudora), así que debes añadir qué evento debe crearse cuando recibes esa respuesta.

Recuerda: seleccionaste AcceptOrReject como código de respuesta, así que solo esperas dos posibles respuestas.

No lo olvides: usa Ctrl+Space para seleccionar la entrada, el código de respuesta y el evento.

step 5 7

Initiation Behaviour

Ahora que has añadido un estado no terminal (Verifying Debtor Account) debes actualizar el initiation behaviour. En pasos anteriores te movías directamente a un estado terminal 'complete'… ahora que añades este nuevo estado debes actualizar el initiation behaviour en consecuencia añadiendo el estado y eliminando la notificación.

Tu initiation behaviour actualizado debería verse así:

step 5 8

Event Behaviour

Por último, puedes terminar el flujo añadiendo el event behaviour.

Un event behaviour indica al flujo qué hacer cuando está en un estado dado y se recibe un evento. Aquí pueden ocurrir varias cosas; algunas típicas son:

  1. Realizar una "transición de estado", es decir, moverse a un nuevo estado

  2. Invocar alguna acción (p. ej., llamada a un dominio externo o una función interna)

  3. Lanzar un evento adicional

Desde el initiation behaviour definiste que el primer estado será 'Verifying Debtor Account', así que debes añadirlo como primer estado en 'With Current States'.

Después debes añadir los comportamientos para cuando ocurren los dos nuevos eventos que acabas de añadir en input behaviour:

  • Cuando el estado actual es Verifying Debtor Account y el evento es Debtor Account Verification Passed, entonces mover a Complete

  • Cuando el estado actual es Verifying Debtor Account y el evento es Debtor Account Verification Failed, entonces mover a Rejected

Nota: ¡No olvides añadir las notificaciones! Una para cuando el pago es aceptado y otra para cuando el pago es rechazado.

step 5 9
No olvides volver a añadir el mapeo para la acción de envío de notificación.

Validar el modelo

En cualquier momento puedes validar el flujo completo y obtener una lista de los errores (si los hubiera) del flujo.

Hay dos formas de hacerlo:

Usar Intentions:

Coloca el cursor en cualquier lugar del Flow, pulsa ALT+Enter y verás el cuadro emergente de Intentions.

step 5 10

Selecciona 'Validate Flow'.

O

Check Model:

Haz clic derecho sobre el modelo en el panel izquierdo y selecciona 'Check Model'

step 5 11

El resultado es una lista de todas las incidencias del modelo en una ventana emergente Model Checker. En tu modelo hay dos incidencias con el Input Behaviour.

step 5 12

Corregir las incidencias

Puedes ver en el Model Checker que hay algo mal.

El mensaje de error nos dice que la Debtor Account Validation Request no está presente en el flujo, por lo que el event behaviour está causando un error.

Si miras el initiation behaviour verás que, aunque añadiste un estado inicial, no añadiste la acción para enviar una petición al sistema contable del agente deudor.

Arreglemos ahora el initiation behaviour añadiendo esa acción.

Tu initiation behaviour debería verse así ahora:

step 5 13

Y si vuelves a comprobar el modelo, verás que no hay errores.

Comprobar el diagrama del flujo

Comprobemos cómo se ve nuestro flujo en Flo Viewer.

Esta vez usemos Intentions para ver el gráfico:

  • Coloca el cursor en cualquier punto del Flow

  • Pulsa ALT+Enter

  • Selecciona 'View Graph'

Tu flujo debería verse así con las view actions desactivadas:

step 5 14