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

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.

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

  • Step Name: a propriedade pode ser utilizada para documentar, pois ela se torna o texto apresentado no componente no pipeline canvas.

  • Aggregation Type: poderá ser configurado como SUMMARY ou COLLATE; veja mais abaixo.

  • Show Execution Ids: caso seja habilitada, a propriedade fará com que o id de cada linha de execução seja informado no resultado.

  • Report Exceptions: caso seja habilitada, a propriedade fará com que quaisquer exceções sejam informadas no resultado; veja mais abaixo.

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

  • 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.

  • Execution Id: define o id de cada uma das execuções paralelas

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 "sucesso", uma propriedade "success" com o valor “true” deverá ser informada no final da execução.

  • Saída com Aggregation Type = COLLATE e Show Execution Ids = 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 Ids = 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 (adicionar link para ele). 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.

Encontrou sua resposta?