DSL 11 - Uso de eventos adicionales

  1. Inicio El paso del tutorial utiliza el add_flow solución del proyecto como su punto de partida.

Si en algún momento desea ver la solución a este paso, puede encontrarla en el raise_additional_event¡solución!

¿Qué es un Adicional?Event?

An Additional Event es simplemente una capacidad para generar un evento desde dentro del procesamiento de IPF. Esto se utiliza generalmente como un método para agregar información descriptiva en el historial de eventos, pero también puede ser utilizado para realizar lógica de procesamiento condicional. De hecho, toda la configuración que hemos establecido hasta ahora podría haberse realizado utilizando eventos adicionales.

En nuestro escenario, cuando usted observa el historial de eventos para un flujo de ejecución, puede ver:

[
  "Flow Initiated",
  "Duplicate Check Passed",
  "Account Validation Passed",
  "In Sanctions Sanctions Passed",
  "Run Fraud Check SKIP_FRAUD",
  "Clear and Settle Passed"
]

Aquí no es inmediatamente obvio que nuestro flujo ha finalizado, parece que solo hemos alcanzado una etapa clara y establecida.

Para resolver esto, haremos que la aplicación genere un evento adicional para mostrar claramente en el historial de eventos que hemos completado.

Configuración de DSL

Añadiendo el evento adicional

Primero, recordemos la lógica de DSL que actualmente tenemos para nuestro Clear and Settle Passed evento, lo vemos en el Event Behaviour:

additional 1

Aquí, en lugar de completar inmediatamente, queremos plantear nuestro evento adicional. Sin embargo, una vez que alcanzamos un estado terminal, el flujo ha finalizado y no se permiten otras acciones. Por esa razón, necesitaremos un nuevo State y una nueva transición de estado.

Añadamos un Completing indique así:

additional 2

También deberá definir nuestra adicional Event Definición, llame a esto Flow Complete y se añade a la definición del evento de nuestro flujo al igual que cualquier otra cosa:

additional 3

Tenga en cuenta que aquí no hemos proporcionado ningún dato comercial sobre el evento, pero podríamos hacerlo. Esos datos se poblarían a partir de la información contenida en otros eventos en nuestro flujo.

Para realmente aumentar nuestro evento adicional, necesitamos cambiar nuestro Event Comportamiento (para Aprobado y Liquidado) para trasladarse al nuevo Completing estado (en lugar de Complete) y luego generar un evento adicional. Por lo tanto, aquí en el cuadro de realizar acción necesitamos elegir generar un evento adicional:

additional 4

Luego podemos simplemente seleccionar el evento que deseamos generar, así que en nuestro caso nuestro nuevo Flow Complete evento.

Cuando esté completo el Event Behaviour debería verse así:

additional 5

Finalmente, necesitamos hacer la transición a la Complete paso nuevamente. Este es simplemente un caso de transición de Completing to Complete al recibir nuestro nuevo Flow Complete evento. Así que añadamos un nuevo comportamiento de evento para hacer esto:

additional 6

Eso es todo, nuestro trabajo de DSL está completo. También revisemos el gráfico:

additional 7

Java Implementación

La buena noticia aquí es que no se requiere ninguna implementación al agregar eventos adicionales, todo se maneja mediante la generación.

Verificando nuestra solución

Como es habitual, ahora verifiquemos que la solución funcione. Inicie la aplicación como se indicó anteriormente (las instrucciones están disponibles en Revisando la solicitud inicial si necesita un repaso!)

Entonces podemos realizar un pago.

curl -X POST localhost:8080/submit | jq

Ahora, si ahora mencionamos el pago en el Developer GUI y mencione el domain events ver (buscar por id de unidad de trabajo, haga clic en ver, haga clic domain events) y debemos ver:

additional 8

Aquí podemos ver que hay el nuevo Flow Complete evento presente para el ipftutorialflowv2 proceso y por lo tanto hemos demostrado que nuestro evento adicional se está activando correctamente.

Si usted observa el gráfico para el ipftutorialv2 flujo puede ver el evento y la transición adicionales:

additional 9

Conclusiones

En esta sección hemos aprendido a utilizar eventos adicionales.