Sprigbook 2.x配置Activiti 7単独データソースの問題を解決します。
1|1概要
最近は最新のActiviti 7に基づいてSpringBoot 2が配置されています。
簡単に使いました。市場でActiviti 7を解決する教程はとても少なくて、採坑も比較的に多いことを発見して、Activiti 6配置データ源とActiviti 7はある程度区別して、Activiti 6に基づいてActiviti 7の中で正常に使うことができないのです。じゃ、違いを見ましょう。
1|2問題
Activiti 6マルチデータソース配置
6の配置は比較的簡単です。
設定を先に追加:@ConfigrationProptiesでspring.datasource.activitiで始まるDataSourceをロードします。 ActivitiConfigを作成し、Abstract ProcessEnfigration法を継承してSpring Process Enfignation法を注入し、作成したデータをAbstract ProcessEnd AutoConfigrationメソッドに注入します。
1|3修復
Activiti 7多データソース配置
配置は上のほうがいいです。 ActivitiConfigを作成し、Abstract Process EngingAutoConfigrationを引き継ぎます。 @ConfigrationPropertiesでspring.datasource.activitiで始まるDataSource をロードします。
以上の構成では、jdbcUrl is required with driverClass Nameエラーが発生する可能性があります。
解決方法は以下の通りです
Activiti 7国内の教程は多くなくて、自分がコミュニティの中であるいは公式の文書でなければならなくて、ソースは理解を見に行きます。
コードの例住所:activiti-starter
締め括りをつける
以上述べましたが、Springbook t 11.x配置Activiti 7の単独データソースの問題を解決するために、皆さんに助けてほしいです。もし何か質問があれば、メッセージをください。編集者はすぐに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。
本文があなたのためになると思ったら、転載を歓迎します。出所を明記してください。ありがとうございます。
最近は最新のActiviti 7に基づいてSpringBoot 2が配置されています。
簡単に使いました。市場でActiviti 7を解決する教程はとても少なくて、採坑も比較的に多いことを発見して、Activiti 6配置データ源とActiviti 7はある程度区別して、Activiti 6に基づいてActiviti 7の中で正常に使うことができないのです。じゃ、違いを見ましょう。
1|2問題
Activiti 6マルチデータソース配置
6の配置は比較的簡単です。
設定を先に追加:
# activiti
spring.datasource.activiti.driver=com.mysql.jdbc.Driver
spring.datasource.activiti.url=jdbc:mysql://10.1.1.97:3311/test-activiti7-db?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true
spring.datasource.activiti.username=root
spring.datasource.activiti.password=Rtqw123OpnmER
spring.datasource.activiti.driverClassName=com.mysql.jdbc.Driver
@Configuration
public class ActivitiConfig extends AbstractProcessEngineAutoConfiguration {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.activiti")
public DataSource activitiDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
public SpringProcessEngineConfiguration springProcessEngineConfiguration(
PlatformTransactionManager transactionManager,
SpringAsyncExecutor springAsyncExecutor) throws IOException {
return baseSpringProcessEngineConfiguration(
activitiDataSource(),
transactionManager,
springAsyncExecutor);
}
}
Activiti 6のデータソースはすでに配置されていますが、7なら見つけられます。AbstractProcessEngineAutoConfiguration#baseSpringProcessEngineConfiguration
方法はすでに存在しなくなりました。私たちは生産試験のソースコード構築方式を改造する必要があります。1|3修復
Activiti 7多データソース配置
配置は上のほうがいいです。
@Configuration
public class ActivitiConfig extends AbstractProcessEngineAutoConfiguration {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.activiti")
public DataSource activitiDataSource() {
return DataSourceBuilder.create().build();
}
...
}
SpringProcessEngineConfiguration :
@Bean
@Primary
public SpringProcessEngineConfiguration springProcessEngineConfiguration(
PlatformTransactionManager transactionManager,
SpringAsyncExecutor springAsyncExecutor,
ActivitiProperties activitiProperties,
ProcessDefinitionResourceFinder processDefinitionResourceFinder,
@Autowired(required = false) DefaultActivityBehaviorFactoryMappingConfigurer processEngineConfigurationConfigurer,
@Autowired(required = false) List<ProcessEngineConfigurator> processEngineConfigurators,
UserGroupManager userGroupManager,
DataSource dataSource) throws IOException {
SpringProcessEngineConfiguration conf = new SpringProcessEngineConfiguration();
conf.setConfigurators(processEngineConfigurators);
configureProcessDefinitionResources(processDefinitionResourceFinder,
conf);
conf.setDataSource(dataSource);
conf.setTransactionManager(transactionManager);
if (springAsyncExecutor != null) {
conf.setAsyncExecutor(springAsyncExecutor);
}
conf.setDeploymentName(activitiProperties.getDeploymentName());
conf.setDatabaseSchema(activitiProperties.getDatabaseSchema());
conf.setDatabaseSchemaUpdate(activitiProperties.getDatabaseSchemaUpdate());
conf.setDbHistoryUsed(activitiProperties.isDbHistoryUsed());
conf.setAsyncExecutorActivate(activitiProperties.isAsyncExecutorActivate());
if (!activitiProperties.isAsyncExecutorActivate()) {
ValidatorSet springBootStarterValidatorSet = new ValidatorSet("activiti-spring-boot-starter");
springBootStarterValidatorSet.addValidator(new AsyncPropertyValidator());
if (conf.getProcessValidator() == null) {
ProcessValidatorImpl processValidator = new ProcessValidatorImpl();
processValidator.addValidatorSet(springBootStarterValidatorSet);
conf.setProcessValidator(processValidator);
} else {
conf.getProcessValidator().getValidatorSets().add(springBootStarterValidatorSet);
}
}
conf.setMailServerHost(activitiProperties.getMailServerHost());
conf.setMailServerPort(activitiProperties.getMailServerPort());
conf.setMailServerUsername(activitiProperties.getMailServerUserName());
conf.setMailServerPassword(activitiProperties.getMailServerPassword());
conf.setMailServerDefaultFrom(activitiProperties.getMailServerDefaultFrom());
conf.setMailServerUseSSL(activitiProperties.isMailServerUseSsl());
conf.setMailServerUseTLS(activitiProperties.isMailServerUseTls());
if (userGroupManager != null) {
conf.setUserGroupManager(userGroupManager);
}
conf.setHistoryLevel(activitiProperties.getHistoryLevel());
conf.setCopyVariablesToLocalForTasks(activitiProperties.isCopyVariablesToLocalForTasks());
conf.setSerializePOJOsInVariablesToJson(activitiProperties.isSerializePOJOsInVariablesToJson());
conf.setJavaClassFieldForJackson(activitiProperties.getJavaClassFieldForJackson());
if (activitiProperties.getCustomMybatisMappers() != null) {
conf.setCustomMybatisMappers(
getCustomMybatisMapperClasses(activitiProperties.getCustomMybatisMappers()));
}
if (activitiProperties.getCustomMybatisXMLMappers() != null) {
conf.setCustomMybatisXMLMappers(
new HashSet<>(activitiProperties.getCustomMybatisXMLMappers()));
}
if (activitiProperties.getCustomMybatisXMLMappers() != null) {
conf.setCustomMybatisXMLMappers(
new HashSet<>(activitiProperties.getCustomMybatisXMLMappers()));
}
if (activitiProperties.isUseStrongUuids()) {
conf.setIdGenerator(new StrongUuidGenerator());
}
if (activitiProperties.getDeploymentMode() != null) {
conf.setDeploymentMode(activitiProperties.getDeploymentMode());
}
conf.setActivityBehaviorFactory(new DefaultActivityBehaviorFactory());
if (processEngineConfigurationConfigurer != null) {
processEngineConfigurationConfigurer.configure(conf);
}
return conf;
}
private void configureProcessDefinitionResources(
ProcessDefinitionResourceFinder processDefinitionResourceFinder,
SpringProcessEngineConfiguration conf) throws IOException {
List<Resource> procDefResources = processDefinitionResourceFinder
.discoverProcessDefinitionResources();
if (!procDefResources.isEmpty()) {
conf.setDeploymentResources(procDefResources.toArray(new Resource[0]));
}
}
1|4よくあるエラー以上の構成では、jdbcUrl is required with driverClass Nameエラーが発生する可能性があります。
解決方法は以下の通りです
# activiti
spring.datasource.activiti.driver=com.mysql.jdbc.Driver
spring.datasource.activiti.url=jdbc:mysql://10.1.1.97:3311/test-activiti7-db?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true
# url jdbc-url jdbcUrl is required with driverClassName
# :
# , , IDE ( DataSource )。
# , Hikari, , Hikari url ( jdbcUrl )。 , :
spring.datasource.activiti.jdbc-url=${spring.datasource.activiti.url}
spring.datasource.activiti.username=root
spring.datasource.activiti.password=Rtqw123OpnmER
spring.datasource.activiti.driverClassName=com.mysql.jdbc.Driver
1|5まとめActiviti 7国内の教程は多くなくて、自分がコミュニティの中であるいは公式の文書でなければならなくて、ソースは理解を見に行きます。
コードの例住所:activiti-starter
締め括りをつける
以上述べましたが、Springbook t 11.x配置Activiti 7の単独データソースの問題を解決するために、皆さんに助けてほしいです。もし何か質問があれば、メッセージをください。編集者はすぐに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。
本文があなたのためになると思ったら、転載を歓迎します。出所を明記してください。ありがとうございます。