top of page

Entendendo o calculo do history time to live (TTL) no Camunda.

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!

Imagem de titulo da pagina - Camunda History time to live - Entenda como o TTL é calculado.

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:


Imagem da configuração do application.yaml para estrategia de removalTime e historyTimeToLive.

  • 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


bottom of page