Do While
Descubra mais sobre o componente Do While e saiba como utilizá-lo na Digibee Integration Platform.
Atualizado
Descubra mais sobre o componente Do While e saiba como utilizá-lo na Digibee Integration Platform.
Atualizado
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.
Dê uma olhada nas opções de configuração do componente. Parâmetros suportados por expressões Double Braces estão marcados com (DB)
.
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
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.
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.
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.
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.
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.
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.
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.
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.