# Modos de Design e Inspeção

O Canvas tem dois modos: **Design** e **Inspeção**. Por padrão, ele abre no Modo de Design, onde você cria e edita seu fluxo. Ao executar o fluxo, o Modo de Inspeção é ativado para ajudá-lo a rastrear o caminho de execução e ver mais informações sobre cada conector.

## **Modo de Design**

O Modo de Design é onde você faz seu trabalho. Neste modo você [configura os conectores e cria o fluxo](https://docs.digibee.com/documentation/developer-guide/pt-br/development-cycle/build-overview/pipelines/how-to-create-a-pipeline). Enquanto você cria seu fluxo e antes de executá-lo pela primeira vez, apenas o Modo de Design fica ativo.

## **Modo de Inspeção**

Para ativar o Modo de Inspeção, abra o [Painel de execução](https://docs.digibee.com/documentation/developer-guide/pt-br/development-cycle/build-overview/canvas/execution-panel) no Modo de Design e execute o fluxo. O Modo de Inspeção é habilitado quando há mensagens disponíveis na execução. Uma notificação será exibida na página informando que a execução está pronta para inspeção.

{% hint style="warning" %}
O Modo de Inspeção não é ativado se:

* O fluxo não é executado.
* Não há mensagem ou o número de mensagens é insuficiente.
* O limite de 5000 mensagens foi atingido. Nesse caso, você pode limitar o número de loops ou reduzir o tamanho do pipeline.
  {% endhint %}

Uma vez executado o fluxo, você deve clicar no botão **Inspeção** na parte superior da tela para entrar no Modo de Inspeção, conforme a imagem abaixo.

<figure><img src="https://content.gitbook.com/content/cO0A6g1dOsu8BiHYqO67/blobs/xXMlszIb4ISMChRd20Fw/Modo%20de%20Inspe%C3%A7%C3%A3o.png" alt="Botão para trocar entre os modos de design e debug."><figcaption><p>Botão para acessar o Modo de Inspeção.</p></figcaption></figure>

No Modo de Inspeção, o caminho de execução é destacado por uma linha verde. Linhas tracejadas e conectores esmaecidos indicam as partes do fluxo que não foram executadas. Já os conectores vermelhos sinalizam falhas na execução.

Veja uma ilustração desses elementos visuais:

<figure><img src="https://content.gitbook.com/content/cO0A6g1dOsu8BiHYqO67/blobs/kZ47EhStKu8L3cuW7lvy/image-2.png" alt="Ilustração de uma execução no modo de debug, com linhas verdes e tracejadas, componentes esmaecidos e vermelhos."><figcaption><p>Caminho visual da execução do fluxo.</p></figcaption></figure>

Este modo é somente leitura, portanto você não pode editar o fluxo enquanto estiver nele. Para editar o fluxo, você deve voltar ao Modo de Design clicando no botão **Design**.

{% hint style="info" %}
As alterações realizadas no Modo de Design só ficam visíveis no Modo de Inspeção após a execução do fluxo novamente. Isso permite facilitar comparações, pois você pode visualizar o fluxo anterior enquanto edita o atual.
{% endhint %}

### **Navegação no Modo de Inspeção**

#### **Painel Esquerdo**

O **Painel Esquerdo** do Canvas exibe os conectores do fluxo de dois modos: **Mensagens** e **Flow Tree**.

<figure><img src="https://content.gitbook.com/content/cO0A6g1dOsu8BiHYqO67/blobs/RwwvRnsjkag6tW8aDPMJ/Mensagens%20e%20Flow%20Tree.gif" alt=""><figcaption><p>Visualização da lista de Mensagens e da Flow Tree no Painel Esquerdo.</p></figcaption></figure>

**Mensagens**

Em **Mensagens**, você pode ver os conectores executados no nível ou na iteração atual. Você pode ordenar a lista por:

* **Ordem de execução:** Os conectores são listados na ordem em que são executados.
* **Tempo de execução:** Os conectores são listados pelo seu tempo de execução em ordem decrescente (do maior para o menor).

Para ver mais detalhes sobre as mensagens de input e output, clique no conector desejado. Para localizar o conector dentro do fluxo, clique duas vezes sobre ele.

**Flow Tree**

A **Flow Tree** exibe o fluxo completo em uma estrutura hierárquica, incluindo todos os conectores (conectados ou não ao fluxo) e os subfluxos.

Na Flow Tree, você pode:

* Clicar no **ícone de foco** para localizar o conector no fluxo.
* Clicar no **ícone de engrenagem** para abrir o formulário de configuração do conector em modo leitura.

<figure><img src="https://content.gitbook.com/content/cO0A6g1dOsu8BiHYqO67/blobs/HHjb9v8PBlZu0wo21MFU/Bot%C3%A3o%20de%20foco%20e%20de%20configura%C3%A7%C3%B5es.png" alt=""><figcaption><p>Ícones de foco e engrenagem na Flow Tree.</p></figcaption></figure>

**Detalhes do conector**

Na base do painel, você pode acessar informações detalhadas sobre o conector. Estas informações podem ser acessadas de duas maneiras:

* Clicando no conector no fluxo.
* Selecionando o conector na lista de **Mensagens**.

Os detalhes disponíveis incluem:

* **Status da execução:** O status da execução, seja `Sucesso` ou `Falha`.
* **Hora de início:** A hora de início da execução do conector em `AAAA/MM/DD HH:mm:ss.SSS`.
* **Hora de término:** A hora de término da execução do conector em `AAAA/MM/DD HH:mm:ss.SSS`.
* **Tempo decorrido:** O tempo total da execução em milissegundos.

#### **Painel Inferior**

O **Painel Inferior** do Canvas fornece acesso às abas **Dados do passo** e **Logs**.

<figure><img src="https://content.gitbook.com/content/cO0A6g1dOsu8BiHYqO67/blobs/MACAdWpr8roP3coOFMtB/Painel%20Inferior.png" alt=""><figcaption><p>Painel Inferior com informações sobre o conector selecionado.</p></figcaption></figure>

### **Loops no Modo de Inspeção**

Alguns conectores usados ​​no fluxo podem criar loops. Estes conectores são:

* [For Each](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/logic/for-each)
* [Stream Excel](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/files/stream-excel)
* [Stream File Reader](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/files/stream-file-reader)
* [Stream File Reader Pattern](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/files/stream-file-reader-pattern)
* [Stream JSON File Reader](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/files/stream-json-file-reader)
* [Stream XML File Reader](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/files/stream-xml-file-reader)
* [Stream DB V3](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/structured-data/stream-db-v3)

Quando um loop é criado, você pode navegar pelos índices no menu de navegação na parte inferior da tela. As três maneiras de navegar são:

* Usando as setas.
* Clicando nos três pontos para abrir o índice desejado.
* Inserindo o índice no campo **Ir para**.

<figure><img src="https://content.gitbook.com/content/cO0A6g1dOsu8BiHYqO67/blobs/y0JX6egd5nLA33RzL4PR/Menu%20de%20navega%C3%A7%C3%A3o%20de%20loops.gif" alt="Navegação no menu com setas, paginação de índices, e campo &#x22;Ir para&#x22;."><figcaption><p>Menu de navegação em conectores com loops.</p></figcaption></figure>

O índice atual do loop é exibido em dois lugares: no menu de navegação na parte inferior central do Canvas e na trilha de navegação no canto superior esquerdo, entre colchetes. Por exemplo, “For Each 1 (onProcess) \[27]” indica que o índice atual do loop é **27**.

#### **Loop dentro de um loop**

Um fluxo pode conter loops dentro de loops. Se você estiver em um OnProcess e quiser entrar em outro OnProcess no Modo de Inspeção, pode se deparar com dois cenários diferentes:

<details>

<summary><strong>Cenário 1: Acessando o OnProcess de um conector que foi executado</strong></summary>

Suponha que você esteja no OnProcess de um conector **For Each** (chamado de **For Each A**) e visualizando o loop número 2. Neste ponto, o fluxo é:

`root > For Each A (onProcess) [2]`

Dentro do loop 2 desse OnProcess, há outro conector **For Each** (**For Each B**) que foi executado. Ao acessar o OnProcess de **For Each B**, o subfluxo exibido continuará a partir do caminho de execução do nível anterior.

O fluxo agora aparece como:

`root > For Each A (onProcess) [2] > For Each B (onProcess) [0]`

</details>

<details>

<summary><strong>Cenário 2: Acessando o OnProcess de um conector que não foi executado</strong></summary>

Agora, suponha que você esteja de volta ao OnProcess de **For Each A**, mas desta vez no loop número 5. Neste ponto, o fluxo é:

`root > For Each A (onProcess) [5]`

No loop 5, **For Each B** não foi executado, mas você ainda pode acessar seu OnProcess. O Modo de Inspeção automaticamente ajusta o subfluxo para o último caminho executado de **For Each B**.

Como **For Each B** foi executado no loop 2, a trilha de navegação é atualizada para:

`root > For Each A (onProcess) [2] > For Each B (onProcess) [0]`

Se você voltar para o nível de **For Each A**, a trilha de navegação exibirá o loop 2 em vez do loop 5.

</details>

### **Importar execução no Modo de Inspeção**

Ao importar uma execução para o Canvas, o Modo de Inspeção é ativado e você pode analisar a execução no modo somente leitura.

{% hint style="info" %}
A execução importada será aberta no Modo de Inspeção somente se a execução tiver sido exportada após o lançamento dos Modos de Design e Inspeção.
{% endhint %}
