Do While

Descubra mais sobre o componente Do While e saiba como utilizá-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 componentes que trabalham com subpipelines para executar as suas funções.

Parâmetros

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

ParâmetroDescriçãoValor padrãoTipo de dado

Iteration

Define o número máximo de vezes que o loop é executado (é possível parar o loop antes desse número ser atingido).

10

Inteiro

Timeout

Tempo máximo que o loop deverá executar

300000

Inteiro

Loop Index

Se a opção estiver ativada, uma propriedade “loopIndex” será inserida na mensagem apresentada a cada iteração do loop e informará o índice da iteração atual (1, 2, 3, …).

False

Booleano

Interrupt Loop On Error

Se opção for ativada, um erro ocorrido dentro de uma iteração causará a interrupção do loop como um todo. Do contrário, o loop continuará a partir da próxima iteração.

True

Booleano

Definindo o subpipeline que é executado a cada iteração

Para trabalhar com esse tipo de componente, é importante levar em consideração:

  • Subpipeline definido no bloco onProcess: o pipeline definido nesse bloco é executado a cada iteração do loop. Portanto, se o loop tem 10 iterações, o subpipeline é executado 10 vezes.

  • Subpipeline definido no bloco onException: o pipeline definido nesse bloco é executado sempre que uma iteração do loop resultar em uma falha.

Para definir o subpipeline que será executado a cada iteração, basta clicar no ícone onProcess do componente Do While:

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

A entrada desse subpipeline será alimentada com a mensagem imediatamente anterior ao Do While. Isso acontecerá na execução da iteração #1 do loop. Nas demais iterações, a mensagem apresentada será a mensagem final da iteração anterior e assim por diante. Se Loop Index estiver ativo, uma propriedade loopIndex será inserida na mensagem informando a iteração atual.

Interrompendo um loop

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

Uma maneira de informar essa propriedade é usando o componente JSON Generator, que permite a definição de JSONs arbitrários no fluxo do pipeline.

Tratando erros no loop

O comportamento padrão do Do While é interromper o loop caso algum erro seja encontrado. Erros são situações atípicas na execução de um pipeline que incorrem em uma parada. Por exemplo, o uso de um componente Assert causa um erro no pipeline quando a condição de asserção não for satisfeita. Outras situações de erro ocorrem quando são utilizados componentes com a configuração Fail On Error habilitada.

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

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

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

Cenários de utilização do componente Do While com tratamento de erros

Propriedade "Interrupt loop on error" habilitada e nenhum subpipeline definido em onException

  • o pipeline será interrompido imediatamente.

  • um erro será emitido a partir do componente Do While.

  • nenhum outro componente será invocado após o Do While.

Propriedade "Interrupt loop on error" habilitada e um subpipeline definido em onException

  • o pipeline será interrompido imediatamente.

  • o subpipeline definido em onException será executado e a saída dele alimentará o próximo componente após o Do While.

  • o componente após o Do While será invocado.

Propriedade "Interrupt loop on error" desabilitada e nenhum subpipeline 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á a ser executado normalmente.

Propriedade "Interrupt loop on error" desabilitada e um subpipeline definido em onException

  • a iteração onde ocorreu o erro será interrompida.

  • o subpipeline definido em onException será executado e a saída dele alimentará a próxima iteração.

  • o loop continuará a ser executado normalmente.

Erro durante o subpipeline onException

  • o loop será interrompido.

  • o erro será lançado para o próximo componente ao qual o componente Do While esteja associado.

  • caso o Do While esteja no fluxo principal do pipeline, então o pipeline será interrompido.

  • se o Do While estiver dentro de um componente que possui subpipeline, então o subpipeline onException será invocado e o erro será informado na entrada desse subpipeline.

Last updated