Skip to content

ImagFlow — Motor de Flujos

Proposito

ImagFlow es el motor de orquestacion generico de la plataforma Imagy. Permite disenar, versionar y ejecutar flujos multi-paso que coordinan proveedores externos, aplican reglas de negocio y notifican resultados. Es utilizado por todos los demas dominios cuando necesitan orquestar procesos que involucran validaciones, capturas o integraciones externas.

Responsabilidades

ResponsabilidadDescripcion
Diseno de flujosCRUD de flujos con pasos, reglas, notificaciones y proveedores
VersionamientoCiclo de vida inmutable: draft, published, archived
TemplatesCatalogo de flujos reutilizables, duplicacion hacia tenants
EjecucionOrquestacion de pasos cuando un usuario final accede al link
Provider GatewayComunicacion unificada con proveedores externos (adapters, failover, circuit breaker)
Motor de reglasEvaluacion de condiciones configurables para decidir resultado
NotificacionesEnvio multi-canal (SMS, email, webhook, push) por eventos del flujo
AsignacionVincular flujos publicados a tenants u organizaciones

Actores

ActorInteraccion con ImagFlow
Platform AdminCrea, edita y publica flujos. Configura proveedores y templates.
Delegated AdminAsigna flujos a tenants. Duplica templates.
Tenant AdminVe flujos asignados. No puede editarlos.
OperatorCrea solicitudes (requests) que inician la ejecucion de un flujo.
Usuario FinalEjecuta los pasos del flujo via link publico (sin autenticacion).
ImagLendInvoca flujos de validacion como parte del proceso de credito.
ImagSignEs invocado como proveedor de firma dentro de un paso del flujo.

Arquitectura Interna

Sub-componentes

Flow Service

Gestiona el ciclo de vida de flujos:

  • CRUD de flujos y versiones
  • Configuracion de pasos (tipo, proveedor, config UI, reintentos)
  • Configuracion de reglas (condiciones, acciones)
  • Configuracion de notificaciones (triggers, canales, templates)
  • Versionamiento inmutable (draft/published/archived)
  • Templates y duplicacion

Request Service

Gestiona solicitudes (instancias de ejecucion de un flujo):

  • Crear solicitud (genera access_token, link publico)
  • Ciclo de vida: created, in_progress, capture_completed, processing, completed, failed, expired
  • Almacena intentos (attempts) por paso
  • Almacena resultados de enriquecimiento (enrichments)
  • Almacena decision final

Execution Engine

Orquesta la ejecucion cuando el usuario final accede al link:

  • Valida token y estado de la solicitud
  • Gestiona sesion de ejecucion en Valkey (paso actual, intentos, estado)
  • Invoca Provider Gateway para cada paso
  • Controla reintentos y cooldowns
  • Dispara procesos asincronos al completar captura
  • Publica eventos de progreso

Provider Gateway

Abstraccion unificada para proveedores externos:

  • Adapter pattern (una interfaz por tipo de servicio)
  • Failover configurable (proveedor primario y secundario)
  • Circuit breaker (Polly)
  • Metricas por proveedor (latencia, errores, failovers)
  • Registro de nuevos proveedores sin cambiar codigo core

Rules Engine

Evalua condiciones configurables sobre los datos recopilados:

  • Condiciones simples (campo, operador, valor)
  • Condiciones compuestas (AND, OR, anidadas)
  • Datos historicos del sujeto (via ImagID)
  • Acciones: aprobar, rechazar, escalar, notificar, marcar

Notification Service

Envia notificaciones multi-canal:

  • Triggers: on_complete, on_reject, on_approve, on_expire, on_step_fail
  • Canales: SMS, email, webhook, push
  • Templates configurables por flujo
  • Webhooks firmados con HMAC para clientes

Modelo de Versionamiento

EstadoEditableAsignableUsable en solicitudes
DraftSiNoNo
PublishedNo (inmutable)SiSi
ArchivedNoNoSolo solicitudes existentes
DiscardedNoNoNo

Reglas:

  • Solo 1 draft activo por flujo
  • Solo 1 version published por flujo
  • Al publicar, la version published actual pasa a archived
  • Las solicitudes referencian flow_version_id, no flow_id
  • Si se publica v2, las solicitudes creadas con v1 siguen con v1

Tipos de Paso

TipoDescripcionProveedor
formFormulario configurable (campos, validaciones)Ninguno (captura local)
livenessVerificacion facial en vivoBiometria
card_captureCaptura de documento (frente/reverso)OCR
signatureFirma digital o electronicaImagSign
validationValidacion contra registros oficialesRegistros, demograficos
customPaso generico extensibleConfigurable

Ciclo de Vida de una Solicitud

Integracion con Otros Dominios

ImagFlow como proveedor de servicios

ConsumidorComo usa ImagFlowEndpoint
ImagLendInvoca flujo de validacion de identidadPOST /api/v1/executions/trigger
ImagLendConsulta resultado de ejecucionGET /api/v1/executions/{id}/result

ImagFlow como consumidor

ProveedorQue consume ImagFlowEndpoint
ImagSignEjecuta firma como paso del flujoPOST /api/v1/signatures/request
ImagIDConsulta historial del sujeto para reglasGET /api/v1/subjects/{id}/metrics

Eventos publicados

EventoRouting KeyConsumidores
Flujo completadoflow.execution.completedImagLend, ImagID
Flujo fallidoflow.execution.failedImagID
Paso completadoflow.step.completedImagID
Version publicadaflow.version.publishedAudit

Eventos consumidos

EventoRouting KeyAccion
Firma completadasign.signature.completedMarcar paso de firma como completado
Firma rechazadasign.signature.rejectedMarcar paso de firma como fallido
Sujeto blacklistedsubject.profile.blacklistedRegistrar en cache para reglas

Repositorio

  • Repo: imagy-flow-engine
  • Base de datos: imagy_flow
  • Puerto local: 4001
  • Equipo: Team Flow

Documentos Relacionados

Reimagine Tech LLC — Documentacion Interna