added multi-configurer support

This commit is contained in:
2025-05-23 09:54:19 -04:00
parent cbf8c0e40b
commit fa8f480121

View File

@@ -0,0 +1,57 @@
package com.inteligr8.activiti.ext;
import java.util.Map;
import java.util.Map.Entry;
import org.activiti.engine.cfg.ProcessEngineConfigurator;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import com.activiti.api.engine.ProcessEngineConfigurationConfigurer;
@Component(MultiProcessEngineConfigurer.BEAN_NAME)
@Primary
public class MultiProcessEngineConfigurer implements ProcessEngineConfigurationConfigurer {
public static final String BEAN_NAME = "inteligr8.multiext.processEngineConfigurer";
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private ApplicationContext applicationContext;
@Override
public void processEngineConfigurationInitialized(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
this.logger.info("Multi-Ext enabled for ProcessEngineConfigurationConfigurer");
this.wrapSpringProcessEngineConfigurationConfigurers(springProcessEngineConfiguration);
this.wrapProcessEngineConfigurators(springProcessEngineConfiguration);
}
private void wrapSpringProcessEngineConfigurationConfigurers(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
Map<String, ProcessEngineConfigurationConfigurer> beans = this.applicationContext.getBeansOfType(ProcessEngineConfigurationConfigurer.class);
beans.remove(BEAN_NAME);
this.logger.debug("Executing {} spring process engine configurers", beans.size());
for (Entry<String, ProcessEngineConfigurationConfigurer> configurer : beans.entrySet()) {
this.logger.trace("Executing spring process engine configurer: {}: {}", configurer.getKey(), configurer.getValue().getClass());
configurer.getValue().processEngineConfigurationInitialized(springProcessEngineConfiguration);
}
}
private void wrapProcessEngineConfigurators(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
Map<String, ProcessEngineConfigurator> beans = this.applicationContext.getBeansOfType(ProcessEngineConfigurator.class);
this.logger.debug("Executing {} process engine configurators", beans.size());
for (Entry<String, ProcessEngineConfigurator> configurator : beans.entrySet()) {
this.logger.trace("Executing process engine configurator: {}: {}", configurator.getKey(), configurator.getValue().getClass());
springProcessEngineConfiguration.addConfigurator(configurator.getValue());
}
}
}