Jobs Recorrentes
O E-Docs executa dezenas de rotinas agendadas, espalhadas por vários módulos e por instâncias de Hangfire independentes entre si. Como cada módulo tem seu próprio painel, não existe um lugar único onde se enxergue tudo o que roda e em que momento.
Esta página consolida esse inventário. O objetivo é dar visibilidade sobre a distribuição da carga ao longo do dia, especialmente na madrugada, quando se concentram as rotinas mais pesadas. Saber quais jobs disparam no mesmo horário ajuda a evitar que duas rotinas caras concorram entre si sem que ninguém perceba.
Como ler as tabelas
- Horários e frequências estão no fuso America/Sao_Paulo, configurado em todos os contêineres e servidores do sistema.
- Constam apenas as rotinas com agendamento ativo. Vários módulos registram também rotinas de acionamento manual, usadas pela equipe em correções pontuais e reprocessamentos; elas são registradas com uma data fictícia (29 de fevereiro), de modo a só rodarem quando alguém as dispara, e não aparecem aqui.
- Jobs disparados em fire-and-forget por uma rotina agendada não são listados. Eles são detalhe de implementação do job principal, e não um agendamento próprio.
- Os nomes são os mesmos exibidos nos painéis do Hangfire de cada módulo.
- As siglas dos módulos seguem a nomenclatura de Arquitetura de Software.
Jobs diários
Rotinas que executam uma única vez por dia, em horário fixo.
| Horário | Módulo | Job |
|---|---|---|
| 01:01 | Background Jobs | Desclassificar Documentos com Classificação Expirada Localiza as classificações de sigilo cujo prazo expirou e promove a desclassificação automática dos documentos correspondentes, um a um. |
| 02:17 | Background Jobs | Cancelar Solicitações de Credenciamento de Processo - Usuários Inativos Cancela as solicitações de credenciamento de processo ainda pendentes de aprovação cujo solicitante se tornou inativo. |
| 07:07 | Background Jobs | Indexar Agentes Inativos NOVO Atualiza no motor de busca a marcação de inatividade dos agentes, a partir do cache montado de hora em hora. |
| 08:08 | Background Jobs | MIN.IO - Assegurar existência dos buckets temporários Garante que os buckets temporários existam no MinIO, criando os que faltarem. |
| 08:08 | Background Jobs | MIN.IO - Assegurar existência dos buckets de stream Mesma garantia, para os buckets de stream. |
| 08:08 | Background Jobs | MIN.IO - Assegurar existência dos buckets de Fase Assinatura Mesma garantia, para os buckets usados por documentos em fase de assinatura. |
| 20:00 | Background Jobs | MIN.IO - Limpar buckets do servidor Temporários Expurga os arquivos temporários do MinIO, com janelas distintas por finalidade: 1 dia para validação de documento não autenticada e para processamento de áudio e vídeo; 7 dias para cópia de processo e histórico de acesso. |
| 22:00 | Background Jobs | Cancelar Solicitações de Credenciamento de Documentos - Usuários Inativos Cancela as solicitações de credenciamento de documento ainda pendentes cujo solicitante ou aprovador se tornou inativo. |
As três garantias de existência de buckets do MinIO estão agendadas para o mesmo horário (08:08). São rotinas leves e o efeito prático é pequeno, mas o padrão serve de alerta: ao criar um novo agendamento diário, vale conferir antes o que já ocupa aquele minuto.
Boa parte da carga noturna vem de rotinas que se repetem dentro de uma janela: a limpeza do histórico do Hangfire, no Background Jobs, que vai das 19h às 7h nos dias úteis e ocupa o dia inteiro nos fins de semana, e as duas limpezas de eventos de indexação do EEI9, entre 22h e 4h. Todas estão nas tabelas seguintes, com a janela indicada na coluna de frequência.
Jobs de execução frequente
Rotinas que se repetem em intervalos ao longo de todo o dia, de poucos minutos a algumas horas. Não estão aqui os jobs cuja única função é sustentar as filas do Outbox Pattern, reunidos na seção seguinte.
| Frequência | Módulo | Job |
|---|---|---|
| A cada 1 minuto | Background Jobs | Incluir Processos em Índice ProcessoControleIndexacao Alimenta, em blocos, o índice de controle usado para conferir se os processos gravados no banco chegaram ao motor de busca. |
| A cada 1 minuto | Background Jobs | Incluir Encaminhamentos em Índice EncaminhamentoControleIndexacao Mesma função do anterior, para encaminhamentos. |
| A cada 1 minuto, das 19h às 7h, de segunda a sexta | Background Jobs | Limpeza de Dados Antigos do Hangfire BKG - Dia útil Expurga o histórico do Hangfire do próprio Background Jobs com mais de 7 dias, em blocos de 2.000 registros. |
| A cada 1 minuto, aos sábados e domingos | Background Jobs | Limpeza de Dados Antigos do Hangfire BKG - FDS Mesma rotina, na janela de fim de semana, que ocupa o dia inteiro. |
| A cada 1 minuto, das 19h às 7h, de segunda a sexta | Background Jobs | Limpeza de Dados Antigos do Hangfire Process - Dia útil Expurga o histórico do Hangfire do Process Jobs com mais de 7 dias, em blocos de 2.000 registros. |
| A cada 1 minuto, aos sábados e domingos | Background Jobs | Limpeza de Dados Antigos do Hangfire Process - FDS Mesma rotina, na janela de fim de semana. |
| A cada 5 minutos | EPC | MigrarAgentesJob.MigrarAgentesAsync Converte, em lotes de mil, os registros de cópia de processo para a representação atual de agente. |
| A cada 10 minutos | Background Jobs | Gerar Documento-Elo Gera o próximo Documento-Elo quando há documentos suficientes capturados desde o elo anterior. |
| A cada 10 minutos | Background Jobs | Remover Locks Distribuídos perdidos Remove os locks distribuídos que ficaram órfãos. |
| A cada 10 minutos | EEI9 | [Hangfire] Limpar jobs antigos Exclui do Hangfire do EEI9 os jobs em situação de falha com mais de 5 dias. |
| Nos minutos 0 e 45 de cada hora | Background Jobs | Indexar Agentes Indexa no motor de busca os agentes criados desde a última execução, em blocos. |
| De hora em hora, no minuto 0 | Background Jobs | Gerar Cache de Agentes Inativos Consulta no Acesso Cidadão os papéis, grupos, órgãos e unidades inativos e monta o cache consumido pelas demais rotinas. |
| De hora em hora, no minuto 0 | Background Jobs | Processos sem Custódia Recalcula e reindexa a relação de processos cuja custódia está sob agente inativo. |
| De hora em hora, no minuto 0 | EAC | Rotina Agente Carga EDocs Dispara a carga de agentes a partir do Organograma e do Lotação, patriarca a patriarca. |
Todas as rotinas de periodicidade horária ou maior estão agendadas para o minuto 0, somando as desta tabela e as da seção seguinte. Ao criar um novo agendamento nessa periodicidade, vale deslocar o minuto e distribuir melhor a carga.
Jobs de sustentação das filas (Outbox Pattern)
Vários módulos do E-Docs usam o Outbox Pattern: a operação grava um evento no banco e um job recorrente o enfileira para processamento. Ao redor desse enfileiramento existe um conjunto de rotinas de apoio, que devolvem à fila o que travou, conferem o que já foi executado e expurgam o que já se concluiu.
São jobs de frequência muito alta, alguns na casa dos segundos, porém de execução curta e com volume limitado por bloco. Estão registrados aqui pela relevância que têm no funcionamento do sistema, e não por competirem por janela de execução. Cada descrição começa pelo papel que a rotina cumpre na fila: enfileiramento, roteamento, conferência, recuperação ou expurgo.
No EEI9, a mesma família de rotinas se repete para cada entidade indexada. Nas linhas abaixo, [Entidade] representa o prefixo que identifica a entidade no nome do job.
| Frequência | Módulo | Job |
|---|---|---|
| A cada 3 segundos | EEI9 | [Entidade] Buscar Eventos para Indexar Enfileiramento. Enfileira os eventos de indexação recém-criados. Existe para Documento, Conteúdo de Documento, Processo, Encaminhamento, Associação e Exclusão de Associação, mais as variantes de Recuperação e de Auditoria. |
| A cada 3 segundos | EEI | [Encaminhamento] Buscar Eventos de Encaminhamento para Indexar Enfileiramento. Enfileira os eventos de indexação de encaminhamento recém-criados. |
| A cada 1 minuto | Background Jobs | Processamento de áudio e vídeo - Finalizar Captura Enfileiramento. Enfileira a finalização das capturas cujo arquivo o P-AV já converteu. |
| A cada 1 minuto | Background Jobs | Processamento de áudio e vídeo - Notificar Falhas no Processamento Enfileiramento. Enfileira a notificação das capturas que falharam no processamento. |
| A cada 1 minuto | EDA | [DocAnalyzer] Enfileirar EventosDA de Extracao Enfileiramento. Enfileira os eventos de extração de conteúdo de documentos PDF. |
| A cada 1 minuto | EPC | ProcessamentoCopiaJob.BuscarEAgendarFinalizacoesAsync Enfileiramento. Enfileira a finalização das cópias de processo cujos volumes já foram gerados. |
| A cada 2 minutos | EEI9 | [AgenteRecuperavel] Indexar Início de Recuperação de Caixas de um Agente Enfileiramento. Consome os eventos de início de recuperação de caixa. |
| A cada 3 minutos | EEI9 | [AgenteRecuperavel] Realizar contagens de Agente Recuperavel Enfileiramento. Consome os eventos de contagem de itens recuperáveis por agente. |
| A cada 3 minutos | EEI9 | [Entidade] Verificar Eventos Executados Conferência. Verifica se os eventos já executados de fato chegaram ao índice. Nesta frequência para Documento, Conteúdo de Documento, Processo e Encaminhamento. |
| A cada 5 minutos | Background Jobs | Rotear Eventos perdidos Roteamento. Reencaminha os eventos que ficaram parados na situação de criados. |
| A cada 10 minutos | Background Jobs | Remover Eventos Encerrados Expurgo. Remove os eventos já encerrados e os cancelados. |
| A cada 10 minutos | EEI9 | [AgenteRecuperavel] Enfileirar Recálculo de Contagens (> 7 dias) Enfileiramento. Cria eventos de recontagem para os agentes cuja contagem passou de 7 dias. |
| A cada 10 minutos | EDA | [DocAnalyzer] Desenfileira EventosDA Problematicos Recuperação. Retira da fila os eventos enfileirados há tempo demais sem executar, conforme o número de tentativas já feitas. |
| A cada 10 minutos | EDA | [DocAnalyzer] Deletar EventosDA Concluidos Expurgo. Remove os eventos já concluídos que passaram do prazo de retenção. |
| A cada 10 minutos | EPC | ProcessamentoCopiaJob.ReagendarEventosParadosAsync Recuperação. Reagenda os eventos parados por falha ou tempo excedido, com limites distintos para solicitação e para volume. |
| A cada 10 minutos | P-AV | Watchdog: Enfileirar Tarefas de Processamento de Áudio e Vídeo Recuperação. Reenfileira a rotina de processamento de mídia quando ela deixa de constar na fila. |
| A cada 10 minutos | P-AV | Sinalizar Falhas de Processamento de Áudio e Vídeo Expurgo. Marca como falha os processamentos que não terão nova tentativa, liberando a notificação dos solicitantes. |
| A cada 10 minutos, das 23h às 4h | EEI9 | [EventosIndexacao] Limpar Tabela - Exclusão de Eventos Verificados Antigos Expurgo. Remove, por tipo e em lotes, os eventos já verificados que passaram do prazo de retenção. |
| A cada 10 minutos, das 22h às 4h | EEI9 | [EventosIndexacao] Limpar Tabela - Purge em Massa de Eventos Verificados Expurgo. Limpeza em massa de eventos verificados antigos, delimitada por um identificador de corte configurável. |
| A cada 15 minutos | EEI9 | [Entidade] Realocar na fila eventos NÃO executados Recuperação. Devolve à situação de criado os eventos que passaram do tempo limite sem executar. |
| A cada 15 minutos | EEI9 | [Entidade] Verificar Eventos Executados Conferência. Verifica se os eventos já executados de fato chegaram ao índice. Nesta frequência para Associação e Exclusão de Associação. |
| A cada 15 minutos | EEI9 | [AgenteBusca] e [AgenteRecuperavel] Buscar Eventos para Indexar Enfileiramento. Indexa os agentes para busca e os agentes com itens recuperáveis. |
| A cada 15 minutos | EEI9 | [AgenteBusca] e [AgenteRecuperavel] Verificar Eventos Conferência. Valida se a indexação dos agentes ocorreu como esperado. |
| A cada 15 minutos | EEI9 | [EventosIndexacaoAgente] Exclusão de jobs antigos (15 dias) Expurgo. Remove os eventos de indexação de agente com mais de 15 dias. |
| A cada 15 minutos | EEI | [Encaminhamento] Verificar Eventos Executados Conferência. Verifica se os eventos executados chegaram ao índice. |
| A cada 15 minutos | EEI | [Encaminhamento] Realocar na fila eventos NÃO executados Recuperação. Devolve à fila os eventos que passaram do tempo limite. |
| A cada 20 minutos | EEI9 | [Entidade Auditoria] Watchdog - Verificar Travamento da Auditoria Recuperação. Retoma a auditoria de indexação quando ela para de avançar. |
| De hora em hora, no minuto 0 | Background Jobs | PostProcessRetry Processos Recuperação. Reenfileira o pós-processamento dos eventos de ato processual executados há mais de uma hora e ainda não concluídos. |
| De hora em hora, no minuto 0 | Background Jobs | PostProcessRetry Encaminhamentos Recuperação. Mesma função, para os eventos de encaminhamento. |
| De hora em hora, no minuto 0 | EPC | ProcessamentoCopiaJob.LimparEventosAntigosAsync Expurgo. Remove os eventos com mais de 7 dias. |
| A cada 2 horas, no minuto 0 | EEI | [Encaminhamento] Limpar Tabela - Exclusão de Eventos Verificados Antigos Expurgo. Remove os eventos já verificados que passaram do prazo de retenção. |
| A cada 3 horas, no minuto 0 | Background Jobs | Rotear Eventos de processos e encaminhamentos não processados Recuperação. Devolve à situação de criado os eventos processuais e de encaminhamento enfileirados há muito tempo sem processar. |
| A cada 3 horas, no minuto 0 | Background Jobs | Rotear Eventos de processos e encaminhamentos não concluídos Recuperação. Reencaminha ao roteador os eventos executados que não chegaram a concluir. |
Além dos jobs acima, o EEI9 mantém, para cada entidade indexada, uma auditoria que varre o histórico comparando banco de dados e índice. Ela não tem agendamento recorrente: ao terminar uma execução, reagenda a si mesma, e o watchdog correspondente a reinicia caso trave. Por isso não aparece nas tabelas com frequência definida, embora gere carga contínua enquanto estiver ligada.
O EEI é o antecessor do EEI9 e responde pelo índice da versão anterior do Elasticsearch. Está em processo de desligamento e, por isso, já não consta no catálogo de Arquitetura de Software. Continua listado aqui porque suas rotinas seguem em operação, em um conjunto reduzido restrito a encaminhamentos.