У меня есть процесс Camunda, который запускается периодически каждые 15 минут, который настроен с использованием выражения CRON. Я использую конфигурацию по умолчанию для подключения к MariaDB со стандартной конфигурацией источника данных .
Процесс Камунды myProcess.bpmn
Определение таймера:
- Процесс
starteble
и executable
- Тип определения таймера -
Cycle
, а определение таймера - 0 0 0 ? * * *
.
На основе Документация по Job Executor Я наблюдал это значение сохраняется в таблице ACT_RU_JOB
в столбце REPEAT_
.
SELECT ID_, REPEAT_ from act_ru_job;
--------------------------------------------------------
| ID_ | REPEAT_ |
--------------------------------------------------------
| 0d1f49da-83a8-11ea-a61b-98fa9b04dfaf | 0 0 0 ? * * * |
--------------------------------------------------------
Изменение выражения CRON прямо в myProcess.bpmn
с помощью Camunda Modeler и перезапуск приложения обновили это значение в базе данных, и Process Orchestrator работает с новым значением.
Проблема
Как только я динамически загружаю это значение из свойств приложения через bean-компоненты, загружается новое значение из свойств, зарегистрировано , но не хранится в базе данных, поэтому Camunda работает со старым.
application.properties
с другим случайным значением: process.timer: 1 2 3 ? * * *
@Slf4j
@Configuration
public class TimerConfiguration {
@Value("${process.timer}")
private String timerExpression;
@Bean
public String timerExpression() {
// the log truly logs 1 2 3 ? * * *
log.info("Periodical timer expression has been configured to: {}", timerExpression);
return timerExpression;
}
}
Camunda Process myProcess.bpmn
Определение таймера ( Ссылка на экран ) использует значение Dynami c в качестве определения таймера:
${timerConfiguration.timerExpression()}
Вопрос
Как заставить Camunda синхронизировать сконфигурированные данные с базой данных, которую он использует? Исключений нет, приложение продолжает использовать старую конфигурацию из базы данных.
SELECT ID_, REPEAT_ from act_ru_job;
Запрос возвращает старое значение. Когда выражение CRON устанавливается вручную прямо внутри процесса myProcess.bpmn
, значение обновляется после перезапуска.