Architecture
El microservicio de Gestión de Ubicaciones está implementado siguiendo los principios de la arquitectura hexagonal (también conocida como arquitectura de puertos y adaptadores). Esta arquitectura permite una clara separación de responsabilidades y facilita la prueba y mantenimiento del código.
Arquitectura
Section titled “Arquitectura”Capa de Dominio
Section titled “Capa de Dominio”Responsabilidad Principal: Contener las reglas de negocio, entidades y lógica central del sistema.
Componentes Clave:
-
Entidades:
Container: Representa un contenedor en el sistema WMSLocation: Representa una ubicación en un almacénWarehouse: Representa un almacén
-
Value Objects:
ContainerId,ContainerName: Identificadores y nombres de contenedoresLocationId,LocationName: Identificadores y nombres de ubicacionesWarehouseId,WarehouseCode: Identificadores y códigos de almacenesCountry: Representa un país (MX, BR, etc.)
-
Repositorios (Interfaces):
ContainerRepository: Interfaz para persistencia de contenedoresLocationRepository: Interfaz para persistencia de ubicacionesWarehouseRepository: Interfaz para persistencia de almacenes
-
Servicios de Dominio (Interfaces):
BodegaoService: Interfaz para interactuar con el servicio BodegaoInventoryService: Interfaz para interactuar con el servicio de inventarioAssignmentService: Interfaz para interactuar con el servicio de asignación
-
Patrones:
Observer: Patrón para notificación de eventosSubject: Patrón para publicación de eventos
Capa de Aplicación
Section titled “Capa de Aplicación”Responsabilidad Principal: Orquestar los casos de uso de la aplicación, coordinando entidades y servicios del dominio.
Componentes Clave:
-
Casos de Uso de Contenedores:
CreateContainer: Creación de contenedoresDeleteContainer: Eliminación de contenedoresUpdateContainer: Actualización de contenedores- Buscadores: Funcionalidades para encontrar contenedores
-
Casos de Uso de Ubicaciones:
CreateLocation: Creación de ubicacionesDeleteLocation: Eliminación de ubicaciones- Buscadores: Funcionalidades para encontrar ubicaciones
-
Casos de Uso de Almacenes:
CreateWarehouse: Creación de almacenesDeleteWarehouse: Eliminación de almacenes- Buscadores: Funcionalidades para encontrar almacenes
-
Observadores:
- Implementaciones para soporte legacy de contenedores y ubicaciones
-
Sujetos:
GenericSubject: Implementación genérica del patrón Subject
Capa de Infraestructura
Section titled “Capa de Infraestructura”Responsabilidad Principal: Proporcionar implementaciones concretas para interactuar con sistemas externos, bases de datos y frameworks.
Componentes Clave:
-
Adaptadores de Repositorio:
MongoContainerRepository: Implementación MongoDB del repositorio de contenedoresMongoLocationRepository: Implementación MongoDB del repositorio de ubicacionesMongoWarehouseRepository: Implementación MongoDB del repositorio de almacenes
-
Servicios Externos:
HttpBodegaoService: Implementación HTTP del servicio BodegaoHttpInventoryService: Implementación HTTP del servicio de inventarioHttpAssignmentService: Implementación HTTP del servicio de asignación
-
Controladores:
- Controladores REST para exponer la API
-
Configuración:
- Configuración de la aplicación, bases de datos y servicios externos
-
Utilidades:
- Logger
- Gestión de errores
- Validación de datos
Esta arquitectura permite una clara separación de responsabilidades, facilitando el mantenimiento y la evolución del sistema a lo largo del tiempo.