# Loop / ForEach

{% tabs %}
{% tab title="Parâmetros" %}

<figure><img src="/files/P26bwFhl7Cc1YRl3IpwW" alt="" width="375"><figcaption><p>Parâmetros de configuração</p></figcaption></figure>

| Campo                          | TIpo           | Descrição                                                                                                                                               |
| ------------------------------ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Descrição                      | Campo de texto | Descrição visual do conector na construção do fluxo.                                                                                                    |
| Caminho dos itens para o split | Campo de texto | Informa o caminho da lista a ser percorrida no contexto de execução do fluxo.                                                                           |
| Output Path                    | Campo de texto | Refere-se ao caminho onde um conteúdo estará localizado em cada iteração sobre uma lista. Este caminho estará disponível na saída on\_each do conector. |
| {% endtab %}                   |                |                                                                                                                                                         |

{% tab title="Payload" %}

## Sucesso

O conector percorre uma lista de itens, executando o fluxo a partir da saída "on\_each" para cada item individualmente. Após a conclusão de todas as iterações, a saída "on\_end" é acionada.&#x20;

No exemplo abaixo, há uma lista msg.users contendo três usuários. O conector Loop/ForEach recebe o caminho msg.users como entrada de dados e utiliza msg.user como Output Path. A primeira saída, “on\_each”, processa o primeiro usuário com índice 0, representado pelo campo msg.index. Em seguida, o segundo usuário, com índice 1, é processado, e assim por diante, até percorrer toda a lista.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXflfBJ2LOhk_szWmj9Xxs1q20Rh9_2bBzuXE_cgbc4hwvSmYCWXcvYl9BN1SHp5yy5knFwRq-beCqvidVMCKPtaFkVyWd3sj6ZK5O90K7Uifv2Jrs7x2CQl46iaXmrNf7TRtI_dLQ?key=yLogrgEbXy0K_a4zmB9ApgKO" alt=""><figcaption><p>Entrada de dados em formato de lista</p></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeTJlhy5dyK3-xVQnIXpTzRx2gJY-UlAvcxcGNXuSH8JnDRnlbZWQmLOkqL7Vv9s6SqB85WRTjITKzvoVLNoGz2YNenHpyzCq2iiKcVlHgDyhJ-DA2kFX4bKeYVKjkxDYYIe5TQ7Q?key=yLogrgEbXy0K_a4zmB9ApgKO" alt=""><figcaption><p>Primeira iteração de loop</p></figcaption></figure>

Ao final da iteração completa sobre a lista, a ramificação "on\_end" será executada. Nessa etapa os dados originais do fluxo, até o momento da execução do conector Loop/ForEach, serão retornados—neste caso, a lista original de usuários. Isso significa que quaisquer alterações realizadas dentro da ramificação "on\_each" permaneceram isoladas nessa execução específica, sem impactar diretamente os dados originais do fluxo.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc4zDQ2810FFO1yyFP9Tl-zQdFKn6Gx7hFq6c2uB53KAlmoSg2OuEzyP1SPBfTtEUuq1YfQCUfSAr-FB7uWbyT9IR-oigKNjGZvUc1YA8v9kszJEk9azq45xYB-8arosiueEc7DfA?key=yLogrgEbXy0K_a4zmB9ApgKO" alt=""><figcaption><p>Payload da saída on_end</p></figcaption></figure>

## Execuções avançadas

### Execução aninhada

É possível também realizar a execução de forma aninhada utilizando múltiplos conectores Loop/ForEach em sequência. A iteração aninhada permite a leitura de uma matriz de dados. No exemplo abaixo foi criada uma matriz 4x4, onde o primeiro conector Loop/ForEach irá ler uma linha em cada iteração, e o segundo conector será responsável por iterar sobre as colunas desta linha.&#x20;

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfNRJGti_RxXP_wCuyaPZ-uLNhKeJx876y3bapppUtyYjSqRrJzKZniY9L42Hp9TlELOUHTVg8N4IGeG4PFsV9Xq9mi1mLhbKp59qD4GwTodwxExPDoLGoYz8gACd4_2ejutxbWhQ?key=yLogrgEbXy0K_a4zmB9ApgKO" alt=""><figcaption><p>Loops aninhados</p></figcaption></figure>

### Execução com conectores Sub-Flow

Os conectores Sub-Flow permitem a execução de subfluxos dentro de um fluxo principal. Subfluxos são pequenos trechos que podem ser chamados pelo fluxo principal para realizar operações, validações ou manipulações de dados de forma isolada da execução principal. Eles podem conter um ou mais conectores e, ao final da execução, podem retornar ao fluxo principal com os dados processados. De maneira análoga à programação, funcionam como funções que executam uma tarefa específica antes de devolver o resultado ao fluxo principal.

No exemplo abaixo, um fluxo percorre uma lista de usuários e chama um subfluxo responsável por verificar se cada usuário está cadastrado em um banco de dados interno. Se o usuário já existir, seus dados serão atualizados; caso contrário, um novo registro será criado. A combinação do Sub-Flow com o Loop/ForEach permite estruturar fluxos mais organizados, reutilizáveis e flexíveis, facilitando a manutenção e escalabilidade do processo.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdGgc7GMX8tf3gz2G1G2ryHiH4CqVg_j_JM5ZX5BUQOrBHTgEHfr5v8gLrP3poAJofbWH5AKlyBegfTby0pbJuyZv5cgj1Yi7djHJ5V8VB6FawiQofeEGA5cv3fWjbchLbrAw0zeg?key=yLogrgEbXy0K_a4zmB9ApgKO" alt=""><figcaption><p>Loop em subfluxos</p></figcaption></figure>

### Múltiplas ramificações em saída on\_each

O conector Loop/ForEach permite que múltiplos conectores estejam ligados a sua saída ‘on\_each’ (saída por onde os dados iterados de uma lista serão disponibilizados). Com isso é importante entender como estes conectores são executados num contexto onde há dois ou mais conectores conectados a esta saída, gerando múltiplas ramificações.

Quando temos um cenário onde é preciso realizar a conexão de mais de um conector na saída ‘on\_each’, a ordem em que estes conectores serão executados será de acordo com a ordem em que a ramificação foi criada na saída on\_each. No exemplo abaixo está sendo realizado a primeira conexão com o conector Floui Database - Atualizar Registro, e em seguida será realizada a conexão com o conector Floui Database - Consultar por Campo, ambos na saída ‘on\_each’. Isto significa que durante a execução a ramificação com o conector Floui Database - Atualizar Registro será a primeira a ser executada até o seu fim, e em seguida irá executar a ramificação do conector Floui Database - Consultar por Campo.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe4p_4YLOrqZU4bmS0U-dNGNTWRI-uFbY5SsSM6UYeywT3xw8fZu-UrnzC8qN9xXxAXE9RIuFDSl6yucT9OzY1lvDJnt-YYfOPZWZbTZ2Pd2B4BkegMznr3K-Imjk4a7pxoV9E8SA?key=yLogrgEbXy0K_a4zmB9ApgKO" alt=""><figcaption><p>Múltiplas saídas em on_each</p></figcaption></figure>
{% endtab %}
{% endtabs %}

## Anexo

Para testar a funcionalidade do conector, acesse o editor de fluxos em seu workspace e importe o arquivo abaixo.

<figure><img src="/files/ckUnUmbiCeJHkC4h9ucP" alt=""><figcaption><p>Fluxo em uma aplicação real.</p></figcaption></figure>

{% file src="/files/Ke1uRVjmi2o9lA0KuRV6" %}
Fluxo utilizado
{% endfile %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.floui.io/guia/conectores/categorias/conectores-essenciais/loop-foreach.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
