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
CreateTransactionCommandy 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
CreateTransactionCommandHandlerprocesa el comando y genera unTransactionCreatedEvent.
- El
-
Actualizar Estado:
- El
TransactionProjectoractualiza el estado del balance de la cuenta basado en el evento generado.
- El
-
Almacenar Evento:
- El
TransactionLocalEventStorealmacena el evento generado.
- El