Hi
I use spring boot and set camunda configuration as given below, When I set configuration as config.setDatabaseSchemaUpdate(“true”);
org.camunda.bpm.engine.ProcessEngineException: ENGINE-03017 Could not perform operation 'create' on database schema for SQL Statement:
error occured. When set this setting as drop-create, I didnot encounter any problem but our database dropped and also our data dropped. What should I do?
public SpringProcessEngineConfiguration processEngineConfiguration() throws IOException {
SpringProcessEngineConfiguration config = new SpringProcessEngineConfiguration();
config.setDataSource(dataSource);
config.setDatabaseSchemaUpdate("true");
config.setTransactionManager(transactionManager());
config.setHistory(historyLevel);
config.setJobExecutorActivate(true);
config.setMetricsEnabled(false);
// deploy all processes from folder 'processes'
Resource[] resources = resourceLoader.getResources("classpath:/bpmn/*.bpmn");
config.setDeploymentResources(resources);
return config;
}
@mtrwhitefang, For spring java config, refer the below:
SpringProcessEngineConfiguration
@Configuration
public class ExampleProcessEngineConfiguration {
@Bean
public DataSource dataSource() {
SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
dataSource.setDriverClass(org.h2.Driver.class);
dataSource.setUrl("jdbc:h2:mem:camunda;DB_CLOSE_DELAY=-1");
dataSource.setUsername("sa");
dataSource.setPassword("");
return dataSource;
}
@Bean
public PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean
public SpringProcessEngineConfiguration processEngineConfiguration() {
SpringProcessEngineConfiguration config = new SpringProcessEngineConfiguration();
config.setDataSource(dataSource());
config.setTransactionManager(transactionManager());
config.setDatabaseSchemaUpdate("true");
config.setHistory("audit");
config.setJobExecutorActivate(true);
return config;
}
@Bean
public ProcessEngineFactoryBean processEngine() {
ProcessEngineFactoryBean factoryBean = new ProcessEngineFactoryBean();
factoryBean.setProcessEngineConfiguration(processEngineConfiguration());
return factoryBean;
}
@Bean
public RepositoryService repositoryService(ProcessEngine processEngine) {
return processEngine.getRepositoryService();
}
@Bean
public RuntimeService runtimeService(ProcessEngine processEngine) {
return processEngine.getRuntimeService();
}
@Bean
public TaskService taskService(ProcessEngine processEngine) {
return processEngine.getTaskService();
}
// more engine services and additional beans ...
}
SimpleDriverDataSource can be used only for testing purpose, for production use either Apache BasicDatasource(DBCP) or HikariDatasource
@aravindhrs thanks for reply.
I use postgresql for in prod mode and I set datasource properties via .yml file as given below. I use this configuration my other project but I met this problem at first time
spring:
datasource:
initialization-mode: always
platform: postgres
url: jdbc:postgresql://localhost:5432/camunda
username: postgres
password: ***
@mtrwhitefang you have to follow one approach, either Java configuration or yaml configuration. There’s a chances for properties are being overridden by the both approaches.
@aravindhrs
thanks for reply.
I use example at camunda github repo. but schema-update(“true”) option give this error. Also how can I set this properties from .yml file.
camunda.bpm:
database:
schema-update: true
admin-user:
id: admin
password: admin
firstName: Kermit
filter:
create: All tasks
job-execution-enabled: true
history-level: full
auto-deployment-enabled: true
id-generator: strong
checkProcessDefinitions: true
deployment-resource-pattern: classpath:/bpmn/*.bpmn
dataSource:
schema-update: true
username: camunda
password: camunda