I am exploring the integration with MongoDB. The method I am using is to replace the corresponding DataManager in EngineConfigurationConfigurer bean.
@Bean
public EngineConfigurationConfigurer<SpringProcessEngineConfiguration> customProcessEngineConfigurer() {
return configuration -> {
log.info("enter customProcessEngineConfigurer>>>>>");
configuration.setEngineName("bpmn");
configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE);
configuration.setIdGenerator(idGenerator());
configuration.setEnableExecutionRelationshipCounts(false);
configuration.setEnableProcessDefinitionHistoryLevel(false);
MongoDbSessionFactory mongoDbSessionFactory = new MongoDbSessionFactory(this.mongoClient, this.mongoDatabase);
configuration.setCustomSessionFactories(Collections.singletonList(mongoDbSessionFactory));
ExecutionDataManager executionDataManger = new MongoDbExecutionDataManager(configuration.getProcessEngineConfiguration());
configuration.setExecutionDataManager(executionDataManger);
configuration.setExecutionEntityManager(new WedaExecutionEntityManagerImpl(configuration.getProcessEngineConfiguration(), executionDataManger));
configuration.initIdentityLinkServiceConfiguration(); // produces NPE if not inited
IdentityLinkServiceConfiguration identityLinkServiceConfiguration = configuration.getIdentityLinkServiceConfiguration();
IdentityLinkDataManager identityLinkDataManager = new MongoDbIdentityLinkDataManager(identityLinkServiceConfiguration);
identityLinkServiceConfiguration.setIdentityLinkDataManager(identityLinkDataManager);
identityLinkServiceConfiguration.setIdentityLinkEntityManager(new IdentityLinkEntityManagerImpl(identityLinkServiceConfiguration, identityLinkDataManager));
configuration.setIdentityLinkServiceConfiguration(identityLinkServiceConfiguration);
};
}
I’s using flowable-v6.7.0 & flowable-spring-boot-starter
Flowable engine configurations are as follow
flowable:
history-level: none
async-executor-activate: true
eventregistry:
enabled: false
app:
enabled: false
idm:
enabled: false
cmmn:
enabled: false
dmn:
enabled: false
form:
enabled: false
The problem is that the persistence of IdentityLinkEntity still goes to the default MybatisDataManager.
However the ExecutionDataManager above works as expected.
Is there any issue with my approach?
Best regards
sanbai