Не срабатывают boundary timers. Использую Activiti 6. Если ставлю что-то после таймера, то процесс идёт по своему обычному маршруту. Если ничего не ставлю, идёт из ветки, исходящей из таймера. При этом без разницы, какой промежуток времени стоит у таймера: процесс идёт по той или по другой ветке сразу же. Кусок моей bpm-схемы с таймером:
Для создания объектов для работы с движком Активити использую Spring 5. Вот часть моего класса конфигурации:
@Bean
SpringProcessEngineConfiguration processEngineConfiguration(@Qualifier("dataSourceForActiviti") DataSource dataSourceForActiviti,
@Qualifier("transactionManagerForActiviti") PlatformTransactionManager transactionManagerForActiviti) {
SpringProcessEngineConfiguration processEngineConfiguration = new SpringProcessEngineConfiguration();
processEngineConfiguration.setTransactionManager(transactionManagerForActiviti);
processEngineConfiguration.setDataSource(dataSourceForActiviti)
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE)
.setAsyncExecutorActivate(true)
;
processEngineConfiguration.setDeploymentResources(new Resource[]{
new ClassPathResource("bpm/LicensingProcess.bpmn20.xml"),
new ClassPathResource("bpm/ReissuanceLicenseProcess.bpmn20.xml"),
new ClassPathResource("bpm/IssueOfDuplicateProcess.bpmn20.xml"),
new ClassPathResource("bpm/IssuanceOfCopyProcess.bpmn20.xml"),
new ClassPathResource("bpm/TerminationOfLicenseProcess.bpmn20.xml"),
new ClassPathResource("bpm/ExtractFromRegisterOfLicensesProcess.bpmn20.xml")
});
return processEngineConfiguration;
}
@Bean
ProcessEngineFactoryBean processEngineFactoryBean(SpringProcessEngineConfiguration processEngineConfiguration) {
ProcessEngineFactoryBean processEngineFactoryBean = new ProcessEngineFactoryBean();
processEngineFactoryBean.setProcessEngineConfiguration(processEngineConfiguration);
return processEngineFactoryBean;
}
@Bean
RepositoryService repositoryService(ProcessEngineFactoryBean processEngineFactoryBean) throws Exception {
return processEngineFactoryBean.getObject().getRepositoryService();
}
@Bean
RuntimeService runtimeService(ProcessEngineFactoryBean processEngineFactoryBean) throws Exception {
return processEngineFactoryBean.getObject().getRuntimeService();
}
@Bean
TaskService taskService(ProcessEngineFactoryBean processEngineFactoryBean) throws Exception {
return processEngineFactoryBean.getObject().getTaskService();
}
Я пробовал использовать метод setAsyncExecutorActivate
, и передавал в качестве аргумента и true
, и false
- и разницы не заметил. Хотя в документации сказано, что нужно устанавливать значение asyncExecutorActivate
в true
PS Нашёл такое решение (добавляется в опредление бина ProcessEngineConfiguration
):
// Async Job Executor
final DefaultAsyncJobExecutor asyncExecutor = new DefaultAsyncJobExecutor();
asyncExecutor.setMaxPoolSize(50);
asyncExecutor.setQueueSize(100);
processEngineConfiguration.setAsyncExecutor(asyncExecutor);
Но оно также не помогает мне. Хотя после добавления этого кода asyncJobExecutor
уже не равен null
PSS В тоже время, подобная схема прекрасно работает в Activiti Modeler. И я пока не могу понять, поэтому это хорошо работает там и не работает у меня.
PSSS Написал простенькое приложение без спринга (на свинге). Использовал класс StandaloneProcessEngineConfiguration
, не использовал ProcessEngineBeanFactoryBean
. И тоже всё работало. Но только пока после boundary timer
-а не стоит script task
или service task
. С ними - не работает (по первому не находит движок груви, по второму - не видит указанный класс (причём указываю полное имя класса, и он там точно есть)). Если после boundary timer
стоит user task
или manual task
, то всё нормально отрабатывает. Почему не работает с script task
и service task
я таки и не понял. Осталось попробовать с классами SpringProcessEngineConfiguration
и ProcessEngineBeanFactoryBean
, и с контейнером бинов спринга.
Таймеры не работают, когда параллельно запущен Activiti Modeler, использующий ту же базу. При выключении этого приложение всё начинает работать.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Есть массив String, перевожу его в List, добавляю в циклЕсли в первом if срабатывает условие, то необходимо добавить в List символ
Что я делаю не так? У меня есть json файлВывод сделал, работает адекватно
На данный вопрос уже ответили: