Do While

Saiba mais sobre o conector Do While e como usá-lo na Digibee Integration Platform.

O Do While permite a construção de blocos em loop dentro de um pipeline. Ele faz parte de um conjunto de conectores que trabalham com subfluxos para executar suas funções.

Parâmetros

Dê uma olhada nos parâmetros de configuração do conector. Parâmetros suportados por expressões Double Braces estão marcados com (DB).

Parâmetro
Descrição
Valor padrão
Tipo de dado

Iteration

Define o número máximo de vezes que um loop é executado (é possível interromper o loop antes que esse número seja alcançado).

10

Integer

Timeout

Tempo máximo de execução do loop.

300000

Integer

Loop Index

Se ativado, uma propriedade "loopIndex" será inserida na mensagem apresentada em cada iteração do loop, informando o índice atual da iteração (1, 2, 3, …).

False

Booleano

Interrupt Loop On Error

Se ativado, um erro ocorrido dentro de uma iteração interromperá o loop como um todo. Caso contrário, o loop continuará a partir da próxima iteração.

True

Booleano

Definição do subfluxo a ser executado em cada iteração

Para trabalhar com esse tipo de conector, é importante considerar:

  • Subfluxo definido no bloco onProcess: o pipeline definido nesse bloco é executado a cada iteração do loop. Assim, se o loop tiver 10 iterações, o subfluxo será executado 10 vezes.

  • Subfluxo definido no bloco onException: o pipeline definido nesse bloco será executado sempre que uma iteração do loop resultar em erro.

Para definir o subfluxo a ser executado em cada iteração, basta clicar no ícone onProcess do conector Do While:

Ao clicar nesse ícone, um subfluxo será criado (ou exibido, caso já exista). Depois, basta construir o fluxo desejado de acordo com a necessidade de execução de cada iteração.

Interrompendo um loop

Para interromper um loop antes do número máximo de iterações definidas, basta informar a propriedade "loopBreak: true" no final da iteração. Se a propriedade for encontrada, o loop será interrompido.

Uma forma de informar essa propriedade é usando o conector JSON Generator, que permite definir JSONs arbitrários no fluxo do pipeline.

Quando a propriedade loopBreak: true é usada, a saída do conector ficará vazia. Para facilitar a localização dessa propriedade no seu fluxo, recomendamos nomear o conector como "loopBreak". Assim, você pode identificar rapidamente onde o loop foi interrompido ao analisar a execução.

Tratamento de erros no loop

O comportamento padrão do Do While é interromper o loop caso ocorra um erro. Erros são situações atípicas na execução de um pipeline que resultam na sua interrupção. Por exemplo, o uso de um conector Assert gera um erro no pipeline quando a condição da asserção não é atendida. Outras situações de erro ocorrem quando conectores são utilizados com a configuração Fail On Error ativada.

Conforme explicado anteriormente, é possível definir um subfluxo para tratar erros. A definição desse subfluxo é feita através do ícone onException do conector Do While:

A entrada desse subfluxo será alimentada com uma mensagem de erro, que informará o que ocorreu na iteração e o índice da iteração (loopIndex) que causou a falha.

{
  "timestamp": <timestamp do erro>,
  "error": <mensagem de erro>,
  "code": 500,
  "loopIndex": <índice da iteração onde ocorreu o erro>
}

Cenários de uso do conector Do While com tratamento de erros

Propriedade "Interrupt Loop On Error" ativada e nenhum subfluxo definido em onException

  • O subfluxo será imediatamente interrompido;

  • Um erro será lançado pelo conector Do While;

  • Nenhum outro conector será invocado após o Do While.

Propriedade "Interrupt Loop On Error" ativada e um subfluxo definido em onException

  • O subfluxo será imediatamente interrompido;

  • O subfluxo definido em onException será executado, e sua saída alimentará o conector seguinte ao Do While;

  • O conector seguinte ao Do While será invocado.

Propriedade "Interrupt Loop On Error" desativada e nenhum subfluxo definido em onException

  • A iteração onde ocorreu o erro será interrompida;

  • Uma mensagem de erro padrão será informada na entrada da próxima iteração, e o loop continuará normalmente.

Propriedade "Interrupt Loop On Error" desativada e um subfluxo definido em onException

  • A iteração onde ocorreu o erro será interrompida;

  • O subfluxo definido em onException será executado, e sua saída alimentará a próxima iteração;

  • O loop continuará normalmente.

Erro durante a execução do subfluxo onException

  • O loop será interrompido;

  • O erro será lançado para o próximo conector ao qual o Do While está associado;

  • Se o Do While estiver no fluxo principal do pipeline, então o pipeline será interrompido;

  • Se o Do While estiver dentro de um conector que possui um subfluxo, então o subfluxo onException será invocado, e o erro será informado na entrada desse pipeline.

Atualizado

Isto foi útil?