Atualizado
Isto foi útil?
Atualizado
Isto foi útil?
O For Each realiza um loop dentro de uma estrutura JSON, processando cada elemento do array em um subpipeline. Veja um .
Dê uma olhada nas opções de configuração do componente. Parâmetros suportados por estão marcados com (DB)
.
A expressão acima mostra como a mensagem recebida pelo componente pode ser filtrada: neste exemplo, o array é a raiz do objeto e somente os elementos cujo atributo status seja EXPIRED serão processados pelo componente For Each.
Obtém todo o conteúdo do body da mensagem recebida.
Obtém o conteúdo de um array products que está dentro do body da mensagem recebida.
Para definir o subpipeline que será executado a cada iteração, basta clicar no ícone onProcess do componente For Each.
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.
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 For Each:
Não é possível interromper a execução de todo o loop For Each. A interrupção pode ser feita apenas na iteração atual, através de componentes que possuam o parâmetro Fail On Error ativado dentro dos subpipelines onProcess e onException.
o loop será interrompido;
o erro será lançado para o próximo componente ao qual o componente For Each esteja associado;
caso o For Each esteja no fluxo principal do pipeline, então o pipeline será interrompido;
se o For Each estiver dentro de um componente que possui subpipeline, então o subpipeline onException será invocado e o erro será informado na entrada desse subpipeline.
O For Each aceita qualquer estrutura de JSON que contenha um array. Se o array não for a raiz do objeto, então uma expressão JSON Path deve ser definida para localizar e filtrar o array. Caso o componente For Each não receba um array, nenhum processamento será executado.
total: número total de elementos processados.
success: número total de elementos processados com sucesso.
failed: número total de elementos que não puderam ser processados.
Para informar que uma linha foi processada corretamente e iterar o valor do campo "success"
, cada execução do subpipeline onProcess deve responder com { "success": true }
ao seu término. Somente desta forma a mensagem de saída representará corretamente o resultado dos processamentos.
Caso sejam utilizados componentes para manipular dados de cada elemento do array no subpipeline do For Each e a opção Parallel Execution esteja ativa, é necessário que a opção Scoped do esteja ativa para que cada execução em paralelo acesse os seus respectivos dados.
O comportamento padrão do For Each é interromper a execução 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 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.
Conheça o componente e saiba como utilizá-lo.
JSON Path Expression
Expressão que é aplicada à estrutura JSON recebida pelo componente For Each, filtrando-a. O For Each pode receber um objeto que possua vários elementos e a expressão JSON Path permite obter apenas aqueles que atenderem a uma condição específica. Para aprimorar a utilização do componente For Each, recomendamos que as expressões utilizadas no parâmetro JSON Path Expression sejam validadas utilizando a seguinte referência: https://jsonpath.com/.
$
String
Element Identifier
Elemento único que identifica a linha em processamento (por exemplo, elemento "id").
N/A
String
Parallel Execution
Quando habilitada, a opção faz com que elementos do array recebido pelo For Each sejam processados em paralelo, com um limite de até 10 execuções concorrentes - ou seja, caso o array recebido pelo componente For Each tenha 20 elementos, os 10 primeiros terão seu processamento iniciado imediatamente.
Assim que um desses processamentos terminar, o próximo elemento do array será processado e assim por diante, até que todo o array tenha sido processado. Caso a opção Parallel Execution esteja desabilitada, os elementos do array recebido pelo For Each são processados em série - é preciso que o primeiro tenha sido processado para que o processamento do segundo elemento possa começar.
False
Booleano
Fail On Error
A habilitação desse parâmetro suspende a execução do pipeline apenas quando há uma ocorrência grave na estrutura da iteração, impedindo a sua conclusão por completo. A ativação do parâmetro Fail On Error não tem ligação com erros ocorridos nos componentes utilizados para a construção dos subpipelines (onProcess e onException). Se você quiser que a execução seja interrompida para qualquer tipo de ocorrência de erro, avalie a utilização do componente Do While.
False
Booleano