Hello,
I wanted to double check with others to see if my datasource configuration is correct for my use case. I am using two MySQL databases, the first is used for storage of my business data while the second is used for my embedded Camunda process engine. I want to keep the first database as the primary to be used for my other methods. I have this following current configuration based off of what I read here: Process Engine Configuration | docs.camunda.org
@Configuration
@Import(SpringProcessEngineServicesConfiguration.class)
public class WorkflowEngineConfig {
@Value("${spring.datasource.url}")
private String dbSourceUrl;
@Value("${spring.datasource.username}")
private String dbUserName;
@Value("${spring.datasource.password}")
private String dbPassword;
@Value("${spring.datasource.driver-class-name}")
private String dbDriverClassName;
@Bean
@Primary
@ConfigurationProperties(prefix="spring.datasource")
public DataSource primaryDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUrl(dbSourceUrl);
dataSource.setUsername(dbUserName);
dataSource.setPassword(dbPassword);
dataSource.setDriverClassName(dbDriverClassName);
return dataSource;
}
@Bean
@ConfigurationProperties(prefix="workflow.datasource")
public DataSource workflowDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
public PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(workflowDataSource());
}
@Bean
public SpringProcessEngineConfiguration processEngineConfiguration(
@Value("classpath*:*.bpmn") Resource[] deploymentResources) {
SpringProcessEngineConfiguration config = new SpringProcessEngineConfiguration();
config.setProcessEngineName("workflow-engine");
config.setDataSource(workflowDataSource());
config.setTransactionManager(transactionManager());
config.setDatabaseSchemaUpdate("true");
config.setJobExecutorActivate(true);
config.setDeploymentResources(deploymentResources);
config.setHistory("full");
return config;
}
@Bean
public ProcessEngineFactoryBean engineFactory(SpringProcessEngineConfiguration engineConfiguration) {
ProcessEngineFactoryBean factoryBean = new ProcessEngineFactoryBean();
factoryBean.setProcessEngineConfiguration(engineConfiguration);
return factoryBean;
}
@Bean
public ProcessEngine processEngine(ProcessEngineFactoryBean factoryBean) throws Exception {
return factoryBean.getObject();
}
}
I wanted to make sure that with this configuration, I’m able to save to both databases properly as I work on adding new workflows to my Java application.
Thanks!