Я новичок в камунде, поэтому прошу меня понять. Хочу посоветоваться с экспертами на счёт очистки исторических данных (
history cleanup).
Как я понимаю, у процесса ведь есть два состояния (завершился, не завершился).
Завершился - это
COMPLETED,
EXTERNALLY_TERMINATED,
INTERNALLY_TERMINATED.
Не завершился - это
ACTIVE,
SUSPENDED.
https://forum.camunda.org/t/unable-to-produce-internally-terminated-status/8390/2(Такие статусы хранятся в исторической базе
ACT_HI_PROCINST
)
Т.е по факту в базу записывается
end_time
(и
removal_time
соответтсвенно) если процесс тупо завершился. Не важно по каким причинам, его могли прервать мануально или он сам закончил своё выполнение. Т.е судя по этому доку у камунды нету стейта аля
FAILED. Даже если процесс отхлебнул где-то, он будет висеть. Т.е у него будут инциденты, но он будет всё ещё активный.
И вот, если процесс завершился, то исход понятен. У него считается endTime, removalTime и через N-е время batch (history stream) удалит исторические данные. Но что делать с такой ситуацией, когда процесс активен и напоролся на ошибки (инциденты)? Моя идея такая - навесить в инцидент хэндлере на него некий шедулер, который через месяц в случае существования оного просто его остановит и удалит. Но я не уверен, что это хорошая идея. Вчера нашёл какой-то такой шедулер на просторах интернета:
https://github.com/camunda/camunda-bpm-platform/blob/master/engine/src/main/java/org/camunda/bpm/engine/impl/jobexecutor/historycleanup/HistoryCleanupSchedulerCmd.javaМожет кто сталкивался с такой проблемой?