Добрый день, недавно работаю с комундой, можно сказать не шарю совсем. Возникла проблема. Есть процесс запускающийся по таймеру раз в минуту. Забирает данные из БД молотит и обновляет их. Как сделать так чтобы при следующем запуске таймера, если предидущий процесс уже запущен и не завершен новый не запускался? Можно как-то в делегате проверить количество процессов перед началом нового?
У вас по сути не бизнес-процесс, а шедулер, запускающий джобу. Поэтому не запускайте несколько экземпляров процесса, а просто зациклите один и пусть он выполняется в бесконечном цикле с интервалом в одну минуту между звершением предыдущего цикла и запуском следующего.
Процесс запуститься по таймеру, но в первом операторе вы моете проверить наличие других процессов через CamundaUrl + '/process-instance?processDefinitionKey=' + process rest api
> Jobs are acquired only with high delay or never > A job is available, but not acquired for execution or only with great delay. > Too much time elapses between acquisition and execution of a job.
Можно провести такой эксперимент на Камунде, которой больше никто не пользуется:
1. Записать количество задач. А = SELECT COUNT(*) FROM ACT_RU_JOB + SELECT COUNT(*) FROM ACT_HI_JOB. 2. Отправить 1000 запросов в минуту через REST. 3. Снова посмотреть сколько задач в базе. B = SELECT COUNT(*) FROM ACT_RU_JOB + SELECT COUNT(*) FROM ACT_HI_JOB. Далее есть варианты: 3.1. B-A = 1000. В этом случае проблема не в Томкате, т. к. задачи создались. Тогда нужно смотреть ту ссылку про job executor. 3.2. (B - A) < 1000. В этом случае проблема не в Камунде. Это может быть сеть, это может быть Томкат или еще что-то.