Paralelo
Executa os blocos de dentro do contêiner várias vezes ao mesmo tempo, uma para cada item ou um número fixo de vezes.
O que faz
O Paralelo é um contêiner: os blocos colocados dentro dele rodam em vários ramos ao mesmo tempo, um para cada item de uma lista ou um número fixo de ramos, em lotes de até 20. Quando todos os ramos terminam, o fluxo segue com os resultados reunidos.
Quando usar: Use quando cada item pode ser processado de forma independente e você quer terminar mais rápido, como consultar vários fretes ao mesmo tempo.
Exemplo de situação: Cotar o frete de vários pedidos ao mesmo tempo e reunir as respostas.
As execuções paralelas não têm ordem garantida entre si. Não use quando uma repetição depende do resultado da anterior; nesse caso, use o Laço.
Antes de começar
Conexão necessária: Sem conexão externa obrigatória.
Escolha o tipo: quantidade fixa de ramos ou um ramo para cada item de uma lista.
Passo a passo
- Na aba Blocos, arraste Paralelo para o desenho.
- Escolha o tipo: quantidade fixa de ramos ou um ramo para cada item de uma lista.
- Informe a quantidade ou a lista (ex.:
<postgresql.rows>) e, se quiser, o tamanho do lote (de 1 a 20 ramos por vez). - Arraste para dentro do contêiner os blocos que cada ramo deve executar e ligue-os ao ponto de início dele.
- Ligue a saída do contêiner à etapa que deve receber os resultados de todos os ramos.
- Execute com poucos itens primeiro e confira os ramos no terminal.
Operações
| Operação | O que faz |
|---|---|
| Quantidade em paralelo | Executa os blocos de dentro em um número fixo de ramos ao mesmo tempo. |
| Paralelo para cada item | Cria um ramo para cada item da lista informada. |
Campos
Tipo de paralelo
ObrigatórioEscolhe se os ramos são definidos por uma quantidade fixa ou pelos itens de uma lista.
- Opções:
- Quantidade em paralelo · Paralelo para cada item
- Padrão:
- Quantidade em paralelo
Quantidade em paralelo
Obrigatório conforme a operaçãoQuantos ramos executar ao mesmo tempo.
- Aparece em:
- Quantidade em paralelo
- Padrão:
- 5
- Exemplo:
- 3
Itens da coleção
Obrigatório conforme a operaçãoLista cujos itens são distribuídos entre os ramos, um item por ramo.
- Aparece em:
- Paralelo para cada item
- Exemplo:
- <postgresql.rows>
Tamanho do lote paralelo
Quantos ramos podem rodar ao mesmo tempo (de 1 a 20). Os demais esperam a vez.
- Exemplo:
- 5
Saídas
Para usar um resultado deste bloco em uma etapa seguinte, digite < no campo e escolha o bloco e o campo. A referência tem o formato <parallel.index>: antes do ponto vai o nome do bloco no seu fluxo, em minúsculas, sem espaços e sem acentos.
| Referência | Tipo | O que contém |
|---|---|---|
<parallel.index> | number | Número do ramo atual, começando em 0. Disponível só para os blocos de dentro. |
<parallel.currentItem> | any | Item da lista entregue a este ramo (tipo Paralelo para cada item). |
<parallel.items> | array | Lista completa distribuída entre os ramos. |
<parallel.results> | array | Resultados de todos os ramos, disponíveis para a etapa ligada depois do contêiner. |
Exemplo de uso
Objetivo: Cotar o frete de vários pedidos ao mesmo tempo.
- Tipo de paralelo
- Paralelo para cada item
- Itens da coleção
- <postgresql.rows>
- Tamanho do lote paralelo
- 5
Os valores são ilustrativos. Teste primeiro com dados fictícios ou de homologação.
Erros comuns e como resolver
- Os blocos de dentro não executam
- Os blocos precisam estar dentro do contêiner e ligados ao ponto de início dele. Blocos soltos dentro do contêiner são ignorados.
- A referência ao item atual chega vazia
- Confira o tipo escolhido: o item atual só existe quando o contêiner percorre uma coleção. Confira também se a coleção é uma lista válida (por exemplo, a saída rows de um bloco de banco).
- O resultado final veio em formato inesperado
- A saída results é uma lista com o resultado de cada repetição, na ordem em que foram executadas. Use um bloco Transformar dados para juntar ou filtrar os itens.