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.
| Campo | Obligatorio | Tipo | Descripción | Ejemplo |
|---|---|---|---|---|
operation | No | Texto: GET, PUT o DELETE | Operación a ejecutar. Valor por defecto: GET. Cualquier valor no reconocido se trata como GET. | "PUT" |
scope | No | Texto: EXECUTION o APPLICATION | Define 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" |
key | Sí | Expresión | Clave usada para guardar/buscar/borrar el valor. | "contadorPedidos" |
value | Sí (para PUT) | Expresión | Valor a almacenar. Solo se usa en la operación PUT. | "10" |
expiration | No | Texto (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
EXECUTIONno sobrevive al fin de la ejecución — los datos desaparecen cuando el flujo termina. - El ámbito
APPLICATIONqueda 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íntoma | Causa probable | Có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 GET | La 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ón | Se usó scope: EXECUTION, que no persiste entre ejecuciones. | Usar scope: APPLICATION para compartir datos entre ejecuciones diferentes. |