Skip to content

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.

Responsabilidad Principal: Contener las reglas de negocio, entidades y lógica central del sistema.

Componentes Clave:

  • Entidades:

    • Container: Representa un contenedor en el sistema WMS
    • Location: Representa una ubicación en un almacén
    • Warehouse: Representa un almacén
  • Value Objects:

    • ContainerId, ContainerName: Identificadores y nombres de contenedores
    • LocationId, LocationName: Identificadores y nombres de ubicaciones
    • WarehouseId, WarehouseCode: Identificadores y códigos de almacenes
    • Country: Representa un país (MX, BR, etc.)
  • Repositorios (Interfaces):

    • ContainerRepository: Interfaz para persistencia de contenedores
    • LocationRepository: Interfaz para persistencia de ubicaciones
    • WarehouseRepository: Interfaz para persistencia de almacenes
  • Servicios de Dominio (Interfaces):

    • BodegaoService: Interfaz para interactuar con el servicio Bodegao
    • InventoryService: Interfaz para interactuar con el servicio de inventario
    • AssignmentService: Interfaz para interactuar con el servicio de asignación
  • Patrones:

    • Observer: Patrón para notificación de eventos
    • Subject: Patrón para publicación de eventos

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 contenedores
    • DeleteContainer: Eliminación de contenedores
    • UpdateContainer: Actualización de contenedores
    • Buscadores: Funcionalidades para encontrar contenedores
  • Casos de Uso de Ubicaciones:

    • CreateLocation: Creación de ubicaciones
    • DeleteLocation: Eliminación de ubicaciones
    • Buscadores: Funcionalidades para encontrar ubicaciones
  • Casos de Uso de Almacenes:

    • CreateWarehouse: Creación de almacenes
    • DeleteWarehouse: 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

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 contenedores
    • MongoLocationRepository: Implementación MongoDB del repositorio de ubicaciones
    • MongoWarehouseRepository: Implementación MongoDB del repositorio de almacenes
  • Servicios Externos:

    • HttpBodegaoService: Implementación HTTP del servicio Bodegao
    • HttpInventoryService: Implementación HTTP del servicio de inventario
    • HttpAssignmentService: 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.