Parallel Execution

Descubra mais sobre o componente Parallel Execution e saiba como utilizá-lo na Digibee Integration Platform.

O Parallel Execution permite a configuração de linhas de execução paralelas dentro do fluxo do pipeline.

Parâmetros

Esse componente tem duas etapas de configuração: a dos parâmetros que definem o comportamento geral das execuções e a dos parâmetros específicos das linhas de execuções.

Componente

Dê uma olhada nos parâmetros de configuração do componente:

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

Aggregation Type

Poderá ser configurado como SUMMARY ou COLLATE; veja mais abaixo.

COLLATE

String

Show Execution IDs

Caso seja habilitada, a propriedade fará com que o ID de cada linha de execução seja informado no resultado.

True

Booleano

Report Exceptions

Caso seja habilitada, a propriedade fará com que quaisquer exceções sejam informadas no resultado; veja mais abaixo.

True

Booleano

Linhas de execuções

Agora dê uma olhada nos parâmetros de configuração das linhas de execuções:

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

Description

A propriedade pode ser utilizada para documentar as linhas de execuções, pois ela se torna o texto apresentado em cada linha no pipeline canvas.

N/A

N/A

Execution ID

Define o ID de cada uma das execuções paralelas.

N/A

N/A

Fluxo de mensagens

Entrada

Não espera nenhum payload específico na entrada desse componente. No entanto, a entrada será informada a cada linha de execução paralela.

Saída

  • Saída com Aggregation Type = SUMMARY

Neste caso, somente um sumário sobre cada invocação paralela será exibido:

Um sumário será informado no final da execução de todas as linhas paralelas. Para que a linha de execução seja considerada como "success", uma propriedade "success" com o valor “true” deverá ser informada no final da execução.

  • Saída com Aggregation Type = COLLATE e Show Execution ID = verdadeiro

Neste caso, o resultado de cada execução estará disponível como um item do array identificado com a propriedade executionId, que define o caminho percorrido por aquela execução e “result” contendo o resultado dela.

  • Saída com Aggregation Type = COLLATE e Show Execution ID = falso

Neste caso, o resultado de cada execução será informado como um item do array sem a discriminação de qual caminho foi percorrido.

  • Saída com erro e Report Exceptions = verdadeiro

Este caso só tem relevância quando usado com Aggregation Type = COLLATE.

Caso um erro aconteça durante a execução da linha paralela p-b, o erro será informado na saída:

  • Saída com erro e Report Exceptions = falso

Este caso só tem relevância quando usado com Aggregation Type = COLLATE.

Caso um erro aconteça durante a execução da linha paralela p-b, null será informado como resultado:

Parallel Execution em ação

Veja abaixo como o componente se comporta em determinadas situações e as suas respectivas configurações.

Unindo o resultado das execuções paralelas

Para unir o resultado das execuções paralelas, é importante configurar o componente Parallel Execution dentro de um Block Execution. Ao final do Block Execution, todas as execuções paralelas serão sincronizadas e o resultado será conforme a configuração Aggregation Type.

Exemplo do Parallel Execution configurado dentro de um Block Execution (onProcess)

Parallel Execution é utilizado no fluxo principal do pipeline

Caso o componente seja utilizado no fluxo principal do pipeline, então as linhas de execução paralelas serão "unidas" ao final da execução do pipeline e o mesmo será terminado com o resultado conforme a configuração Aggregation Type.

Exemplo do Parallel Execution configurado no fluxo principal do pipeline

Parallel Execution é utilizado dentro de outro Parallel Execution

Neste caso, novas linhas de execução paralelas serão iniciadas e "unidas" ao fim da linha de execução paralela que continha o Parallel Execution mais interno. O Parallel Execution mais externo somente unirá as suas respectivas linhas quando as mais internas finalizarem.

Exemplo do uso conjunto de dois componentes Parallel Execution

Isto foi útil?