Saltar al contenido principal

Local Storage

1. Visión General​

El componente Local Storage (local-storage) funciona como una pequeña "caja fuerte" de datos en memoria, guardando valores en pares clave/valor para reutilizarlos en otros puntos del flujo. Tiene dos modos de vida (ámbito): datos que existen solo durante la ejecución actual, o datos compartidos entre ejecuciones diferentes de la aplicación, con un tiempo de expiración.

Úsalo cuando necesites guardar un valor temporalmente para usarlo después en el mismo flujo, o cuando necesites compartir información entre ejecuciones diferentes (por ejemplo, una caché simple o un contador). No lo uses para almacenamiento permanente o de grandes volúmenes de datos — eso debe ir a una base de datos de verdad.

2. Prerrequisitos​

No hay credenciales externas. Internamente, el ámbito "compartido entre ejecuciones" usa una instancia de almacenamiento en memoria distribuida (Hazelcast), creada automáticamente por la propia plataforma en el primer uso — no exige configuración manual del usuario.

3. Autenticación y Conexión​

No aplica — no hay conexión con sistemas externos configurable por el usuario.

4. Configuración / Operaciones Soportadas​

El componente soporta tres operaciones, controladas por el campo operation.

CampoObligatorioTipoDescripciónEjemplo
operationNoTexto: GET, PUT o DELETEOperación a ejecutar. Valor por defecto: GET. Cualquier valor no reconocido se trata como GET."PUT"
scopeNoTexto: EXECUTION o APPLICATIONDefine el alcance del dato. EXECUTION (por defecto): el valor solo existe durante la ejecución actual del flujo. APPLICATION: el valor se comparte entre ejecuciones diferentes, con tiempo de expiración."APPLICATION"
keySíExpresiónClave usada para guardar/buscar/borrar el valor."contadorPedidos"
valueSí (para PUT)ExpresiónValor a almacenar. Solo se usa en la operación PUT."10"
expirationNoTexto (milisegundos)Tiempo de vida del valor, aplicable solo al ámbito APPLICATION. Valor por defecto: "600000" (10 minutos)."3600000" (1 hora)

Comportamiento por operación:

  • GET: busca el valor de la clave informada. Si no existe, devuelve cuerpo vacío (no genera error).
  • PUT: graba el valor en la clave informada. En el ámbito APPLICATION, aplica el tiempo de expiración configurado.
  • DELETE: elimina el valor de la clave informada, si existe.

Comportamiento en caso de error: si key no se informa, la ejecución falla con el error "Missing key. Please specify a key to LocalStorage."

5. Ejemplos Prácticos​

Ejemplo simple: dentro de una única ejecución de flujo, un componente graba el CPF del cliente en una clave (operation: PUT, scope: EXECUTION), y un componente más adelante en el mismo flujo recupera ese valor (operation: GET) sin necesidad de volver a buscarlo en el origen.

Entrada:

{
"cliente": { "cpf": "123.456.789-00" }
}

Configuración del componente (grabando el valor):

{
"componentName": "local-storage",
"configurations": {
"operation": "PUT",
"scope": "EXECUTION",
"key": "cpfCliente",
"value": "{$.body.cliente.cpf}"
}
}

Configuración del componente (leyendo el valor más adelante en el mismo flujo):

{
"componentName": "local-storage",
"configurations": {
"operation": "GET",
"scope": "EXECUTION",
"key": "cpfCliente"
}
}

Respuesta del GET (el cuerpo del mensaje pasa a ser el valor grabado):

"123.456.789-00"

Ejemplo avanzado: un contador de intentos de procesamiento necesita compartirse entre diferentes ejecuciones del flujo (por ejemplo, para limitar cuántas veces un mismo pedido puede reprocesarse en un período). En ese caso, se usa scope: APPLICATION con un tiempo de expiración de una hora (expiration: "3600000"), garantizando que el contador expire automáticamente después de ese período aunque no se borre explícitamente.

Configuración del componente:

{
"componentName": "local-storage",
"configurations": {
"operation": "PUT",
"scope": "APPLICATION",
"key": "tentativas-pedido-981",
"value": "1",
"expiration": "3600000"
}
}

Respuesta:

"1"

6. Puntos de atención​

  • El ámbito EXECUTION no sobrevive al fin de la ejecución — los datos desaparecen cuando el flujo termina.
  • El ámbito APPLICATION queda en memoria; si la aplicación se reinicia, los datos se pierden incluso antes de expirar.
  • Los valores se tratan como texto simple, sin soporte nativo para estructuras complejas.
  • Recomendado para datos temporales y de volumen moderado, no para almacenamiento permanente o grandes volúmenes.

7. Errores Comunes y Troubleshooting​

Error / SíntomaCausa probableCómo resolverlo
"Missing key. Please specify a key to LocalStorage."El campo key no fue completado.Completar key con un valor válido en cualquiera de las tres operaciones.
Valor siempre vacío al usar GETLa clave nunca fue grabada antes, o el valor expiró (en el ámbito APPLICATION), o fue grabado en un ámbito diferente al usado en la lectura.Confirmar que el scope usado en el GET sea el mismo usado en el PUT, y que el dato todavía no haya expirado.
El dato esperado del PUT no aparece en otra ejecuciónSe usó scope: EXECUTION, que no persiste entre ejecuciones.Usar scope: APPLICATION para compartir datos entre ejecuciones diferentes.