TheCodeNaked

Paralelismo - Episódio 33 (Copy)

Episódio 33 — Interpretador declarativo com Contexto Compartilhado: Compreendendo o estado ao longo da execução

Em um sistema onde tarefas são encadeadas ou regras são avaliadas de forma declarativa, é comum que seja necessário compartilhar informações entre etapas. Esse episódio introduz o conceito de Contexto Compartilhado, uma forma controlada de passar informações entre as partes do interpretador, sem criar acoplamentos desnecessários.


Por que um Contexto?

Imagine que você quer aplicar uma série de transformações, validações e ações sobre dados diferentes, mas precisa manter o "estado" da execução: o que já foi feito? Houve erro? Qual foi a última ação? Qual dado foi carregado?

O Contexto resolve isso.


Representação

{
  "acao": "ValidarEmail",
  "params": { "campo": "email" },
  "contexto": {
    "UsuarioID": 123,
    "EmailValido": false,
    "Erros": []
  }
}

Esse exemplo mostra um interpretador que, ao executar a ação ValidarEmail, atualiza o campo EmailValido dentro do contexto, e pode adicionar mensagens a Erros se houver problema.


Benefícios do Contexto Compartilhado

  • Permite encadear ações com dependência de dados anteriores
  • Evita variáveis globais ou acoplamento entre regras
  • Pode ser persistido, logado, auditado
  • Facilita testes unitários e reprocessamento
  • Cria base para debug visual declarativo

Integração com TSafeThread e TTaskChain

Cada tarefa pode acessar o contexto atual:

SetOnExecute(
  procedure(Context: TThreadContext)
  begin
    if Context.Data['UsuarioID'] = 0 then
      raise Exception.Create('Usuário inválido');
  end)

Você pode pensar no contexto como um dicionário dinâmico, ou melhor ainda, como um TJSONObject Delphi compartilhado e seguro.


Validação e Consistência

Ao final da execução, o contexto pode ser avaliado para garantir:

  • Não houve erro
  • Todas as ações esperadas foram executadas
  • Valores obrigatórios foram preenchidos

Isso permite transformar o interpretador em pipeline de validação ou fluxo de execução reutilizável.


Próximos passos

No próximo episódio, vamos:

  • Implementar um tipo de contexto padronizado e reutilizável
  • Criar extensões que validam o próprio contexto
  • Encadear regras com fallbacks condicionais com base no estado

O interpretador está ficando cada vez mais próximo de um orquestrador dinâmico de execução declarativa.

Seguimos!

Sobre o autor

TheCodeNaked

No TheCodeNaked, programar é consequência, não ponto de partida. Antes do código, vem a dúvida, a análise, o contexto. Não seguimos fórmulas — questionamos. Criar software é pensar com clareza. O resto é só digitação.

TheCodeNaked

Criar com clareza. Codificar com intenção.

TheCodeNaked

Ótimo! Você se inscreveu com sucesso.

Bem-vindo de volta! Você acessou com sucesso.

Você se inscreveu com sucesso o TheCodeNaked.

Sucesso! Verifique seu e-mail para acessar com o link mágico.

As suas informações de faturamento foram atualizadas.

Seu pagamento não foi atualizado