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

# Preview

> Execute uma regra de negócio com um dado de exemplo e veja exatamente o que ela retorna antes de salvar

A página de criação e edição de toda regra de negócio tem um painel de **Preview** à direita, ao lado do formulário. Ele responde a uma única pergunta: o que esta regra retorna para este dado? Monte o dado de entrada, clique em **Executar**, e o painel mostra o valor que a regra retornou.

## Quando usar

* Conferir uma regra nova com um registro real antes de salvá-la
* Ver o que uma alteração faz em uma regra existente antes de salvar
* Reproduzir um erro de transformação dos [logs](/pt-br/features/monitoring-debug/monitoring#erro-de-transformação) colando o datapoint que o causou

## O dado de entrada

O dado de entrada é o objeto `context` que a regra recebe, organizado em blocos JSON editáveis:

| Bloco                   | Na regra                       | Observações                                                                                                              |
| ----------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
| **datapoint**           | `context.datapoint`            | Sempre presente e obrigatório                                                                                            |
| **Parâmetros de query** | `context.params`               | Opcional; adicione ou remova com o próprio botão                                                                         |
| **Enriquecimentos**     | `context.{{ enrichmentName }}` | Quantos forem necessários. Cada um tem nome e corpo: um enriquecimento chamado `stock` é `context.stock` dentro da regra |

Enriquecimentos novos são nomeados `enrichment_1`, `enrichment_2`, … pela posição. Para renomear, clique no nome, digite o novo nome e pressione **Enter**.

**Executar** fica desabilitado enquanto algum bloco tiver JSON inválido, enquanto **datapoint** estiver vazio ou enquanto o editor de código estiver vazio. O painel informa o motivo.

## Preenchendo o dado a partir de uma integração

Em vez de digitar o dado, escolha uma das suas integrações no dropdown **Integração** no topo do painel. Integrações habilitadas aparecem primeiro (marcadas como **On**), depois as demais por nome, versão mais recente primeiro. O painel então:

1. Busca a primeira página da extração da integração e coloca o primeiro registro em **datapoint**
2. Preenche **Parâmetros de query** com os parâmetros de extração da integração
3. Executa cada enriquecimento da integração para esse registro e preenche um bloco por enriquecimento, com o mesmo nome da integração

Cada bloco buscado mostra pequenos chips com o método HTTP, status, latência e tamanho da chamada por trás dele.

### Navegando pelos registros

Um navegador abaixo de **datapoint** percorre os registros da primeira página (`registro 1 de 1000`). Clique no número para digitar uma posição e ir direto para aquele registro. Ao mudar de registro, os enriquecimentos são buscados novamente para o novo registro.

<Note>
  Apenas a primeira página da extração está disponível no preview.
</Note>

### Editando dados buscados

Blocos buscados continuam editáveis. Assim que o JSON de um bloco diferir do que a integração entregou, a linha do nome passa a exibir **editado**; mudar de registro ou buscar novamente substitui o bloco e limpa a marcação. O que você editou é exatamente o que executa.

O ícone de edição ao lado do dropdown abre a página de edição da integração em uma nova aba. Limpar a seleção mantém o que foi preenchido como dado manual.

## O que executa

| Situação                                  | O que executa                                                   | O que você vê                   |
| ----------------------------------------- | --------------------------------------------------------------- | ------------------------------- |
| Regra salva, código sem alteração         | A regra salva                                                   | Seu valor em **Resultado**      |
| Regra salva, código editado mas não salvo | Tanto o código do editor quanto a regra salva, com o mesmo dado | **Rascunho** acima de **Atual** |
| Regra nova, ainda não salva               | O código do editor                                              | Seu valor em **Resultado**      |

Com **Rascunho** e **Atual**, cada espaço mostra o próprio resultado: um rascunho que falha mostra seu erro acima do valor da regra salva, e vice-versa. Quando os dois valores são idênticos, uma nota avisa que o rascunho corresponde à regra atual.

O cabeçalho mostra quando a regra executou pela última vez.

### Lendo o resultado

O painel mostra o valor de retorno exatamente como a regra o produziu: um objeto, uma string, um número ou um booleano. Os valores são exibidos, nunca interpretados.

<Info>
  O preview de uma regra de filtro é simplesmente `true` ou `false`. Se isso remove ou mantém o registro é decidido pela etapa de filtro da integração; veja [Filtrar Dados](/pt-br/features/business-rules/filter).
</Info>

## Quando uma regra falha

Se a regra lançar um erro, o painel mostra **Regra falhou** com a mensagem de erro tal como retornada, por exemplo `bladData is not defined`, e o editor de código sublinha toda ocorrência dos identificadores citados na mensagem. Os sublinhados somem na próxima execução ou assim que você editar o código.

Se uma integração não puder ser carregada, ou sua extração não retornar registros, o painel avisa. Uma falha no preenchimento nunca impede digitar o dado manualmente.

## O que é lembrado

O preview mantém seu estado por regra e por aba do navegador:

* Uma integração escolhida é selecionada de novo, e seus dados buscados novamente no mesmo registro, quando você volta àquela regra na mesma aba
* Dado digitado manualmente é restaurado como foi digitado
* Edições feitas sobre os dados de uma integração não são lembradas

Fechar a aba esquece tudo; outras abas são independentes.

## Limitações

* Apenas a primeira página da extração está disponível

## Relacionados

<CardGroup cols={2}>
  <Card title="Visão Geral" icon="code" href="/pt-br/features/business-rules/overview">
    O objeto `context` e as bibliotecas auxiliares
  </Card>

  <Card title="Enriquecimento" icon="layer-group" href="/pt-br/features/extract/enrichment">
    Como os enriquecimentos são nomeados e anexados a um datapoint
  </Card>
</CardGroup>
