Esta aplicación implementa un sistema de manejo de transacciones utilizando un patrón basado en eventos. Está diseñada para manejar comandos de creación de transacciones, generar eventos de transacción y actualizar el estado del balance de las cuentas involucradas.
- CreateTransactionCommand: Define los datos necesarios para crear una transacción.
- TransactionCreatedEvent: Define los datos que se generarán cuando se cree una transacción.
- AccountBalanceState: Representa el estado del balance de una cuenta.
- CreateTransactionCommandHandler: Procesa el comando
CreateTransactionCommand
y genera un eventoTransactionCreatedEvent
. - TransactionProjector: Actualiza el estado del balance de la cuenta basado en el evento
TransactionCreatedEvent
.
- TransactionLocalEventStore: Almacena los eventos generados.
- TransactionService: Coordina el manejo de comandos, proyección de eventos y almacenamiento de eventos.
-
Crear y Ejecutar Comando:
- Se crea una instancia de
TransactionService
. - Se crea un comando
CreateTransactionCommand
. - Se ejecuta el comando usando
serviceAccounting.execute(commandAccounting)
.
- Se crea una instancia de
-
Generar Evento:
- El
CreateTransactionCommandHandler
procesa el comando y genera unTransactionCreatedEvent
.
- El
-
Actualizar Estado:
- El
TransactionProjector
actualiza el estado del balance de la cuenta basado en el evento generado.
- El
-
Almacenar Evento:
- El
TransactionLocalEventStore
almacena el evento generado.
- El