38 lines
2.4 KiB
Markdown
38 lines
2.4 KiB
Markdown
# Simulación administrativa
|
|
|
|
POST /api/v1/admin/flows/{id}/simulate requiere FLOW_ADMIN_ENABLED, FLOW_EDITOR
|
|
y un businessScope permitido por ADMIN_BUSINESS_SCOPES. El actor del JSON es un
|
|
fixture para evaluar roles/guardias del flujo; no autentica al llamador. No acepta
|
|
un token dentro del JSON como autoridad. Flujos DRAFT/PUBLISHED/RETIRED pueden
|
|
evaluarse; nunca se cambia estado de publicación, checksum o revisión.
|
|
|
|
Se lee una versión del flujo y se libera el bloqueo antes de evaluar. Body UTF-8
|
|
máximo 1 MiB, sin claves duplicadas; requestData/event.data y cada resultado tienen
|
|
límite 256 KiB. Aplica SimulationInput/SimulationResult del contrato. Un error de
|
|
sintaxis es 400, tamaño 413, contrato/tipos/ambigüedad 422; rol de negocio del fixture
|
|
no permitido 403 y evento inexistente 409. Respuesta no-store.
|
|
|
|
La simulación recorre una transición: valida datos de estado actual (dataSchema),
|
|
evento, roles/guardia y mappings de entradas; luego valida fixtures de resultados
|
|
contra contratos/perfiles del catálogo confiable. results usa exactamente los
|
|
resultKey de acciones externas seleccionadas; no se permiten resultados sobrantes
|
|
ni omitidos. NO_OP toma output de su definición y no necesita una entrada results.
|
|
Sigue prohibido publicar/ejecutar NO_OP en el worker.
|
|
|
|
Los drafts usan versión de contrato/perfil indicada o default del catálogo. Las
|
|
publicadas usan sus versiones fijadas. No requiere rutas HTTP ni secretos; catálogo
|
|
de contratos sí. No resuelve referencias de schemas a red/archivos. Las guardias se
|
|
evalúan antes de resultados, como al aceptar un evento real. Las decisiones, updates,
|
|
validación final y reglas coincidentes usan TransitionEvaluator compartido con el
|
|
worker. UNIQUE ambiguo devuelve AMBIGUOUS_DECISION, no una ruta de negocio.
|
|
|
|
No crea solicitudes, ejecuciones, checkpoints, referencias documentales, auditorías
|
|
ni eventos. No invoca proveedores ni ejecuta reintentos. Las respuestas documentales
|
|
son fixtures, no prueba de propiedad/antivirus de un documento real. La simulación
|
|
valida MIME/tamaño/tipo configurados, no verifica almacenamiento o consentimiento.
|
|
No equivale a publicar un draft válido ni a un recorrido persistente de demo.
|
|
|
|
Ejemplo: [simulate.http](../examples/http/simulate.http). FlowSimulationTest cubre
|
|
fronteras, contrato, guardias, NO_OP y ambigüedad; SimulationIT comprueba JWT/ACL,
|
|
schemas HTTP, límites y que los conteos/revisión permanecen iguales tras simular.
|