Создание кастомизированного Variable Instance Lifecycle Listener

Добрый день, коллеги!
Подскажите, как можно получить события создания/изменения/удаления переменной?
ранее использовал activiti и там были такие события. В камунде не нашел возможности сделать кастомный лиснер, чтобы осуществить такое.

для чего нужно?
для отладочного протоколирования как менялась переменная. было удобно видеть по всем событиям как ведет себя процесс онлайн, а не искать в итории. Да и переменная может измениться несколько раз.

как последний вариант рассматриваю свою сборку engine, но не хотелось бы. Вдруг есть какой-то более правильный вариант.

Последнее что попробовал - при событии старта ExecutionEntity добавляю к нему свой лиснер:
if (executionDelegate.getEventName().equalsIgnoreCase(“start”)) {
((ExecutionEntity) executionDelegate)
.addVariableListener(new VariableInstanceEntityChangeListener());

, но почемуто срабатывает только onCreate.
Если есть 2 таски, где происходит создание , а потом изменение переменной - событие onUpdate не срабатывает.

Заранее благодарю за любую помощь!

а что мешает натыкать сервис тасок с листнерами, что бы они писали состояние переменной после каждого шага?

@gorelikovav Добрый день!

Рассматривали комбинацию Event subprocess + conditional event (непрерывающий)?
Для Conditional event задать нужную переменную процесса + перечень отслеживаемых событий.

https://docs.camunda.org/manual/7.15/reference/bpmn20/events/conditional-events/

image

В этом случае будет сохраняться последнее состояние, а вопрошающему нужен список во все моменты… хотя, как вариант, можно поставить массив, который будет писать все что нужно. Честно говоря я хз как в БД писать определенные данные, еще не работал с этим вопросом…

дополню вопрос:
я не хочу править 100500 процессов.
на данный момент в движке я сделал следующее:

  • поставил полную историю
  • отключил запись истории в базу
  • подключил соответствующие плагины + слушатель спрингбутовых событий

в итоге получил что-то приближенное к желаемому, но таким решением я не отловлю событие изменения/удаления переменной.

предложенные варианты - решения для конкретных процессов, а хочется для движка сделать.