> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tela.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Condições e caminhos

> Roteie uma execução com condições, operadores e Senão, encerre caminhos com Parar e junte-os com Conectar

Uma etapa de **Condição** olha para os dados e envia a execução por um entre vários **caminhos**. Cada caminho tem a própria sequência de etapas. Um caminho termina na sua última etapa, com um **Parar**, ou ao **Conectar** a uma etapa de outro caminho.

No exemplo desta seção, **Route by value** verifica `Extract Data › total_value`. Acima de 100.000, a execução vai para **Draft Escalation Note**; senão, vai para **Approval Letter**.

![Etapa de Condição com a condição High value e o caminho Senão, cada um com uma etapa](https://mintcdn.com/meistrari/M2w7BduKZAFA1Sbx/images/pt/workflow/overview-graph.png?fit=max\&auto=format\&n=M2w7BduKZAFA1Sbx\&q=85\&s=b4c331b4e926191cb100f15d02a3cec8)

## Adicionando uma Condição

**1. Adicione a etapa**

Clique em **+** abaixo da etapa cuja saída você quer usar para rotear e escolha **Condição** no grupo **Módulos**. Dê um nome, por exemplo `Route by value`.

**2. Adicione uma condição**

Clique em **Adicionar Condição**. Cada condição tem um **Nome da condição** (`High value`) e uma **Expressão da condição**. O nome é o que você vai ver nos resultados e em Depurar, e também é a saída da etapa de Condição.

**3. Monte a expressão**

No modo **Seletores**, escolha uma variável (uma Entrada ou a saída de uma etapa, até o nível do atributo), um operador e um valor. Adicione mais linhas para exigir várias coisas ao mesmo tempo; as linhas são combinadas com **E**.

Os seletores comparam texto e booleanos. Para comparar números, como em High value, clique em **Mudar para Código** e escreva `input["Extract Data"].total_value > 100000`. Veja o [Modo código](#modo-codigo).

**4. Preencha os caminhos**

Cada condição ganha o próprio caminho, mais o caminho **Senão** para quando nenhuma condição bate. Clique em **+** dentro de um caminho para adicionar etapas a ele, exatamente como no fluxo principal.

As condições são avaliadas **em ordem**, e a primeira que bate vence. Coloque a condição mais específica primeiro.

## Operadores

| Operador | Bate quando | Funciona com |
| - | - | - |
| contém / não contém | o texto inclui (não inclui) o valor | texto, listas |
| igual / diferente | o valor é exatamente (não é exatamente) o que você digitou | texto |
| começa com / termina com | o texto começa (termina) com o valor | texto |
| é verdadeiro / é falso | o atributo é um booleano sim (não); não precisa de valor | booleanos |

A lista de operadores não tem comparações numéricas (maior que, menor que). Para rotear por um número, use o [Modo código](#modo-codigo).

> [!TIP]
>
> Compare com o que a etapa anterior realmente produz. Se `total_value` é um atributo **número** no Formato de Saída de Extract Data, `total_value > 100000` funciona no modo código. Se ele é texto como `"R$ 125.000,00"`, nenhuma comparação numérica vai funcionar: corrija o Formato de Saída (ou normalize o valor em uma etapa de [Execução de Código](https://docs.tela.com/pt/workflow/code-execution.md)) em vez de brigar com a Condição.

## Modo código

Clique em **Mudar para Código** para escrever a expressão em JavaScript em vez de seletores. A expressão precisa resultar em verdadeiro ou falso. Entradas e saídas das etapas ficam disponíveis em um objeto `input` cujas chaves são os nomes. É assim que você compara números:

```javascript theme={null}
input["Extract Data"].total_value > 100000
```

Você também pode combinar condições:

```javascript theme={null}
input["Extract Data"].total_value > 100000 && input["Extract Data"].has_penalty_clause === true
```

```javascript theme={null}
input["Assess Contract"].answers.contract_type.choice === "services" || input["requester"].endsWith("@legal.example.com")
```

O modo código é o caminho para combinar linhas com **OU**, para comparar dois valores entre si, ou para testar uma probabilidade da Classificação (`input["Assess Contract"].answers.has_non_compete.noul > 0.5`). **Mudar para Seletores** desfaz a troca, desde que os seletores consigam representar a expressão.

> [!NOTE]
>
> Para desenvolvedores: no Workflow salvo, uma condição em seletores é armazenada como `referência|operador|valor` (por exemplo `step://<id>?path=counterparty|contains|Initech`, várias linhas unidas por `&&`), e uma condição em código como a expressão JavaScript com `type: "code"`. As duas são avaliadas no mesmo sandbox da Execução de Código.

## Senão

O caminho **Senão** (**Condição padrão** na configuração) roda quando nenhuma condição bateu. Ele sempre existe; você não precisa colocar etapas nele. Um Senão vazio significa que a execução simplesmente termina ali quando nada bate.

No exemplo, o caminho Senão contém **Approval Letter**: todo contrato que não é de alto valor recebe uma carta.

## Como os caminhos terminam

Um caminho pode terminar de três formas:

* **Na sua última etapa.** Não é preciso nada de especial. A execução termina ali, e a saída dessa etapa é o resultado da execução.
* **Com Parar.** Adicione **Parar** (grupo **Ações**) para encerrar o Workflow explicitamente naquele ponto: "Parar e finalizar o workflow nesta etapa". Use quando uma condição significa "não fazer mais nada", por exemplo uma condição `Not a contract` que não deve gerar nada. Parar não produz saída.
* **Com Conectar.** Escolha **Conectar** em um caminho para ligá-lo a uma etapa de outro caminho. Daquela etapa em diante, os dois caminhos compartilham as mesmas etapas. Use quando os caminhos diferem só no meio: por exemplo, tanto o caminho de escalonamento quanto o de aprovação podem Conectar a uma etapa final **Register Decision** que arquiva o resultado.

![Condição com três caminhos: um termina em Parar, outro se conecta a uma etapa de outro caminho](https://mintcdn.com/meistrari/M2w7BduKZAFA1Sbx/images/pt/workflow/variants-graph.png?fit=max\&auto=format\&n=M2w7BduKZAFA1Sbx\&q=85\&s=6414fb325afb28198507f3e4efc4a2b5)

> [!NOTE]
>
> Etapas têm uma entrada e uma saída, então você não consegue desenhar duas etapas rodando em paralelo depois de uma Condição nem voltar para uma etapa anterior. Paralelismo é a **Execução paralela** nas configurações do Workflow ou um **Mapear**; uma repetição sobre uma lista é um Mapear.

## Como os resultados mudam por caminho

Só as etapas do caminho seguido rodam. No painel de resultado e em Depurar, as etapas dos outros caminhos aparecem como **Pulado**, e a Condição mostra qual condição **Correspondeu** e qual **Não correspondeu**, com os **Valores referenciados** que ela comparou.

A consequência para quem consome o resultado: um contrato de alto valor devolve a nota de escalonamento, um normal devolve a carta gerada. A saída da execução é a última etapa que de fato rodou, então dois caminhos podem produzir dois formatos diferentes. Se o Workflow alimenta um App ou um cliente de API, faça uma destas coisas:

* faça a última etapa de cada caminho produzir os mesmos atributos (mesmo Formato de Saída), ou
* Conecte os caminhos em uma etapa final que produz o resultado, ou
* leia a saída da etapa específica de que você precisa em vez do resultado da execução; veja [Saídas e resultados](https://docs.tela.com/pt/workflow/outputs-and-results.md).

## Depurando uma Condição

Depois de uma execução, abra a Condição no painel de resultado ou em **Depurar**. Você vê cada condição com o status (**Correspondeu**, **Não correspondeu**, **Não avaliado** para as condições depois da que bateu), a expressão como foi **Avaliada como**, com os valores reais, e se o **Senão** foi **Seguida**. A saída da etapa de Condição é o nome da condição que bateu, ou `Default`, que você pode referenciar nas etapas seguintes ou na Execução de Código (`input["Route by value"]`).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.