TheCodeNaked

Paralelismo - Episódio 30 (Copy)

Episódio 30 - Agendamento Inteligente com JSON Declarativo

Nos episódios anteriores, criamos um mecanismo robusto para interpretar comandos em formato JSON, utilizando estruturas como TSafeThreadInterface e TTaskChain para executar operações de forma segura, paralela e cancelável. Agora chegou a hora de dar um passo importante: transformar esse mecanismo em um agendador inteligente.

⌛️ Por que um Agendador?

Imagine poder descrever em um arquivo JSON quais tarefas devem ser executadas, em qual ordem, com quais condições e em que momento do dia. Sem precisar recompilar o código. Apenas alterando o JSON.

Isso significa:

  • Agendar limpeza de dados aos domingos às 3h da manhã
  • Executar backup completo somente se o anterior tiver sucesso
  • Atualizar relatórios apenas se não houver requisições ativas
  • Tudo controlado por expressões lógicas simples no JSON

⚛️ A Estrutura do JSON Agendador

{
  "agenda": [
    {
      "acao": "LimparCache",
      "horario": "03:00",
      "dias": ["Domingo"],
      "condicao": "true"
    },
    {
      "acao": "BackupCompleto",
      "apos": "LimparCache",
      "condicao": "result.LimparCache == 'sucesso'"
    },
    {
      "acao": "AtualizarRelatorios",
      "condicao": "sistema.RequisicoesAtivas == 0"
    }
  ]
}

Cada bloco representa uma tarefa agendada. Podemos definir:

  • horario: hora fixa
  • dias: dias da semana
  • apos: depende de outra tarefa
  • condicao: expressão que deve ser verdadeira para executar

🔄 Como isso se conecta com TSafeThreadInterface e TTaskChain?

Cada item da agenda é transformado em uma tarefa assíncrona. O mecanismo analisa o JSON, avalia as condições, resolve dependências e utiliza TTaskChain para garantir a ordem e o controle total da execução.

Cada execução produz um resultado que pode ser armazenado em uma estrutura result, permitindo condições em cascata. O agendador é, ao mesmo tempo:

  • Declarativo
  • Assíncrono
  • Encadeado
  • Cancelável
  • Observável

🚀 Benefícios reais

  • Agilidade para clientes mudarem o comportamento do sistema sem recompilar
  • Padronização de tarefas complexas com mínimo de código
  • Isola lógica de negócio das implementações
  • Facilita testes simulando agendamentos
  • Permite criar interfaces visuais baseadas no JSON

No próximo episódio, vamos mostrar como carregar dinamicamente essas tarefas usando arquivos externos e criar uma interface simples para monitorar execução, editar e validar agendamentos.

Estamos muito perto de criar uma linguagem declarativa visual para automação de tarefas em Delphi. Tudo começou com um problema simples de travamento na UI... e olha onde fomos parar.

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