Java源码示例:org.activiti.spring.SpringAsyncExecutor
示例1
public SpringProcessEngineConfiguration processEngineConfigurationBean(Resource[] processDefinitions,
DataSource dataSource,
PlatformTransactionManager transactionManager,
SpringAsyncExecutor springAsyncExecutor)
throws IOException {
SpringProcessEngineConfiguration engine = new SpringProcessEngineConfiguration();
if (processDefinitions != null && processDefinitions.length > 0) {
engine.setDeploymentResources(processDefinitions);
}
engine.setDataSource(dataSource);
engine.setTransactionManager(transactionManager);
if (null != springAsyncExecutor) {
engine.setAsyncExecutor(springAsyncExecutor);
}
return engine;
}
示例2
/**
* Ensure that the Activiti's thread pool uses the correct configuration value.
*
* This assertion is limited in that the configuration values must be set before Spring application context is initialized, which we cannot control easily
* in unit test.
*/
@Test
public void testActivitiThreadPoolUsesConfiguredValues()
{
AsyncExecutor asyncExecutor = processEngineConfiguration.getAsyncExecutor();
SpringAsyncExecutor springAsyncExecutor = (SpringAsyncExecutor) asyncExecutor;
TaskExecutor taskExecutor = springAsyncExecutor.getTaskExecutor();
ThreadPoolTaskExecutor threadPoolTaskExecutor = (ThreadPoolTaskExecutor) taskExecutor;
Integer corePoolSize = threadPoolTaskExecutor.getCorePoolSize();
Integer maxPoolSize = threadPoolTaskExecutor.getMaxPoolSize();
Integer keepAliveSeconds = threadPoolTaskExecutor.getKeepAliveSeconds();
// No real easy way of getting the queue capacity from the already constructed thread pool
Integer remainingCapacity = ((LinkedBlockingQueue<?>) threadPoolTaskExecutor.getThreadPoolExecutor().getQueue()).remainingCapacity();
assertEquals(configurationHelper.getProperty(ConfigurationValue.ACTIVITI_THREAD_POOL_CORE_POOL_SIZE, Integer.class), corePoolSize);
assertEquals(configurationHelper.getProperty(ConfigurationValue.ACTIVITI_THREAD_POOL_MAX_POOL_SIZE, Integer.class), maxPoolSize);
assertEquals(configurationHelper.getProperty(ConfigurationValue.ACTIVITI_THREAD_POOL_KEEP_ALIVE_SECS, Integer.class), keepAliveSeconds);
assertEquals(configurationHelper.getProperty(ConfigurationValue.ACTIVITI_THREAD_POOL_QUEUE_CAPACITY, Integer.class), remainingCapacity);
}
示例3
@Bean
public SpringProcessEngineConfiguration springProcessEngineConfiguration(DataSource dataSource, PlatformTransactionManager transactionManager,
SpringAsyncExecutor springAsyncExecutor
) throws IOException {
SpringProcessEngineConfiguration engineConfiguration = baseSpringProcessEngineConfiguration(
dataSource,
transactionManager,
springAsyncExecutor);
Map<String, List<ActivitiEventListener>> typedListeners = new HashMap<>();
typedListeners.put("TASK_CREATED", Collections.singletonList(taskCreatedListener()));
typedListeners.put("TASK_COMPLETED", Collections.singletonList(taskCompletedListener()));
engineConfiguration.setTypedEventListeners(typedListeners);
return engineConfiguration;
}
示例4
@Bean
@ConditionalOnMissingBean
public SpringProcessEngineConfiguration springProcessEngineConfiguration(
DataSource dataSource, EntityManagerFactory entityManagerFactory,
PlatformTransactionManager transactionManager, SpringAsyncExecutor springAsyncExecutor) throws IOException {
SpringProcessEngineConfiguration config = this.baseSpringProcessEngineConfiguration(dataSource,
transactionManager, springAsyncExecutor);
config.setJpaEntityManagerFactory(entityManagerFactory);
config.setTransactionManager(transactionManager);
config.setJpaHandleTransaction(false);
config.setJpaCloseEntityManager(false);
return config;
}
示例5
@Bean
@ConditionalOnMissingBean
public SpringProcessEngineConfiguration springProcessEngineConfiguration(
DataSource dataSource,
PlatformTransactionManager transactionManager,
SpringAsyncExecutor springAsyncExecutor) throws IOException {
return this.baseSpringProcessEngineConfiguration(dataSource, transactionManager, springAsyncExecutor);
}
示例6
@Bean
public SpringProcessEngineConfiguration springProcessEngineConfiguration(
@Qualifier("activitidatabaseSource") DataSource dataSource,
@Qualifier("activitiTransactionManager") PlatformTransactionManager transactionManager,
SpringAsyncExecutor springAsyncExecutor) throws IOException {
return this.baseSpringProcessEngineConfiguration(dataSource, transactionManager, springAsyncExecutor);
}
示例7
/**
* Ensure that the Activiti's thread pool is separate from the application's generic thread pool.
*/
@Test
public void testActivitiThreadPoolIsIsolatedFromGenericAsyncPool()
{
AsyncExecutor asyncExecutor = processEngineConfiguration.getAsyncExecutor();
SpringAsyncExecutor springAsyncExecutor = (SpringAsyncExecutor) asyncExecutor;
TaskExecutor taskExecutor = springAsyncExecutor.getTaskExecutor();
assertTrue(genericTaskExecutor != taskExecutor);
}
示例8
@Bean
public SpringAsyncExecutor springAsyncExecutor(TaskExecutor taskExecutor) {
return new SpringAsyncExecutor(taskExecutor, springRejectedJobsHandler());
}
示例9
protected SpringProcessEngineConfiguration baseSpringProcessEngineConfiguration(DataSource dataSource, PlatformTransactionManager platformTransactionManager,
SpringAsyncExecutor springAsyncExecutor) throws IOException {
List<Resource> procDefResources = this.discoverProcessDefinitionResources(
this.resourceLoader, this.activitiProperties.getProcessDefinitionLocationPrefix(),
this.activitiProperties.getProcessDefinitionLocationSuffixes(),
this.activitiProperties.isCheckProcessDefinitions());
SpringProcessEngineConfiguration conf = super.processEngineConfigurationBean(
procDefResources.toArray(new Resource[procDefResources.size()]), dataSource,
platformTransactionManager, springAsyncExecutor);
conf.setDeploymentName(defaultText(activitiProperties.getDeploymentName(), conf.getDeploymentName()));
conf.setDatabaseSchema(defaultText(activitiProperties.getDatabaseSchema(), conf.getDatabaseSchema()));
conf.setDatabaseSchemaUpdate(defaultText(activitiProperties.getDatabaseSchemaUpdate(), conf.getDatabaseSchemaUpdate()));
conf.setDbIdentityUsed(activitiProperties.isDbIdentityUsed());
conf.setDbHistoryUsed(activitiProperties.isDbHistoryUsed());
conf.setAsyncExecutorActivate(activitiProperties.isAsyncExecutorActivate());
conf.setMailServerHost(activitiProperties.getMailServerHost());
conf.setMailServerPort(activitiProperties.getMailServerPort());
conf.setMailServerUsername(activitiProperties.getMailServerUserName());
conf.setMailServerPassword(activitiProperties.getMailServerPassword());
conf.setMailServerDefaultFrom(activitiProperties.getMailServerDefaultFrom());
conf.setMailServerUseSSL(activitiProperties.isMailServerUseSsl());
conf.setMailServerUseTLS(activitiProperties.isMailServerUseTls());
conf.setHistoryLevel(activitiProperties.getHistoryLevel());
if (activitiProperties.getCustomMybatisMappers() != null) {
conf.setCustomMybatisMappers(getCustomMybatisMapperClasses(activitiProperties.getCustomMybatisMappers()));
}
if (activitiProperties.getCustomMybatisXMLMappers() != null) {
conf.setCustomMybatisXMLMappers(new HashSet<String>(activitiProperties.getCustomMybatisXMLMappers()));
}
if (activitiProperties.getCustomMybatisMappers() != null) {
conf.setCustomMybatisMappers(getCustomMybatisMapperClasses(activitiProperties.getCustomMybatisMappers()));
}
if (activitiProperties.getCustomMybatisXMLMappers() != null) {
conf.setCustomMybatisXMLMappers(new HashSet<String>(activitiProperties.getCustomMybatisXMLMappers()));
}
if (processEngineConfigurationConfigurer != null) {
processEngineConfigurationConfigurer.configure(conf);
}
//从ActivitiEngineConfiguration copy来的
FormEngineConfiguration formEngineConfiguration = new FormEngineConfiguration();
formEngineConfiguration.setDataSource(dataSource);
FormEngineConfigurator formEngineConfigurator = new FormEngineConfigurator();
formEngineConfigurator.setFormEngineConfiguration(formEngineConfiguration);
conf.addConfigurator(formEngineConfigurator);
DmnEngineConfiguration dmnEngineConfiguration = new DmnEngineConfiguration();
dmnEngineConfiguration.setDataSource(dataSource);
DmnEngineConfigurator dmnEngineConfigurator = new DmnEngineConfigurator();
dmnEngineConfigurator.setDmnEngineConfiguration(dmnEngineConfiguration);
conf.addConfigurator(dmnEngineConfigurator);
return conf;
}