> For the complete documentation index, see [llms.txt](https://docs.digibee.com/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/connectors/logic/block-execution.md).

# Block Execution

O **Block Execution** declara um trecho de *pipeline* para um fim específico. Ele pode ser usado para:

* separar logicamente trechos de um *pipeline* extenso de maneira que o seu comportamento se torne mais fácil de entender;
* permitir que os diferentes caminhos criados por componentes de desvio de fluxo possam se unir ao final do trecho declarado (mais detalhes adiante);
* declarar um trecho de *pipeline* para tratamento de erros específicos.

## Parâmetros

O **Block Execution** não possui nenhuma configuração específica para o seu funcionamento, bastando apenas construir os *subpipelines onProcess* e *onException*.

## Subpipelines

O **Block Execution** faz parte de um conjunto de componentes que trabalham com *subpipelines* para executar as suas funções. Para mais informações, [leia a documentação sobre Subpipelines](/documentation/developer-guide/pt-br/development-cycle/build-overview/pipelines/subpipelines.md).&#x20;

Para trabalhar com este tipo de componente, você precisa levar em consideração 2 conceitos importantes:

* **Subpipeline definido no bloco onProcess:** o *pipeline* definido nesse bloco é o trecho de execução do componente.
* **Subpipeline definido no bloco onException:** o *pipeline* definido nesse bloco é executado sempre que ocorrer uma falha no bloco *onProcess*. Veja mais detalhes abaixo.

## Definindo o subpipeline executado como parte do bloco <a href="#definindo-o-subpipeline-executado-como-parte-do-bloco" id="definindo-o-subpipeline-executado-como-parte-do-bloco"></a>

Para definir o *subpipeline* a ser executado, basta clicar no ícone **onProcess** do componente:

<figure><img src="/files/GOzth9Fflsg4bfJHdsLl" alt=""><figcaption><p>O ícone <em>onProcess</em> fica destacado acima do componente</p></figcaption></figure>

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.

{% hint style="info" %}
A entrada desse *subpipeline* será alimentada com a mensagem imediatamente anterior ao **Block Execution**.
{% endhint %}

## Utilizando o Block Execution para unir caminhos diferentes de um componente de desvio de fluxo <a href="#utilizando-o-block-execution-para-unir-caminhos-diferentes-de-um-componente-de-desvio-de-fluxo" id="utilizando-o-block-execution-para-unir-caminhos-diferentes-de-um-componente-de-desvio-de-fluxo"></a>

Quando um componente de desvio de fluxo é utilizado, assim como o [**Choice**](/documentation/connectors-and-triggers/pt-br/connectors/logic/choice.md), múltiplos caminhos são criados no *pipeline* para atender ao desvio de fluxo desejado. Por exemplo:

<figure><img src="/files/5GM84mQy2kfSyKxqeVfJ" alt=""><figcaption><p>Exemplo de <em>pipeline</em> usando múltiplos caminhos</p></figcaption></figure>

No caso acima, você pode ver 2 desvios de fluxo: **path 1** e **path 2**, que levam a caminhos completamente diferentes no *pipeline*. Suponha que seja necessário unir esses caminhos para continuar a execução do *pipeline*. O componente **Block Execution** tem a função de realizar esse agrupamento de caminhos diferentes em um bloco de execução separado. Quando um dos caminhos terminar, o controle volta para o **Block Execution** que, por sua vez, é seguido pelo próximo componente. Veja:

<figure><img src="/files/NzhN6bqQ0b3Lx1rcQZYa" alt=""><figcaption><p>Exemplo do Block Execution sendo usado para agrupar caminhos diferentes</p></figcaption></figure>

Nesse outro exemplo acima, o **Block Execution** é seguido pelo [**JSON Generator**](/documentation/connectors-and-triggers/pt-br/connectors/tools/json-generator.md). Dentro do *subpipeline onProcess* do **Block Execution**, foi utilizado um componente **Choice** com desvios.

Quando os desvios chegam ao final, eles encerram o **Block Execution**, que retorna ao *pipeline* principal e executa o componente seguinte - nesse caso, o **JSON Generator**.

Dessa forma, é possível unir e organizar *subpipelines* que contenham fluxos com ramificações.

## Tratamento de erros <a href="#tratamento-de-erros" id="tratamento-de-erros"></a>

Assim como todos os outros componentes que possuem os *subpipelines* *onProcess* e *onException*, o **Block Execution** também faz o tratamento de erros por meio da execução do *subpipeline* *onException*.

Um erro pode ser ocasionado por outros componentes quando eles identificam situações adversas. Geralmente os componentes possuem uma propriedade de configuração denominada **Fail On Error**, que controla se você deseja ou não gerar um erro que possa ser tratado em fluxos *onException*.

Assim, quando um componente "lança" um erro e está com a propriedade **Fail On Error** ativada, o **Block Execution** intercepta o erro e o envia para tratamento no *subpipeline* *onException*.

Estas são as situações especiais que você deve levar em consideração:

* se um fluxo *onException* não for definido, o **Block Execution** simplesmente repassa o erro adiante para que outro componente com execução por *subpipeline* o trate. Por outro lado, se o fluxo principal do *pipeline* for utilizado, então o *pipeline* é encerrado com o erro;
* se um novo erro ocorre durante o *subpipeline onException*, o **Block Execution** também repassa o erro adiante para que outro componente com execução por *subpipeline* o trate. Mas se o fluxo principal do *pipeline* for utilizado, o *pipeline* é igualmente encerrado com o erro.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/connectors/logic/block-execution.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
