El modulo DataStore es el sistema principal de almacenamiento de datos estructurados del workflow. Soporta múltiples acciones: agregar registros (add), agregar en lote (bulk), filtrar (filter), obtener un campo especifico (getField), verificar existencia (exists), eliminar (delete), modificar tags (modifyTags), reemplazar tags (replaceTags), operaciones batch por tags (batchTags) y mapear claves a valores (map). Los registros se organizan en grupos, cada uno con una clave única (key) y etiquetas (tags) opcionales. Las tags permiten categorizar y filtrar registros con modos OR, AND o exclusion. Soporta variables dinámicas {{variable}} en campos como key, row y tags.
Modo de filtrado: any (OR), all (AND), exclude. Por defecto: any.
limit
number
No
Máximo de registros que devuelve, los más recientes primero. Por defecto 50; súbelo (hasta 5000) si necesitas el historial completo de un grupo.
La salida de filter es la lista de registros (cada uno con su row_data ya convertido en objeto). El nodo necesita action: filter; si lo escribes a mano en una plantilla, no lo olvides.
Para no tener que recordar ni teclear a mano los nombres, los campos key y field incluyen un asistente: un botón con una lupa, junto al botón {} de variables. Al pulsarlo se abre una lista con lo que ya existe en el grupo elegido.
Campo
Nodos
Qué lista
key
Add, Filter, Get Field, Exists, Delete
Las keys del grupo (hasta 50), con una vista previa del registro. Con más registros, escribe en el buscador para filtrar.
field
Get Field, Map
Los campos que aparecen en los últimos registros del grupo, con su tipo y un ejemplo.
Cómo usarlo:
Elige primero el grupo. Sin grupo, el asistente te lo recuerda.
Pulsa la lupa del campo key o field.
Busca si hace falta y haz clic en el valor: se escribe en el campo.
Qué conviene saber:
Es una ayuda, no una obligación. Puedes seguir escribiendo el valor a mano o usar una variable como {{data.pedido}}.
Si el grupo es una variable (por ejemplo {{data.grupo}}), el asistente no puede saber qué hay dentro: escribe el valor a mano.
Los campos se deducen de los registros reales. Solo se ofrecen los de primer nivel, que son los que leen estos nodos. Si el grupo aún no tiene registros, no habrá campos que mostrar.
Permisos. Hace falta poder ver el DataStore; si no, el asistente avisa en lugar de mostrar la lista.
Carga bajo demanda. Los datos se piden al abrir el asistente, no al abrir el nodo.
Soporta variables dinámicas {{variable}} en los campos key, row, dataKey y tags.
Los campos key y field tienen un asistente para elegir valores existentes: ver Asistente de asignación.
Si la acción es add y ya existe un registro con la misma key en el grupo, se actualiza.
Para bulk, el input puede ser un array o un objeto que se convierte a array.
La acción exists retorna isFound: true/false con los datos del registro si existe.
La acción delete puede eliminar por ID directo o por combinación de group + key.
La acción modifyTags permite agregar y eliminar tags simultaneamente en múltiples registros.
La acción map permite obtener un campo especifico de múltiples registros a la vez, con transformaciones opcionales.
La acción replaceTags busca un tag especifico en cada registro y lo sustituye por otro. Si el registro no tiene el tag, se puede configurar para asignar el nuevo tag igualmente (ifNotFound: assign) o no hacer nada (ifNotFound: skip).
La acción batchTags primero filtra registros por coincidencia de tags y luego aplica una operación masiva: anadir tags, eliminar tags o reemplazar un tag por otro.
Cada variante tiene su propio parentNode dataStore y su propio icono/color para facilitar la identificación visual.