Skip to content

Worker

Este documento describe la lógica y los procesos implementados en el Worker de Reabastecimiento de Datos.

El Worker de Reabastecimiento de Datos es responsable de procesar eventos de reabastecimiento y reposición desde una cola SQS, enriquecerlos con datos adicionales y publicarlos en temas SNS para su consumo por sistemas de procesamiento de datos. El worker se ejecuta según una programación definida por una expresión cron y procesa mensajes en lotes.

Nombre: RestockingDataEventWorker

Descripción: El proceso principal del worker que coordina la recuperación y el procesamiento de eventos desde la cola SQS.

Entrada/Salida:

  • Entrada: Mensajes SQS que contienen datos de eventos
  • Salida: Eventos procesados publicados en temas SNS

Flujo de Procesamiento:

  1. El worker es activado por un trabajo cron en intervalos programados
  2. Recupera hasta 10 mensajes de la cola SQS
  3. Para cada mensaje:
    • Determina el tipo de evento
    • Enruta el evento al procesador apropiado
    • Maneja casos de éxito y error
    • Elimina el mensaje de la cola si se procesa con éxito o si encuentra un error no recuperable
  4. Registra estadísticas de procesamiento (total de eventos, conteo de éxitos, conteo de fallos, tiempo de procesamiento)

Adaptadores/Puertos Involucrados:

  • QueueService: Para recuperar y eliminar mensajes
  • RestockingDataEventProcessor: Para procesar eventos de reabastecimiento
  • RestockDataEventProcessor: Para procesar eventos de reposición

Reglas de Negocio:

  • Los mensajes con tipos de eventos no procesables se registran y eliminan de la cola
  • Ciertos errores de negocio (por ejemplo, WarehouseNotEnabledError, ProductNotFoundError) se consideran no recuperables y resultan en la eliminación del mensaje
  • Otros errores se consideran recuperables y el mensaje permanece en la cola para procesamiento futuro

Posibles Errores/Excepciones:

  • UnprocessableEventTypeError: Cuando el tipo de evento no es reconocido
  • InvalidEventFormatError: Cuando el formato del evento es inválido
  • WarehouseNotEnabledError: Cuando el almacén no está habilitado para procesamiento
  • ProductNotFoundError: Cuando no se encuentra el producto
  • LocationNotFoundError: Cuando no se encuentra la ubicación
  • ContainerNotFoundError: Cuando no se encuentra el contenedor
  • UnexpectedError: Para errores inesperados durante el procesamiento

Procesamiento de Eventos de Reabastecimiento

Section titled “Procesamiento de Eventos de Reabastecimiento”

Nombre: RestockingDataEventProcessor

Descripción: Procesa eventos de reabastecimiento (RestockingCreated, RestockingUpdated, RestockingCompleted) enriqueciéndolos con información de producto y demanda y publicándolos en un tema SNS.

Entrada/Salida:

  • Entrada:
interface RestockingEventData {
type: 'RestockingCreated' | 'RestockingUpdated' | 'RestockingCompleted'
data: {
restockingId: string
productEan: string
quantity: number
status: string
createdAt: string
updatedAt: string
}
context: {
warehouse: string
country: string
}
}
  • Salida:
interface RestockingEvent {
id: string
type: 'RestockingCreated' | 'RestockingUpdated' | 'RestockingCompleted'
timestamp: string
data: {
restockingId: string
productEan: string
productName: string
quantity: number
demand: {
forecastQuantity: number
minimumStock: number
maximumStock: number
}
warehouse: string
country: string
status: string
createdAt: string
updatedAt: string
}
}

Flujo de Procesamiento:

  1. Validar el formato de datos del evento
  2. Verificar si el almacén está habilitado para procesamiento
  3. Obtener información del producto desde el Servicio de Productos
  4. Obtener información de demanda desde el Servicio de Demanda
  5. Transformar los datos a un formato estandarizado de RestockingEvent
  6. Publicar el evento en el tema SNS de Datos de Reabastecimiento

Adaptadores/Puertos Involucrados:

  • ProductService: Para recuperar información de productos
  • DemandService: Para recuperar información de demanda
  • RestockingEventDispatcher: Para publicar eventos en SNS

Reglas de Negocio:

  • El evento debe tener un formato válido
  • El almacén debe estar habilitado para procesamiento
  • El producto debe existir
  • La información de demanda debe estar disponible

Posibles Errores/Excepciones:

  • InvalidEventFormatError: Cuando el formato del evento es inválido
  • WarehouseNotEnabledError: Cuando el almacén no está habilitado para procesamiento
  • ProductNotFoundError: Cuando no se encuentra el producto
  • UnexpectedError: Para errores inesperados durante el procesamiento

Nombre: RestockDataEventProcessor

Descripción: Procesa eventos de reposición (RestockRegistered) enriqueciéndolos con información de producto, demanda, ubicación y contenedor y publicándolos en un tema SNS.

Entrada/Salida:

  • Entrada:
interface RestockEventData {
type: 'RestockRegistered'
data: {
restockId: string
productEan: string
quantity: number
locationId: string
containerId: string
createdAt: string
}
context: {
warehouse: string
country: string
}
}
  • Salida:
interface RestockEvent {
id: string
type: 'RestockRegistered'
timestamp: string
data: {
restockId: string
productEan: string
productName: string
quantity: number
demand: {
forecastQuantity: number
minimumStock: number
maximumStock: number
}
location: {
id: string
name: string
type: string
}
container: {
id: string
name: string
type: string
}
warehouse: string
country: string
createdAt: string
}
}

Flujo de Procesamiento:

  1. Validar el formato de datos del evento
  2. Verificar si el almacén está habilitado para procesamiento
  3. Obtener información del producto desde el Servicio de Productos
  4. Obtener información de demanda desde el Servicio de Demanda
  5. Obtener información de ubicación desde el Servicio de Ubicaciones
  6. Obtener información de contenedor desde el Servicio de Contenedores
  7. Transformar los datos a un formato estandarizado de RestockEvent
  8. Publicar el evento en el tema SNS de Datos de Reposición

Adaptadores/Puertos Involucrados:

  • ProductService: Para recuperar información de productos
  • DemandService: Para recuperar información de demanda
  • LocationService: Para recuperar información de ubicaciones
  • ContainerService: Para recuperar información de contenedores
  • RestockEventDispatcher: Para publicar eventos en SNS

Reglas de Negocio:

  • El evento debe tener un formato válido
  • El almacén debe estar habilitado para procesamiento
  • El producto debe existir
  • La información de demanda debe estar disponible
  • La ubicación debe existir
  • El contenedor debe existir

Posibles Errores/Excepciones:

  • InvalidEventFormatError: Cuando el formato del evento es inválido
  • WarehouseNotEnabledError: Cuando el almacén no está habilitado para procesamiento
  • ProductNotFoundError: Cuando no se encuentra el producto
  • LocationNotFoundError: Cuando no se encuentra la ubicación
  • ContainerNotFoundError: Cuando no se encuentra el contenedor
  • UnexpectedError: Para errores inesperados durante el procesamiento