# Flujo

<figure><img src="https://content.gitbook.com/content/7nKJZNWmfvaqAyIRrGi4/blobs/7nYHiTbSHMrpo98ch9Qq/Flow.png" alt=""><figcaption></figcaption></figure>

**Flujo** es el entorno visual dentro de Gaio Studio diseñado para crear pipelines de datos. Permite conectar tareas y transformar datos de manera modular, ágil y colaborativa. Es ideal para procesos ETL, analítica automatizada, machine learning, reportes y entrega de datos.

***

### Propósito del Flujo

Construir flujos de trabajo completos organizando los pasos de procesamiento, análisis y entrega de datos en un formato visual e interconectado.

***

### Cómo Usar Flujo

#### 1. Acceder a la Sección Flujo

Haz clic en el ícono **Flujo** en la barra lateral izquierda.

Verás el lienzo (canvas) con el nombre del proceso actual (por ejemplo, *My first process*).

El panel izquierdo muestra carpetas para organización, como:

* ETL
* Análisis
* Entrega

***

#### 2. Crear o Seleccionar un Proceso

Haz clic en el botón **+** en la esquina superior del panel para crear un nuevo proceso.

Asigna un nombre al proceso y comienza a agregar bloques según sea necesario.

***

#### 3. Paso a Paso: Configuración del Flujo

<figure><img src="https://content.gitbook.com/content/7nKJZNWmfvaqAyIRrGi4/blobs/KCWddlx5RCfNf7BKQO9I/Flow%20-%202.png" alt=""><figcaption></figcaption></figure>

1. **Nombre del proceso**

* Ingresa un nombre claro y descriptivo para tu proceso (por ejemplo, `Sales_ETL_Flow` o `CustomerDashboard`).
* Este nombre aparecerá en el espacio de trabajo de Flujo y en la barra lateral.

2. **Descripción**

* (Opcional) Proporciona un breve resumen del propósito del flujo.
* Es útil para documentación y colaboración entre equipos.

3. **Tipo de flujo:**&#x20;

* **Preparación de Datos:**\
  Selecciona esta opción para flujos de backend enfocados en transformación, carga y modelado de datos.
* **Panel de Control:**\
  Utiliza esta opción si el flujo generará un panel visual para monitoreo o interacción con usuarios.
  * Tipo de Panel
    * **Página:** Muestra el panel como una página completa.
    * **Flujo en Diálogo:** Abre el panel dentro de una ventana modal o cuadro de diálogo.

4. **Mostrar Encabezado del Panel**
   * Permite habilitar o deshabilitar la sección de encabezado del panel.
   * Es útil para mostrar títulos o filtros al usuario.

5. **Intervalo de Actualización de Pantalla**
   * Define el intervalo de actualización automática de la pantalla (en milisegundos).
   * Ideal para paneles de monitoreo en tiempo real.
   * Ejemplos:

     * `1000` = 1 segundo
     * `60000` = 1 minuto

6. **Reglas de Ejecución**
   * Bloquear Flujo Durante la Ejecución
     * Evita que el flujo sea ejecutado nuevamente mientras ya está en ejecución.

* Tiempo Máximo de Ejecución
  * Define el tiempo máximo permitido de ejecución para el flujo (en milisegundos).
    * Ayuda a evitar ejecuciones indefinidas o sobrecarga del servidor.
    * Ejemplo:
      * `300000` = 5 minutos

***

#### 4. Arrastrar y Conectar Bloques

* Arrastra tareas desde el menú izquierdo (como **Tabla**, **Constructor**, **Clúster**, **Aprendizaje Automático**, etc.).
* Conecta los bloques haciendo clic en el punto gris junto a un bloque y arrastrándolo hacia otro.

***

#### 5. Editar Cada Bloque Individualmente

Haz clic en el ícono de lápiz de cualquier bloque para abrir su ventana de configuración.

Ajusta:

* Configuración de tablas
* Scripts SQL
* Parámetros de visualización
* Configuraciones de aprendizaje automático

***

#### 6. Ejecutar el Proceso

Utiliza los botones de la barra superior para:

* **Ejecutar:** Iniciar la tarea seleccionada
* **Ejecutar desde aquí:** Iniciar el flujo desde la tarea seleccionada
* **Ejecutar todo:** Ejecutar el flujo completo

Haz clic en **Monitorear** para seguir los registros y el rendimiento de ejecución en tiempo real.

***

### Buenas Prácticas

* Usa nombres claros y consistentes para procesos y tablas (por ejemplo, `tmp_ventas_diarias`).
* Mantén los bloques organizados visualmente en el lienzo.
* Divide flujos grandes en subflujos temáticos más pequeños.
* Agrega comentarios dentro de cada bloque para documentar la lógica.
