Skip to main content

Máquina de estados y manejo de errores

12.1 Estados y responsable de la transición​

EstadoSignificadoComponente que puede transicionar hacia él
RECEIVEDSolicitud recibida e idempotencia validada (ingesta).Purchase Order API
VALIDATINGMotor de validaciones está evaluando reglas.Purchase Order API (síncrono)
VALIDATION_FAILEDErrores de reglas funcionales; no se envía a Pub/Sub.Purchase Order API + Validation Engine
REJECTEDRegla de negocio grave NO_RETRYABLE lo marcó como rechazo inmediato.Validation Engine (policy por regla severidad FATAL)
VALIDATEDTodas las reglas pasaron.Validation Engine
QUEUEDOutbox event creado; pendiente de publicación y entrega a worker.Purchase Order API (transaction commit)
PROCESSINGFusion Worker ha tomado el mensaje y está invocando Oracle Fusion.Oracle Fusion Worker
CREATEDOracle Fusion creó la OC; número de OC disponible.Oracle Fusion Worker
RETRY_PENDINGError TEMPORARY_ERROR; en espera de retry automático o manual.Oracle Fusion Worker o Manual Retry API
FAILEDExhaustos reintentos, o error NO_RETRYABLE.Oracle Fusion Worker

12.2 Transiciones permitidas​

12.3 Taxonomía de errores​

CategoríaDescripciónRetryEstadoHTTPLogAlerta
VALIDATION_ERRORErrores de reglas funcionalesNoVALIDATION_FAILED422WARNOpcional
BUSINESS_ERRORPolíticas de negocio no cumplenNoREJECTED / FAILED409 / 422WARNTBD
TEMPORARY_ERRORTimeouts / 5xx / unavailableSíRETRY_PENDING → FAILED502/504ERRORSí
INTEGRATION_ERRORFusion 4xx (ej: supplier no existe)Depende: generalmente No; excepción TBDFAILED422ERRORSí
AUTHENTICATION_ERRORToken inválido/expiradoSí si refresh; No si credenciales malFAILED401ERRORSí
AUTHORIZATION_ERRORPermisos / scopes insuficientesNoFAILED403ERRORSí
TECHNICAL_ERRORDB / NullPointer / ClassCast / UnknownHostExceptionOpcional (con límite)RETRY_PENDING → FAILED500ERRORSí
NON_RETRYABLE_ERRORClasificación explícita por configuraciónNoFAILED → DLQ422 / 500FATALSí

12.4 Estrategia de retries y DLQ matriz​

ErrorAuto retryManual retryDLQ
VALIDATION_ERRORNoSí (después de corregir reglas)No
BUSINESS_ERRORNoSí (override por regla TBD)Sí
TEMPORARY_ERRORSí (Pub/Sub retry policy)SíSí (tras límite)
INTEGRATION_ERRORConfigurable; por defecto NoSíSí
AUTHENTICATION_ERRORSí si transient; No si credenciales rotasSí (post rotación secret)Sí
AUTHORIZATION_ERRORNoSí (fix scopes)Sí
TECHNICAL_ERRORSí (límite)SíSí
NON_RETRYABLE_ERRORNoSíSí (inmediato o configurable)

12.5 API Error Model único​

{
"requestId": "bcd5f9a7-4ced-4d25-bf3f-6ae762f05b41",
"timestamp": "2026-08-12T18:00:00Z",
"code": "VALIDATION_ERROR",
"message": "La solicitud contiene errores",
"errors": [
{ "field": "supplier.code", "code": "REQUIRED", "message": "El proveedor es obligatorio" }
]
}