Agendadores — /schedulers

Quase tudo que o CMS faz sem alguém pedir passa por um agendador: processar as mensagens de uma interface, buscar dados numa Coleta, checar se as aplicações estão no ar, expurgar mensagem velha. Esta tela mostra todos eles, em um lugar só.
Agendador pausado é a causa mais comum de “a coleta parou de trazer dados”. Nada quebra, nada
vira erro: as mensagens simplesmente deixam de ser processadas. Por isso existe um tipo de alerta
dedicado — AGENDADOR_PAUSADO — e um status próprio no Painel de
Interfaces.
Dois tipos de agendador
A listagem separa os jobs em dois grupos, e a diferença importa porque as permissões são diferentes. Há ainda um terceiro, os Gatilhos, descrito mais abaixo — para efeito de permissão ele se comporta como o de Interface.
Agendadores de Sistema
Criados pelo próprio CMS na primeira subida:
| Job | O que faz | Padrão |
|---|---|---|
keep-alive | Consulta o keep-alive de todas as aplicações e atualiza o status ON/OFF | a cada 10 segundos |
limpeza | Remove mensagens e processamentos mais antigos que a retenção configurada em cada Interface | todo dia às 2h |
Check-msg-acumulada-alert | Verifica interfaces com mensagens acumuladas acima do limite e dispara o alerta | a cada minuto |
Check-chamado-atrasado | Abre chamado para Aplicação que passou do tempo offline configurado no alerta | a cada minuto |
Check-sap-cpi-processamento | Confere no SAP CPI se os iFlows que receberam Entregas terminaram com sucesso e dispara o alerta Falha no iFlow. Sem conexão SAP CPI com API de gestão, não faz chamada nenhuma | a cada minuto |
resumo-diario | Fecha o Raio-X do dia anterior e envia o resumo aos inscritos | todo dia às 0h10 |
revisao-ia | Avisa os revisores quando há sessões de IA sinalizadas aguardando revisão | todo dia às 7h |
Só administradores enxergam e mexem nos agendadores de Sistema. Um usuário comum vê apenas os agendadores das Interfaces a que tem acesso.
Agendadores de Interface
Um por Interface cadastrada, nomeado fila-{SIGLA}. É ele que executa o ciclo da interface: buscar
o que há para fazer, enfileirar e processar. A tela agrupa esses jobs por Aplicação, com contagem
de ativos e inativos em cada grupo.
Criar uma Interface cria o agendador; renomear a Interface renomeia o job preservando o estado (um job desligado continua desligado); excluir a Interface remove o job.
Interface criada por importação, por um assistente ou por um Pack SAP já nasce com o agendador registrado e rodando — não é preciso reiniciar a API.
As Interfaces das ferramentas de Help Desk aparecem num grupo próprio, Help Desk. Vale conferir: com o agendador da Interface de uma ferramenta desligado, o chamado entra na fila e não sai — no SAP PM, a nota fica “aguardando” para sempre.
Gatilhos
Um por Gatilho cadastrado, nomeado trigger-{id} e exibido com o nome que a
pessoa deu. Ficam num grupo próprio, Gatilhos, antes de Sistema, com o alvo (a Coleta ou
Entrega) e o agendamento por extenso na linha.
Aqui dá para pausar, executar agora e ver o histórico. Duas coisas são diferentes dos agendadores de Interface, de propósito:
- Ligar não acontece aqui. A ativação de um Gatilho passa por uma pergunta de confirmação que só a tela de Gatilhos faz — tentar ligar por esta tela mostra um aviso com o atalho para lá, e “Ativar todos” pula os Gatilhos e diz quantos ficaram de fora.
- Editar o agendamento também é na tela de Gatilhos: o lápis leva para lá. As abas são as mesmas, mas o Gatilho guarda a escolha inteira no cadastro — mudá-la só no job deixaria os dois dizendo coisas diferentes.
Como se escolhe o agendamento
O lápis abre o mesmo editor do cadastro de Gatilho, com cinco abas:
| Aba | O que define | Exemplo |
|---|---|---|
| A cada | Cadência curta, sem horário fixo | a cada 5 segundos |
| Diário | Um horário por dia, com opção de só dias úteis | 07:30, segunda a sexta |
| Semanal | Dias marcados e horário | terça e quinta, 06:00 |
| Mensal | Dia do mês (1 a 28) e horário | dia 5, 23:00 |
| Avançado | A expressão cron, para o que as abas não cobrem | 0 0 2 15,30 * * |
A tela mostra a escolha por extenso e as próximas três execuções, no fuso do servidor, antes de salvar. Um agendamento que o destino não consegue cumprir aparece como erro ali, e não vira um job que nunca dispara.
Não é a tela que monta a expressão: ela manda a escolha e o servidor converte, com a mesma regra que o Gatilho usa. Por isso as duas telas nunca discordam sobre o que “a cada 15 minutos” significa.
Milissegundos só aparecem para Interface. Uma Interface guarda cadência curta como intervalo (é o que permite 200 ms), enquanto os agendadores internos do Sistema só sabem guardar cron — e cron não tem casa para fração de segundo.
O CMS aceita cron com segundos (seis campos). É o que permite 0/10 * * * * * no keep-alive.
Duas coisas que a tela recusa, e por quê
- “Último dia do mês” existe no Gatilho e não aqui. Ele não é só uma expressão: é um cron que dispara do dia 28 ao 31 mais uma marca que descarta os três primeiros, e essa marca só o cadastro de Gatilho guarda. Aceitar aqui agendaria quatro execuções no lugar de uma.
- Num agendador do Sistema, “a cada N” só passa quando N divide a unidade de cima por igual (5, 10, 15, 30 segundos — não 45). Um passo de 45 segundos dispararia aos :00 e :45 e depois esperaria 15 s: a tela diria uma coisa e o sistema faria outra.
Uma Interface gravada em modo cron com expressão de cadência (*/5 * * * * *) abre na aba A
cada e, ao salvar, passa a ser gravada como intervalo. É o mesmo agendamento — e intervalo é
o modo que o CMS usa para Interface abaixo de um minuto —, mas a linha muda de modo mesmo sem você
mexer nos campos.
Intervalo muito curto numa Coleta significa consultar a origem muito perto de tempo real — e uma origem lenta pode acumular execuções. Comece conservador e aperte depois de medir o tempo médio no Monitor de Mensagens.
O que dá para fazer na tela
| Ação | Efeito |
|---|---|
| Ativar / desativar | Liga ou para o job. Vale imediatamente, sem reiniciar nada |
| Editar agendamento | Abre as cinco abas, com a frase legível e as próximas execuções |
| Executar agora | Dispara uma execução fora do horário, para teste |
| Histórico | Últimas execuções daquele job, com início, duração, status e mensagem |
Há também ações em lote: ativar ou desativar todos os agendadores de uma Aplicação, ou apenas os selecionados. Desativar em lote pede confirmação digitada — é uma ação que para a integração inteira de uma aplicação.
A coluna Frequência diz o agendamento em frase — “A cada 1 hora”, “A cada 5 minutos”, “Dias úteis às 07:30” —, a mesma da tela de Gatilhos. Quando o valor gravado é uma expressão cron, ela aparece pequena logo abaixo, para conferência; intervalo não tem expressão, a frase já é o valor exato.
A coluna Executando mostra, em tempo real, quais interfaces estão com mensagem em processamento neste momento.
Histórico e diagnóstico
Cada execução grava início, duração, status (Sucesso ou Erro), mensagem e os IDs das mensagens envolvidas. O histórico completo, com filtros por job, status e período, fica em Log Agendadores — inclusive um gráfico de execuções por hora, que costuma ser a forma mais rápida de ver “parou às 14h”.
Execuções sem nada a fazer não geram registro. Num job de intervalo, isso significa que “última execução” pode estar velha mesmo com o job saudável — ele só não teve trabalho.
Permissão
A Ferramenta é /schedulers. Um usuário não administrador só enxerga (e só pode mexer em)
agendadores de Interfaces que constem das suas Interfaces permitidas — os jobs de Sistema ficam
fora do alcance dele, inclusive nas ações em lote.