TheCodeNaked

Paralelismo - Episódio 8 (Copy)

🤩 Episódio 8 — Programando sem recompilar: Execução declarativa com JSON e TSafeThread

Imagine um sistema em que você define o que precisa ser feito por configuração, e não por código compilado. Algo como:

[
  { "acao": "BaixarJSON", "url": "https://exemplo.com/dados.json" },
  { "acao": "ProcessarDados" },
  { "acao": "BaixarImagem", "url": "https://exemplo.com/imagem.jpg" }
]

Esse JSON vira uma cadeia de tarefas, executadas uma a uma com todos os benefícios da TSafeThread e TTaskChain:

  • UI responsiva
  • Erros tratados com callbacks
  • Cancelamento possível
  • Execução controlada

🤔 Mas por que JSON?

Porque representar lógica em dados permite:

  • Alterar comportamentos sem recompilar
  • Criar sistemas plugináveis
  • Executar tarefas enviadas por um servidor
  • Criar testes automatizados de fluxos
  • Desenvolver interfaces low-code ou no-code

⚖️ Como funciona?

Você precisa de dois elementos:

  1. Registrador de Ações (um dicionário)
    • Mapeia BaixarJSON para uma função Delphi que cria uma ISafeThreadParams
  2. Interpretador de JSON
    • Lê o arquivo e executa cada ação via TTaskChain.AddTask(...)

🧠 A arquitetura

[ JSON de Ações ]
        ↓
[ Interpretador ]
        ↓
[ Dicionário de Funções ]
        ↓
[ TSafeThreadParams ]
        ↓
[ TTaskChain ]

E tudo isso sem precisar escrever caseifTTask.Run ou try...except no seu formulário.


🛠 Exemplo de ação mapeada:

RegisterAction('BaixarJSON',
  procedure(const Params: TJSONValue; const TaskName: string; OnSuccess: TProc; OnError: TErrorCallback)
  begin
    var URL := Params.GetValue<string>('url');
    var Thread := TSafeThreadParams.New
      .SetOnExecute(
        procedure(Context: TThreadContext)
        begin
          var JSON := TNetHTTPClient.Create(nil).Get(URL).ContentAsString;
          // Armazene como quiser (campo, cache, arquivo...)
          if Assigned(OnSuccess) then OnSuccess();
        end)
      .SetOnError(OnError);

    TSafeThread.ExecuteThread(Thread);
  end
);

🧪 O que ganhamos com isso?

  • Criamos uma máquina de execução assíncrona declarativa
  • Permite alterações externas (ideal para sistemas configuráveis)
  • Pode ser estendida com novas ações
  • Cria um framework leve, mas poderoso

Nos próximos episódios:

  • Como criar ações dinâmicas plugináveis
  • Como integrar com REST, banco de dados, relatórios e notificações
  • Como criar uma interface visual para montar fluxos

Esse é o ponto em que o seu sistema deixa de ser um programa fechado e vira uma plataforma viva.


“JSON virou o novo bytecode das aplicações modernas.”

E a TSafeThread agora tem uma linguagem para comandá-la.

Vamos para o Episódio 9?

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