边界计时器不起作用。我使用的是 Activiti 6。如果我在计时器之后放了一些东西,那么该过程将遵循其通常的路线。如果我没有设置任何东西,它来自计时器的分支。同时,计时器的时间间隔无关紧要:进程立即沿着一个或另一个分支前进。我的一个带计时器的 bpm 方案:

为了创建对象以使用 Activity 引擎,我使用 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找到了这个解决方案(添加到bean定义中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-a 之后才值得script taskor service task。对他们不起作用(第一个没有找到groove引擎,第二个没有看到指定的类(我标明了类的全名,肯定是有的))。如果在boundary timerstand user taskor之后manual task,那么一切正常。为什么不起作用script task,service task我仍然不明白。仍然可以尝试使用 classesSpringProcessEngineConfiguration和ProcessEngineBeanFactoryBean,以及使用 spring bean 容器。
当 Activiti Modeler 使用相同的基础并行运行时,计时器不起作用。当您关闭此应用程序时,一切都会开始工作。