使用PostgreSQL创建ProcessEngine时发生异常

时间:2019-06-16 19:23:26

标签: rule-engine camunda

我正在尝试以编程方式更新Camunda DMN表,并在更新后再次部署它。 但是在创建流程引擎时,获得了H2驱动程序的例外,但是对于给定的项目,我使用的是PostgreSQL数据库中的Camunda表。

ProcessEngine processEngine = ProcessEngineConfiguration
                .createStandaloneInMemProcessEngineConfiguration().buildProcessEngine();


org.camunda.bpm.engine.repository.Deployment deployment = processEngine.getRepositoryService()
                    .createDeployment()
                    .addString(fileName, Dmn.convertToString(dmnModelInstance))
                    .name("Deployment after update").deploy();                

java.sql.SQLException:在UnpooledDataSource上设置驱动程序时出错。原因:java.lang.ClassNotFoundException:org.h2.Driver     在org.apache.ibatis.datasource.unpooled.UnpooledDataSource.initializeDriver(UnpooledDataSource.java:221)     在org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:200)     在org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:196)     在org.apache.ibatis.datasource.unpooled.UnpooledDataSource.getConnection(UnpooledDataSource.java:93)     在org.apache.ibatis.datasource.pooled.PooledDataSource.popConnection(PooledDataSource.java:385)     在org.apache.ibatis.datasource.pooled.PooledDataSource.getConnection(PooledDataSource.java:89)     在org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl.initDatabaseType(ProcessEngineConfigurationImpl.java:1300)

1 个答案:

答案 0 :(得分:0)

您需要显式创建数据源bean,或者可以在bootstrap.yml或application.properties文件中声明数据源属性。

@Configuration
public class ExampleProcessEngineConfiguration {

  @Bean
  public DataSource dataSource() {
     // Use a JNDI data source or read the properties from
     // env or a properties file.
     // Note: The following shows only a simple data source
     // for In-Memory H2 database.

    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 ...

}