Saltearse al contenido

Router

El modulo Router enruta el flujo de datos hacia diferentes modulos segun el valor de un campo especifico o la evaluacion de condiciones. Primero evalua el campo configurado (por ejemplo data.tipo) y busca una coincidencia exacta en las rutas definidas. Si no hay coincidencia exacta, intenta evaluar cada clave de ruta como una expresion JavaScript. Si ninguna ruta coincide, redirige al defaultPath. Es util para dirigir el flujo a diferentes ramas segun el tipo de dato, categoria o cualquier valor dinamico.

ParametroTipoRequeridoDescripcion
fieldtextSiExpresion JavaScript que se evalua para obtener el valor a comparar. Ej: data.tipo, data.estado.
routestext (JSON)SiObjeto JSON donde las claves son valores o condiciones a comparar, y los valores son los nombres de los modulos destino. Ej: {"valor1": "modulo_A", "valor2": "modulo_B"}.
defaultPathtextNoNombre del modulo al que se redirige si ninguna ruta coincide.
{
"nextModule": "modulo_destino",
"data": { "datos_originales": "sin_modificar" },
"_meta_": {
"routerField": "valor_evaluado",
"routerPath": "modulo_destino",
"routerDefault": false
}
}
{
"label": "Router",
"field": "data.tipo",
"routes": "{\"factura\": \"procesarFactura\", \"pedido\": \"procesarPedido\", \"devolucion\": \"procesarDevolucion\"}",
"defaultPath": "procesoGenerico"
}
  • El campo field se evalua con eval(), por lo que puede ser cualquier expresion JavaScript valida (ej: data.tipo, data.items.length).
  • Las rutas se comparan primero por coincidencia exacta con el valor del campo.
  • Si no hay coincidencia exacta, cada clave de ruta se evalua como expresion JavaScript booleana.
  • Si routes es una cadena, se parsea como JSON automaticamente.
  • Los datos pasan sin modificar al siguiente nodo; el Router no transforma datos.
  • El _meta_ incluye informacion sobre la ruta seleccionada y si se uso el defaultPath.
  • Decision - evaluacion binaria true/false
  • Switch - evaluacion de multiples condiciones con operadores
  • Merge - para reunir ramas separadas por el Router