Не работают timer boundary events в Alfresco's Activiti 6

 
 
 
Сообщения:61
Здравствуйте. У нас в фирме используется Alfresco's Activiti 6, и необходимо добавить timer boundary events на bpm-схему. Всяко-разно пробовал, и никак не получается сделать, чтобы он срабатывал. Пример моей 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();
        }


В документации написано, что таймеры работают, только если asyncExecutorActivate установлен в true. И нашёл метод setAsyncExecutorActivate у ProcessEngineConfiguration. Но использование этого метода ничего не даёт.

Также находил такое решение в сети:
    // Async Job Executor
    final DefaultAsyncJobExecutor asyncExecutor = new DefaultAsyncJobExecutor();
    asyncExecutor.setMaxPoolSize(50);
    asyncExecutor.setQueueSize(100);
    processEngineConfiguration.setAsyncExecutor(asyncExecutor);

Но оно тоже мне не помогает, хотя asyncExecutor после этого уже не true.

ЗЫЫ Проверил через Activiti Modeler (составил там простую схему с таймерам) - там всё работает.

Написал простенькое приложение без спринга (на свинге). Использовал класс StandaloneProcessEngineConfiguration, не использовал ProcessEngineBeanFactoryBean. И тоже всё работало. Но только пока после boundary timer-а не стоит script task или service task. С ними - не работает (по первому не находит движок груви, по второму - не видит указанный класс (причём указываю полное имя класса, и он там точно есть)). Если после boundary timer стоит user task или manual task, то всё нормально отрабатывает. Почему не работает с script task и service task я таки и не понял. Осталось попробовать с классами SpringProcessEngineConfiguration и ProcessEngineBeanFactoryBean, и с контейнеров бинов спринга.
Изменен:07 ноя 2018 09:44
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет