# Módulo Loop Do While

* [Definição](#definicao)
* [Configuração do módulo](#configuracao-do-modulo-loop-do-while)
  * [Crie suas condicionais](#crie-suas-condicionais)
    * [Parâmetro](#parametro)
  * [Exemplo](#exemplo)

### **Definição**

O módulo ferramental "**Loop Do While"**, módulo padrão do **Skyone Studio** para a utilização em qualquer fluxo, foi criado para processar dados externos relacionados à quantidade de registros, sobre os quais não temos informação *a priori*. Ele é útil por conta da necessidade de termos uma ou mais interações para consumir todos os dados em um fluxo, um processo que também é conhecido como leitura paginada.

O módulo "**Loop Do While"** é composto por duas operações, **DO** e **WHILE**, que marcam, respectivamente, o começo e o fim de uma repetição (loop).

A estrutura desse tipo de loop pode ser representada da seguinte maneira:

```json
var loop_count = -1;
do 
{
    loop_count ++;
	//bloco de código que será executado
}while(condition);
```

Observe que o **DO** é inicializado com valor de **loop\_count** **= -1**, mas a primeira instrução a ser executada é seu incremento para “&#x30;**”**. Isso mantém a consistência com o [**FOR**](https://docs.skyone.cloud/skyone-studio/integracoes/fluxos/modulos-ferramentais/modulo-loop-for), no qual a primeira execução do loop também tem o valor “&#x30;**”**. Além disso, assim como no **FOR**, a variável **loop\_count** também contém, na saída do loop, o valor da quantidade de execuções menos um.

Para representar o **loop\_count** (contador do loop), a operação **DO** do módulo **Do While** inicializa e mantém um parâmetro equivalente, que poderá ser acessado por qualquer módulo conectado ao fluxo, denominado **loopCount**. Este parâmetro armazena a posição de execução do fluxo, iniciando do valor “0” para a primeira execução, incrementando-o a cada execução.

### **Configuração do módulo Loop Do While** <a href="#configuracao-do-modulo-loop-do-while" id="configuracao-do-modulo-loop-do-while"></a>

O módulo "**Loop Do While"** aparece na opção Ferramentas da edição de um fluxo. Após clicar para adicioná-lo, o modal de configuração será exibido.

<figure><img src="https://2406186417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlGHvosl2xodpQaXzCzxY%2Fuploads%2Fd95jEiZ49HlkS2xYLaFL%2Fconf-modulo-loopdowhile.gif?alt=media&#x26;token=77ba8afe-ce6b-418d-b26b-263534e991a7" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
[Saiba sobre o Cabeçalho do Módulo aqui](https://docs.skyone.cloud/skyone-studio/integracoes/cabecalho-dos-modulos).&#x20;
{% endhint %}

#### Crie suas condicionais <a href="#crie-suas-condicionais" id="crie-suas-condicionais"></a>

Na área de "**Crie sua condicional"**, há os seguintes campos e opções:

* **Satisfazer todas:** se deseja que todas as condições configuradas sejam seguidas;
* **Satisfazer qualquer uma:** quando é indiferente seguir todas as condições configuradas;
* **Variável 1**: digite ou arraste um parâmetro de outro componente do fluxo para informar uma variável para comparação ou utilize uma [SMOP](https://docs.skyone.cloud/skyone-studio/integracoes/operacoes-de-dados/smop-pequenas-operacoes) (no ícone de +);
* **Condições**: comparações entre dois valores (igual, diferente de, maior que, menor que, etc);
* **Variável 2**: digite ou arraste um parâmetro de outro componente do fluxo para informar outra variável para comparação ou utilize uma [SMOP](https://docs.skyone.cloud/skyone-studio/integracoes/fluxos/modulos-ferramentais/modulo-loop-do-while) (no ícone de +);
* **Adicionar condição**: clique para adicionar mais uma condição;
* **Validar:** clique para validar as condições
* **Resultado**: informa se a condição informada é verdadeira ou falsa (**True**/**False**).

<figure><img src="https://2406186417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlGHvosl2xodpQaXzCzxY%2Fuploads%2FGheiWjESznoGvph0MOOg%2F55485307-A922-4C36-AD6E-1F68FD6CE2B7.png?alt=media&#x26;token=2d18e956-9e21-42d7-b69c-d18300fa8bc6" alt=""><figcaption><p>Exemplo de configuração</p></figcaption></figure>

#### **Parâmetro**

O parâmetro **loopCount** da operação **DO** está sempre disponível para quaisquer módulos dentro do loop e também após a execução do loop, aparecendo no lado esquerdo do modal de configuração de cada operação do fluxo, desde que as operações estejam todas conectadas pelas linhas do fluxo.

Após a finalização do loop, o parâmetro **loopCount** conterá o total de execuções menos 1 (uma vez que a variável começa em 0).

Para finalizar a configuração do módulo, clique em "**Salvar"**.

#### Exemplo <a href="#exemplo" id="exemplo"></a>

O módulo "**Loop Do While"** requer que um outro módulo esteja conectado a ele. Observe o exemplo:

<figure><img src="https://2406186417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlGHvosl2xodpQaXzCzxY%2Fuploads%2F8dZwfKILeFNb7l5GkSnn%2FDA11E313-67A1-42E0-961C-4DFFA6029894.png?alt=media&#x26;token=d9e6fb83-e311-47b3-8025-78091c758b02" alt=""><figcaption></figcaption></figure>
