Entendendo o calculo do history time to live (TTL) no Camunda.
- William Robert Alves
- 28 de jul. de 2024
- 3 min de leitura
Ao definir um agendamento para exclusão automática do histórico no Camunda, você precisa ajustar o "tempo de vida" deste registro, e você sabe como é calculado? Entenda logo abaixo neste post!

O ciclo de vida (TTL) de um histórico no Camunda é baseado na coluna REMOVAL_TIME_ das tabelas de histórico, então vamos entender um pouco mais sobre isso...
O REMOVAL_TIME_ no Camunda é a data e hora em que uma entrada de histórico (como uma instância de processo ou atividade) deve ser removida do banco de dados como parte da limpeza de histórico. O Camunda calcula essa data com base na configuração historyTimeToLive, que define por quanto tempo os registros históricos devem ser mantidos após a conclusão de um processo ou tarefa.
Como o REMOVAL_TIME_ é Calculado:
Configuração do historyTimeToLive:
historyTimeToLive é definido em dias e pode ser configurado globalmente para todos os processos ou individualmente para cada definição de processo.
Esse valor indica o período de tempo após o término ou início de uma instância de processo durante o qual o histórico deve ser mantido, dependendo da propriedade "historyRemovalTimeStrategy" utilizada (end ou start).
Cálculo do REMOVAL_TIME_:
Quando uma instância de processo ou atividade termina, o Camunda calcula o REMOVAL_TIME_ com base na data de término (END_TIME_) ou em outro critério, dependendo da estratégia de remoção (historyRemovalTimeStrategy) configurada.
Fórmula básica:
REMOVAL_TIME_ = END_TIME_ + historyTimeToLive
END_TIME_: Data e hora em que a instância de processo ou atividade foi concluída.
historyTimeToLive: Período de tempo definido para manter o histórico (por exemplo, 30 dias).
Estratégias de Remoção (historyRemovalTimeStrategy):
start: O REMOVAL_TIME_ é calculado com base na data de início do processo ou tarefa.
end: O REMOVAL_TIME_ é calculado com base na data de término do processo ou tarefa.
none: O REMOVAL_TIME_ não é calculado automaticamente.
Exemplo utilizando historyRemovalTimeStrategy do tipo end:
Suponha que o historyTimeToLive seja configurado para 30 dias e o processo termine em 1º de agosto de 2024.
O REMOVAL_TIME_ seria 31 de agosto de 2024.
Exemplo utilizando historyRemovalTimeStrategy do tipo start:
Suponha que o historyTimeToLive seja configurado para 30 dias e o processo iniciou em 1º de agosto de 2024.
O REMOVAL_TIME_ seria 31 de agosto de 2024, mesmo que a instância não tenha sido finalizada ainda.
Cuidados que devemos ter ao utilizar o historyRemovalTimeStrategy do tipo start:
Mesmo que sua instância ou processo não tenha terminado, como o mecanismo calcula a data de remoção através da data de início e não de fim, o histórico poderá ser excluído e você terá perdido dados históricos antes mesmo de finalizar, com isto se algum erro ocorrer e você precisar buscar no histórico para entender o que ocorreu, você poderá ter perdido este histórico... então tome cuidado com este tipo de estratégia. A estratégia default definida pela Camunda é a do tipo "end", justamente para evitar estes tipos de problemas, mas fica a seu critério escolhe a que melhor se adapta à suas necessidades.
Ajustes com RemovalTimeStrategy:
Dependendo do historyRemovalTimeStrategy escolhido (start, end, none), o ponto de referência para calcular o REMOVAL_TIME_ pode mudar, mas a adição do historyTimeToLive ao ponto de referência é o princípio básico.
Exemplo Prático:
Processo termina em: 1º de agosto de 2024 (END_TIME_).
historyTimeToLive: 30 dias.
REMOVAL_TIME_ calculado: 31 de agosto de 2024.
Com esta configuração, a partir de 31 de agosto de 2024 o histórico das instâncias e processos com esta data serão liberados para limpeza, e a limpeza será executada na próxima janela configurada no application.yaml ou application.properties através da configuração historyCleanupBatchWindowStartTime.
Considerações:
Impacto de Configurações Diferentes: Diferentes processos ou atividades podem ter valores de historyTimeToLive personalizados, alterando assim o tempo de retenção de seu histórico.
Limpeza de Histórico: Após o REMOVAL_TIME_ ser alcançado, o processo de limpeza de histórico do Camunda pode remover as entradas de histórico relevantes, conforme configurado.
Essa abordagem permite uma manutenção eficiente do banco de dados, controlando o tamanho das tabelas de histórico e evitando o acúmulo desnecessário de dados antigos.
Quer conhecer um pouco mais sobre esta ferramenta e outras tecnologias?
Nos siga nas redes sociais @gerandocodigo (instagram / youtube / tiktok / facebook).
Commentaires