DSL 11 - Usando additional events
|
Iniciando
El paso del tutorial utiliza el Si en algún momento desea ver la solución a este paso, esta se puede encontrar en el |
¿Qué es un Adicional?Event?
An Additional Event es simplemente una capacidad para generar un event desde dentro del procesamiento de IPF. Esto se utiliza generalmente como un método para agregar información descriptiva en el event historia, 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 additional events.
En nuestro escenario, cuando usted observa el event historial de un flujo de ejecución que 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 adicional event para mostrar claramente desde el event historia que hemos completado.
Configuración de DSL
Añadiendo el adicional event
Primero, recordemos la lógica de DSL que actualmente tenemos para nuestro Clear and Settle Passed event, vemos esto en el Event Behaviour:
Aquí en lugar de completar inmediatamente, queremos plantear nuestra adicional event. Sin embargo, una vez que lleguemos a un terminal state el flujo ha terminado y no se permiten otras acciones. Por esa razón, necesitaremos un nuevo State y un nuevo state transición.
Añadamos un Completing state como esto:
También deberá definir nuestra adicional Event Definición, llame a esto Flow Complete y se añade a la event definición de nuestro flujo al igual que cualquier otra cosa:
Nota aquí que no hemos suministrado ningún business data en el event, pero podríamos hacer eso. Esos datos se poblarían a partir de datos contenidos en otros events en nuestro flujo.
Para realmente aumentar nuestro adicional event necesitamos cambiar nuestro Event Comportamiento (para Liquidación y Compensación) para trasladarse a la nueva Completing state(en lugar de Complete) y luego recaudando un adicional event. Así que aquí en el cuadro de realizar acción necesitamos elegir aumentar un adicional event:
Entonces podemos simplemente seleccionar el event queremos aumentar, así que en nuestro caso nuestro nuevo Flow Complete event.
Cuando esté completo el Event Behaviour debería verse así:
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 event. Así que añadamos un nuevo event comportamiento para hacer esto:
Eso es todo, nuestro trabajo de DSL está completo. También revisemos el gráfico:
Java Implementación
La buena noticia aquí es que no se requiere implementación al agregar additional events, todo se gestiona por la generación.
Verificando nuestra solución
Como es habitual, ahora verifiquemos cómo funciona la solución. Inicie la aplicación como se indicó anteriormente (instructions 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 unit of work id, haga clic en ver, haga clic domain events) y debemos ver:
Aquí podemos ver que hay el nuevo Flow Complete event presente para el ipftutorialflowv2 proceso y por lo tanto hemos demostrado que nuestro adicional event se está activando correctamente.
Si usted observa el gráfico para el ipftutorialv2 flujo que puede ver el extra event y transición: