您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Spring Boot应用中为Activiti指定单独的数据源

在Spring Boot应用中为Activiti指定单独的数据源

@ andy- wilkinson给出了答案,但这是如何使用它的示例。根据您的建议,创建另一个DataSource,然后将其连接到SpringProcessEngineConfiguration。像这样:

@Configuration
public class ActivitiConfiguration extends AbstractProcessEngineAutoConfiguration {

    @Bean
    @ConfigurationProperties(prefix = "datasource.activiti")
    public DataSource activitiDataSource() {
        return DataSourceBuilder
                .create()
                .url("jdbc:h2:mem:activiti")
                .username("activiti")
                .driverClassName("org.h2.Driver")
                .build();
    }

    @Bean
    public SpringProcessEngineConfiguration springProcessEngineConfiguration(
            PlatformTransactionManager transactionManager,
            SpringAsyncExecutor springAsyncExecutor) throws IOException {

        return baseSpringProcessEngineConfiguration(
                activitiDataSource(),
                transactionManager,
                springAsyncExecutor);
    }
}

Activiti将用于activitiDataSource创建其表并保留其数据。

现在,您可以创建另一个DataSource来携带应用程序表和数据。这是基于的基本示例spring-boot-sample- basic。基本上,它customerIdWaiterEntity/中保留a WaiterRepository(使用Spring Data JPA-为简洁起见,然后将其保留)传递到Activiti basic2.bpmn进程,该进程仅将其打印出到控制台。

@SpringBootApplication
public class Application {

    @Bean
    @Primary
    @ConfigurationProperties(prefix = "datasource.primary")
    public DataSource primaryDataSource() {
        return DataSourceBuilder
                .create()
                .url("jdbc:h2:mem:primary")
                .username("primary")
                .driverClassName("org.h2.Driver")
                .build();
    }

    @Bean
    CommandLineRunner basics(final RuntimeService runtimeService,
                             final WaiterRepository repository) {
        return new CommandLineRunner() {

            @Override
            public void run(String... strings) throws Exception {
                runtimeService.startProcessInstanceByKey(
                        "waiter2",
                        Collections.singletonMap(
                                "customerId",
                                (Object) repository.save(new WaiterEntity(123L)).getCustomerId()));
            }
        };
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

注意@PrimaryprimaryDataSource。如果您省略该WAITER_ENTITY表,则将在中创建表activitiDataSource(没有任何其他特定配置)。

Java 2022/1/1 18:23:43 有628人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶