TheCodeNaked

Paralelismo - Episódio 18 (Copy)

Episódio 18 - TaskChain + JSON: interpretando lógica sem recompilar

Um dos maiores sonhos de desenvolvedores que lidam com tarefas repetitivas é: automatizar e parametrizar a execução de suas lógicas, sem precisar recompilar o aplicativo.

Imagine poder alterar a sequência de execução de tarefas, os parâmetros envolvidos, e os comportamentos associados, apenas modificando um arquivo JSON. Agora imagine que, mesmo com toda essa flexibilidade, você ainda esteja protegido pelo controle fino da TSafeThreadInterface e pela fluidez do TTaskChain.

Pois é exatamente esse o cenário que começamos a explorar aqui.


🔧 O que estamos construindo?

Uma espécie de mini interpretador de workflows assíncronos, descritos em JSON, executados via Delphi, usando:

  • TSafeThreadInterface para gerenciar o ciclo de vida, sincronismo e tratamento de erros
  • TTaskChain para executar em cadeia, com ou sem continuação em caso de erro
  • Uma camada de "interpretação" que converte as instruções em JSON para chamadas reais

🔍 Exemplo de JSON de entrada

[
  { "acao": "BaixarJSON", "url": "https://jsonplaceholder.typicode.com/posts" },
  { "acao": "SalvarArquivo", "nome": "posts.json" },
  { "acao": "NotificarUsuario", "mensagem": "Download concluído" }
]

Cada objeto é uma tarefa. Cada campo, um parâmetro.

O sistema, ao ler isso, vai:

  1. Criar uma task para cada objeto
  2. Mapear a ação para uma função Delphi (registrada previamente)
  3. Executar as tasks em cadeia

🧠 O papel da interpretação

O mapeamento de ações pode ser feito por um TDictionary<string, TChainTask>, onde cada chave representa uma ação como "BaixarJSON" e o valor é a implementação da lógica.

Assim, adicionamos:

RegisterTask('BaixarJSON', procedure(TaskName, OnSuccess, OnError) ...);
RegisterTask('SalvarArquivo', procedure(TaskName, OnSuccess, OnError) ...);

E a partir disso, podemos construir um TTaskChain dinâmico.


📜 Benefícios imediatos

  • Sem recompilação: troque o JSON e mude o comportamento
  • Componentização total: cada ação pode ser um módulo separado
  • Simulação de pipelines REST, ETLs e tarefas batch
  • Integração com logs, monitoramento e UIs reativas

🛣 Próximos passos

No próximo episódio, vamos expandir esse mecanismo para:

  • Permitir expressões condicionais dentro do JSON
  • Usar valores dinâmicos definidos por etapas anteriores
  • E permitir bifurcações lógicas com base em resultados

Agora sim, estamos indo além da simples execução paralela. Estamos começando a montar uma linguagem declarativa de tarefas assíncronas em Delphi.

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