@ andy-
wilkinson给出了答案,但这是如何使用它的示例。根据您的建议,创建另一个
DataSource,然后将其连接到
SpringProcessEngineConfiguration。像这样:
@Configurationpublic 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。基本上,它
customerId在
WaiterEntity/中保留a
WaiterRepository(使用Spring Data
JPA-为简洁起见,然后将其保留)传递到Activiti
basic2.bpmn进程,该进程仅将其打印出到控制台。
@SpringBootApplicationpublic 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); }}注意
@Primary上
primaryDataSource。如果您省略该
WAITER_ENTITY表,则将在中创建表
activitiDataSource(没有任何其他特定配置)。



