# Modelando uma automação no produto

Boa parte da qualidade de uma automação no TunnelHub vem da modelagem no produto, não apenas do código.

## Ordem recomendada

Um fluxo prático costuma seguir esta sequência:

1. escolher o ambiente;
2. criar ou selecionar um pacote;
3. cadastrar systems;
4. definir parâmetros;
5. criar Tabelas De/Para e Sequências, quando fizer sentido;
6. criar a automação;
7. associar os recursos necessários;
8. configurar triggers e notificações.

## Pacote

Use o pacote como agrupador funcional. Ele deve refletir domínio, cliente, iniciativa ou contexto de manutenção.

## Systems

Cadastre um system quando a automação depender de uma conexão externa reutilizável.

Exemplos comuns:

* API HTTP;
* FTP/SFTP;
* banco de dados;
* SOAP;
* SAP RFC.

Boas práticas:

* usar `internalName` estável;
* separar credenciais por ambiente;
* evitar um mesmo system para contextos sem relação.

## Parâmetros

Use parâmetros para valores variáveis e pequenos estados controlados pela automação.

Exemplos:

* feature flags;
* datas de corte;
* nomes de tabela;
* cursores de sincronização.

Não use parâmetro para tudo. Quando o dado representa conexão, prefira `System`. Quando representa mapeamento de negócio, prefira uma Tabela De/Para.

## Tabelas De/Para

Use Tabelas De/Para quando o negócio precisa manter mapeamentos e listas de referência sem alterar código.

Casos típicos:

* de/para de status;
* códigos de filial;
* mapeamento de categorias;
* IDs legados para IDs externos.

## Sequências

Use Sequências quando a plataforma precisa gerar identificadores centralizados e atômicos.

Casos típicos:

* número de lote;
* identificador incremental;
* chave de negócio controlada.

## Associação com a automação

Uma automação só recebe em runtime os recursos explicitamente associados a ela.

Revise antes do deploy:

* systems corretos associados;
* parâmetros esperados cadastrados;
* Tabelas De/Para corretas disponíveis;
* Sequências corretas criadas.

## Triggers

Hoje, a modelagem pública mais comum inclui:

* webhook;
* scheduled;
* inbound email.

Escolha o trigger conforme a forma de disparo do processo, não conforme a tecnologia da origem.

## Notificações e retenção

Antes de publicar em produção, revise:

* retenção de logs;
* notificações de falha;
* quem precisa operar essa automação;
* se usuários limitados precisam enxergar a execução.

## Pergunta prática de modelagem

Quando estiver em dúvida sobre onde colocar uma configuração, use esta regra:

* conexão externa: `System`;
* valor variável da automação: `Parameter`;
* regra de negócio configurável: Tabela De/Para;
* contador centralizado: Sequência.
