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:

Linhas de execuções

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

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:

{
    "total": 0,
    "success": 0,
    "failed": 0
}

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.

[{"executionId": "p-a","result": {"parallel": "A"}}, 
{"executionId": "p-b","result": {"parallel": "B"}}, 
{"executionId": "p-c","result": {"parallel": "C"}}]
  • 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.

[{"parallel": "A"}, 
{"parallel": "B"}, 
{"parallel": "C"}]
  • 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:

[{
    "executionId": "p-a",
    "result": {
        "parallel": "A"
    }
},{
    "executionId": "p-b",
    "result": {
        "timestamp": 99999, "error": "XXXX", "code": 999
    }
},{
    "executionId": "p-c",
    "result": {
        "parallel": "C"
    }
}]
  • 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:

[{]
    "executionId": "p-a",
    "result": {
        "parallel": "A"
    }
}, {
    "executionId": "p-b",
    "result": null
}, {
    "executionId": "p-c",
    "result": {
        "parallel": "C"
    }
}]

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.

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.

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.

Atualizado