Episódio 16 - Eventos externos: a ponte entre o mundo real e a execução
Até aqui, construímos uma engine capaz de executar tarefas sequenciais, condicionais, iterativas e dinâmicas. Mas todo sistema real não vive isolado. Em algum momento, algo externo precisa interagir com nossa lógica:
- Um clique do usuário
- Um alarme
- A resposta de uma requisição REST
- A leitura de um sensor
- A chegada de um arquivo
Neste episódio, vamos introduzir eventos externos na linguagem JSON interpretada, permitindo que a engine aguarde por algo externo para continuar. O fluxo agora pode "parar" e esperar algo de fora.
Sintaxe do evento externo
{
"acao": "AguardarEvento",
"nome": "botao.continuar",
"proxima": "etapa2"
}
Modo de funcionamento
- Quando a engine encontra
AguardarEvento, ela pausa a execução. - Registra internamente que está aguardando o evento
botao.continuar. - Algum código externo (por exemplo, um clique no Delphi) envia esse evento.
- A engine é notificada e retoma a execução na etapa definida por
proxima.
API de interação externa (pseudo Delphi)
Engine.RegisterEvent('botao.continuar');
Ou, se a aplicação está escutando um endpoint REST:
Engine.RegisterEventFromREST('sensor.temperatura.ok');
Exemplo completo com evento externo
[
{ "acao": "ExibirMensagem", "texto": "Aguardando clique do usuário..." },
{ "acao": "AguardarEvento", "nome": "botao.continuar", "proxima": "final" },
{ "id": "final", "acao": "ExibirMensagem", "texto": "Continuando após clique!" }
]
Com isso, nossa linguagem agora pode reagir ao mundo.
Por que isso importa?
A maioria dos fluxos reais não são lineares. Eles aguardam algo:
- Um pagamento
- Uma permissão
- Um recurso
- Uma confirmação
Esse modelo de pausa por evento é leve, seguro e desacoplado. Não usa Sleep, WaitFor ou polling.
Nos próximos episódios, vamos evoluir:
- Timeout de eventos
- Eventos concorrentes (aguardar mais de um)
- Reatividade total com notificadores
Estamos criando uma engine que pensa e espera. Como você.
Threads executam. Usuários interagem. Sistemas reagem.
A próxima fronteira é a integração perfeita entre eles.