Pular para o conteúdo principal

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árioMóduloJob
01:01Background JobsDesclassificar 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:17Background JobsCancelar 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:07Background JobsIndexar 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:08Background JobsMIN.IO - Assegurar existência dos buckets temporários
Garante que os buckets temporários existam no MinIO, criando os que faltarem.
08:08Background JobsMIN.IO - Assegurar existência dos buckets de stream
Mesma garantia, para os buckets de stream.
08:08Background JobsMIN.IO - Assegurar existência dos buckets de Fase Assinatura
Mesma garantia, para os buckets usados por documentos em fase de assinatura.
20:00Background JobsMIN.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:00Background JobsCancelar 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.
Três rotinas no mesmo minuto

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.

A madrugada não é ocupada apenas pelos jobs diários

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ênciaMóduloJob
A cada 1 minutoBackground JobsIncluir 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 minutoBackground JobsIncluir Encaminhamentos em Índice EncaminhamentoControleIndexacao
Mesma função do anterior, para encaminhamentos.
A cada 1 minuto, das 19h às 7h, de segunda a sextaBackground JobsLimpeza 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 domingosBackground JobsLimpeza 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 sextaBackground JobsLimpeza 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 domingosBackground JobsLimpeza de Dados Antigos do Hangfire Process - FDS
Mesma rotina, na janela de fim de semana.
A cada 5 minutosEPCMigrarAgentesJob.MigrarAgentesAsync
Converte, em lotes de mil, os registros de cópia de processo para a representação atual de agente.
A cada 10 minutosBackground JobsGerar Documento-Elo
Gera o próximo Documento-Elo quando há documentos suficientes capturados desde o elo anterior.
A cada 10 minutosBackground JobsRemover Locks Distribuídos perdidos
Remove os locks distribuídos que ficaram órfãos.
A cada 10 minutosEEI9[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 horaBackground JobsIndexar Agentes
Indexa no motor de busca os agentes criados desde a última execução, em blocos.
De hora em hora, no minuto 0Background JobsGerar 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 0Background JobsProcessos sem Custódia
Recalcula e reindexa a relação de processos cuja custódia está sob agente inativo.
De hora em hora, no minuto 0EACRotina Agente Carga EDocs
Dispara a carga de agentes a partir do Organograma e do Lotação, patriarca a patriarca.
Atenção ao minuto 0

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ênciaMóduloJob
A cada 3 segundosEEI9[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 segundosEEI[Encaminhamento] Buscar Eventos de Encaminhamento para Indexar
Enfileiramento. Enfileira os eventos de indexação de encaminhamento recém-criados.
A cada 1 minutoBackground JobsProcessamento de áudio e vídeo - Finalizar Captura
Enfileiramento. Enfileira a finalização das capturas cujo arquivo o P-AV já converteu.
A cada 1 minutoBackground JobsProcessamento de áudio e vídeo - Notificar Falhas no Processamento
Enfileiramento. Enfileira a notificação das capturas que falharam no processamento.
A cada 1 minutoEDA[DocAnalyzer] Enfileirar EventosDA de Extracao
Enfileiramento. Enfileira os eventos de extração de conteúdo de documentos PDF.
A cada 1 minutoEPCProcessamentoCopiaJob.BuscarEAgendarFinalizacoesAsync
Enfileiramento. Enfileira a finalização das cópias de processo cujos volumes já foram gerados.
A cada 2 minutosEEI9[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 minutosEEI9[AgenteRecuperavel] Realizar contagens de Agente Recuperavel
Enfileiramento. Consome os eventos de contagem de itens recuperáveis por agente.
A cada 3 minutosEEI9[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 minutosBackground JobsRotear Eventos perdidos
Roteamento. Reencaminha os eventos que ficaram parados na situação de criados.
A cada 10 minutosBackground JobsRemover Eventos Encerrados
Expurgo. Remove os eventos já encerrados e os cancelados.
A cada 10 minutosEEI9[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 minutosEDA[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 minutosEDA[DocAnalyzer] Deletar EventosDA Concluidos
Expurgo. Remove os eventos já concluídos que passaram do prazo de retenção.
A cada 10 minutosEPCProcessamentoCopiaJob.ReagendarEventosParadosAsync
Recuperação. Reagenda os eventos parados por falha ou tempo excedido, com limites distintos para solicitação e para volume.
A cada 10 minutosP-AVWatchdog: 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 minutosP-AVSinalizar 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 4hEEI9[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 4hEEI9[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 minutosEEI9[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 minutosEEI9[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 minutosEEI9[AgenteBusca] e [AgenteRecuperavel] Buscar Eventos para Indexar
Enfileiramento. Indexa os agentes para busca e os agentes com itens recuperáveis.
A cada 15 minutosEEI9[AgenteBusca] e [AgenteRecuperavel] Verificar Eventos
Conferência. Valida se a indexação dos agentes ocorreu como esperado.
A cada 15 minutosEEI9[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 minutosEEI[Encaminhamento] Verificar Eventos Executados
Conferência. Verifica se os eventos executados chegaram ao índice.
A cada 15 minutosEEI[Encaminhamento] Realocar na fila eventos NÃO executados
Recuperação. Devolve à fila os eventos que passaram do tempo limite.
A cada 20 minutosEEI9[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 0Background JobsPostProcessRetry 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 0Background JobsPostProcessRetry Encaminhamentos
Recuperação. Mesma função, para os eventos de encaminhamento.
De hora em hora, no minuto 0EPCProcessamentoCopiaJob.LimparEventosAntigosAsync
Expurgo. Remove os eventos com mais de 7 dias.
A cada 2 horas, no minuto 0EEI[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 0Background JobsRotear 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 0Background JobsRotear Eventos de processos e encaminhamentos não concluídos
Recuperação. Reencaminha ao roteador os eventos executados que não chegaram a concluir.
Auditorias de indexação

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.

Sobre o módulo EEI

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.