Activiti. Непонятное поведение Boundary timer event

Добрый день. Столкнулись в процессе работы с загадочным поведением boundary timer event: в настроенном таймере время срабатывания PT5S (5 секунд). В реальности же таймер выполняется порядка 10 секунд. Для чистоты эксперимента создан юзертаск со временем 0, следом за ним - таймер с временем выполнения 5секунд. Итоговое время до завершения бп составило 10 секунд.
Используемый бизнес-процесс во вложении, используемая версия бд - Oracle 11g, версия платформы - 6.9.5.
Прошу подсказать, с чем может быть связано подобное поведение.

SERVICES_TIMER (4).json (6,2 КБ)

2 симпатии

Добрый день. Причина в том, что по умолчанию в Activiti интервал между чтениями заданий таймера равен 10 секунд (см. в документации Activiti параметр defaultTimerJobAcquireWaitTimeInMillis).
Если нужно проставить меньшее значение, можете, например, объявить в проекте AppContext.Listener и в нём проставить нужный интервал (в миллисекундах):

import com.haulmont.cuba.core.sys.AppContext;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.impl.asyncexecutor.AsyncExecutor;
import org.springframework.stereotype.Component;

import javax.inject.Inject;

@Component("bpmtimer_MyAppContextListener")
public class MyAppContextListener implements AppContext.Listener {

    @Inject
    protected ProcessEngineConfiguration processEngineConfiguration;

    public MyAppContextListener() {
        AppContext.addListener(this);
    }

    @Override
    public void applicationStarted() {
        AsyncExecutor asyncExecutor = processEngineConfiguration.getAsyncExecutor();
        if (asyncExecutor != null) {
            asyncExecutor.setDefaultTimerJobAcquireWaitTimeInMillis(1000);
        }
    }

    @Override
    public void applicationStopped() {}
}
2 симпатии

Спасибо большое!