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:
TSafeThreadInterfacepara gerenciar o ciclo de vida, sincronismo e tratamento de errosTTaskChainpara 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:
- Criar uma task para cada objeto
- Mapear a ação para uma função Delphi (registrada previamente)
- 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.