下面列出了org.springframework.boot.context.properties.source.MapConfigurationPropertySource#org.camunda.bpm.engine.spring.SpringProcessEngineConfiguration 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void preInit(SpringProcessEngineConfiguration configuration) {
final DatabaseProperty database = camundaBpmProperties.getDatabase();
configuration.setTransactionManager(transactionManager);
if (camundaDataSource == null) {
configuration.setDataSource(dataSource);
} else {
configuration.setDataSource(camundaDataSource);
}
configuration.setDatabaseType(database.getType());
configuration.setDatabaseSchemaUpdate(database.getSchemaUpdate());
if (!StringUtils.isEmpty(database.getTablePrefix())) {
configuration.setDatabaseTablePrefix(database.getTablePrefix());
}
if(!StringUtils.isEmpty(database.getSchemaName())) {
configuration.setDatabaseSchema(database.getSchemaName());
}
configuration.setJdbcBatchProcessing(database.isJdbcBatchProcessing());
}
private void setProcessEngineName(SpringProcessEngineConfiguration configuration) {
String processEngineName = StringUtils.trimAllWhitespace(camundaBpmProperties.getProcessEngineName());
if (!StringUtils.isEmpty(processEngineName) && !processEngineName.contains("-")) {
if (camundaBpmProperties.getGenerateUniqueProcessEngineName()) {
if (!processEngineName.equals(ProcessEngines.NAME_DEFAULT)) {
throw new RuntimeException(String.format("A unique processEngineName cannot be generated "
+ "if a custom processEngineName is already set: %s", processEngineName));
}
processEngineName = CamundaBpmProperties.getUniqueName(camundaBpmProperties.UNIQUE_ENGINE_NAME_PREFIX);
}
configuration.setProcessEngineName(processEngineName);
} else {
logger.warn("Ignoring invalid processEngineName='{}' - must not be null, blank or contain hyphen", camundaBpmProperties.getProcessEngineName());
}
}
@Override
public void preInit(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
GenericProperties genericProperties = camundaBpmProperties.getGenericProperties();
final Map<String, Object> properties = genericProperties.getProperties();
if (!CollectionUtils.isEmpty(properties)) {
ConfigurationPropertySource source = new MapConfigurationPropertySource(properties);
Binder binder = new Binder(source);
try {
if (genericProperties.isIgnoreUnknownFields()) {
binder.bind(ConfigurationPropertyName.EMPTY, Bindable.ofInstance(springProcessEngineConfiguration));
} else {
binder.bind(ConfigurationPropertyName.EMPTY, Bindable.ofInstance(springProcessEngineConfiguration), new NoUnboundElementsBindHandler(BindHandler.DEFAULT));
}
} catch (Exception e) {
throw LOG.exceptionDuringBinding(e.getMessage());
}
logger.debug("properties bound to configuration: {}", genericProperties);
}
}
@Bean
public ProcessEngineConfigurationImpl processEngineConfiguration() throws Exception {
SpringProcessWithCoverageEngineConfiguration config = new SpringProcessWithCoverageEngineConfiguration();
try {
Method setApplicationContext = SpringProcessEngineConfiguration.class.getDeclaredMethod("setApplicationContext", ApplicationContext.class);
if (setApplicationContext != null) {
setApplicationContext.invoke(config, applicationContext);
}
} catch (NoSuchMethodException e) {
// expected for Camunda < 7.8.0
}
config.setExpressionManager(expressionManager());
config.setTransactionManager(transactionManager());
config.setDataSource(dataSource());
config.setDatabaseSchemaUpdate("true");
config.setHistory(ProcessEngineConfiguration.HISTORY_FULL);
config.setJobExecutorActivate(false);
config.init();
return config;
}
@Override
public void preInit(SpringProcessEngineConfiguration configuration) {
final DatabaseProperty database = camundaBpmProperties.getDatabase();
configuration.setTransactionManager(transactionManager);
if (camundaDataSource == null) {
configuration.setDataSource(dataSource);
} else {
configuration.setDataSource(camundaDataSource);
}
configuration.setDatabaseType(database.getType());
configuration.setDatabaseSchemaUpdate(database.getSchemaUpdate());
if (!StringUtils.isEmpty(database.getTablePrefix())) {
configuration.setDatabaseTablePrefix(database.getTablePrefix());
}
if(!StringUtils.isEmpty(database.getSchemaName())) {
configuration.setDatabaseSchema(database.getSchemaName());
}
configuration.setJdbcBatchProcessing(database.isJdbcBatchProcessing());
}
private void setProcessEngineName(SpringProcessEngineConfiguration configuration) {
String processEngineName = StringUtils.trimAllWhitespace(camundaBpmProperties.getProcessEngineName());
if (!StringUtils.isEmpty(processEngineName) && !processEngineName.contains("-")) {
if (camundaBpmProperties.getGenerateUniqueProcessEngineName()) {
if (!processEngineName.equals(ProcessEngines.NAME_DEFAULT)) {
throw new RuntimeException(String.format("A unique processEngineName cannot be generated "
+ "if a custom processEngineName is already set: %s", processEngineName));
}
processEngineName = CamundaBpmProperties.getUniqueName(camundaBpmProperties.UNIQUE_ENGINE_NAME_PREFIX);
}
configuration.setProcessEngineName(processEngineName);
} else {
logger.warn("Ignoring invalid processEngineName='{}' - must not be null, blank or contain hyphen", camundaBpmProperties.getProcessEngineName());
}
}
@Override
public void preInit(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
GenericProperties genericProperties = camundaBpmProperties.getGenericProperties();
final Map<String, Object> properties = genericProperties.getProperties();
if (!CollectionUtils.isEmpty(properties)) {
ConfigurationPropertySource source = new MapConfigurationPropertySource(properties);
Binder binder = new Binder(source);
try {
if (genericProperties.isIgnoreUnknownFields()) {
binder.bind(ConfigurationPropertyName.EMPTY, Bindable.ofInstance(springProcessEngineConfiguration));
} else {
binder.bind(ConfigurationPropertyName.EMPTY, Bindable.ofInstance(springProcessEngineConfiguration), new NoUnboundElementsBindHandler(BindHandler.DEFAULT));
}
} catch (Exception e) {
throw LOG.exceptionDuringBinding(e.getMessage());
}
logger.debug("properties bound to configuration: {}", genericProperties);
}
}
@Bean
@ConditionalOnMissingBean(ProcessEngineConfigurationImpl.class)
public ProcessEngineConfigurationImpl processEngineConfigurationImpl(
List<ProcessEnginePlugin> processEnginePlugins) {
log.info("configure process engine configuration impl,class={}",
CustomSpringProcessEngineConfiguration.class.getName());
final SpringProcessEngineConfiguration configuration = CamundaSpringBootUtil
.initCustomFields(new CustomSpringProcessEngineConfiguration());
configuration.getProcessEnginePlugins().add(new CompositeProcessEnginePlugin(processEnginePlugins));
return configuration;
}
@Override
public void preInit(SpringProcessEngineConfiguration processEngineConfiguration) {
super.preInit(processEngineConfiguration);
List<BpmnParseListener> preParseListeners = processEngineConfiguration.getCustomPreBPMNParseListeners();
if (preParseListeners == null) {
preParseListeners = new ArrayList<BpmnParseListener>();
processEngineConfiguration.setCustomPreBPMNParseListeners(preParseListeners);
}
log.info("adding LocalBpmnParseListener:{}", processStartAndEndEventInitializer.getClass().getName());
preParseListeners.add(processStartAndEndEventInitializer);
}
@Bean
@ConditionalOnMissingBean(ProcessEngineConfigurationImpl.class)
public ProcessEngineConfigurationImpl processEngineConfigurationImpl(List<ProcessEnginePlugin> processEnginePlugins) {
final SpringProcessEngineConfiguration configuration = CamundaSpringBootUtil.springProcessEngineConfiguration();
configuration.getProcessEnginePlugins().add(new CompositeProcessEnginePlugin(processEnginePlugins));
return configuration;
}
protected void configureJobExecutor(SpringProcessEngineConfiguration configuration) {
// note: the job executor will be activated in
// org.camunda.bpm.spring.boot.starter.runlistener.JobExecutorRunListener
configuration.setJobExecutorActivate(false);
configuration.setJobExecutorDeploymentAware(camundaBpmProperties.getJobExecution().isDeploymentAware());
configuration.setJobExecutor(jobExecutor);
}
@Override
public void preInit(SpringProcessEngineConfiguration configuration) {
String historyLevel = camundaBpmProperties.getHistoryLevel();
if (historyLevel != null) {
configuration.setHistory(historyLevel);
}
if (historyEventHandler != null) {
logger.debug("registered history event handler: {}", historyEventHandler.getClass());
configuration.getCustomHistoryEventHandlers().add(historyEventHandler);
}
}
@Override
public void preInit(final SpringProcessEngineConfiguration configuration) {
final AuthorizationProperty authorization = camundaBpmProperties.getAuthorization();
configuration.setAuthorizationEnabled(authorization.isEnabled());
configuration.setAuthorizationEnabledForCustomCode(authorization.isEnabledForCustomCode());
configuration.setAuthorizationCheckRevokes(authorization.getAuthorizationCheckRevokes());
configuration.setTenantCheckEnabled(authorization.isTenantCheckEnabled());
}
@Override
public void preInit(SpringProcessEngineConfiguration configuration) {
if (camundaBpmProperties.isAutoDeploymentEnabled()) {
final Set<Resource> resources = getDeploymentResources();
configuration.setDeploymentResources(resources.toArray(new Resource[resources.size()]));
LOG.autoDeployResources(resources);
}
}
@Override
public void preInit(SpringProcessEngineConfiguration configuration) {
final String determineHistoryLevel = historyLevelDeterminator.determineHistoryLevel();
if (!StringUtils.isEmpty(determineHistoryLevel)) {
configuration.setHistory(determineHistoryLevel);
}
}
@Override
public void preInit(SpringProcessEngineConfiguration configuration) {
if (configuration.getCustomPostBPMNParseListeners() == null) {
configuration.setCustomPostBPMNParseListeners(new ArrayList<>());
}
configuration.getCustomPostBPMNParseListeners().add(new DefaultFailedJobParseListener());
configuration.setFailedJobCommandFactory(new DefaultFailedJobCommandFactory());
}
@Override
public void preInit(SpringProcessEngineConfiguration configuration) {
setProcessEngineName(configuration);
setDefaultSerializationFormat(configuration);
setIdGenerator(configuration);
setJobExecutorAcquireByPriority(configuration);
setDefaultNumberOfRetries(configuration);
}
private void setDefaultSerializationFormat(SpringProcessEngineConfiguration configuration) {
String defaultSerializationFormat = camundaBpmProperties.getDefaultSerializationFormat();
if (StringUtils.hasText(defaultSerializationFormat)) {
configuration.setDefaultSerializationFormat(defaultSerializationFormat);
} else {
logger.warn("Ignoring invalid defaultSerializationFormat='{}'", defaultSerializationFormat);
}
}
@Override
public void preInit(SpringProcessEngineConfiguration configuration) {
final JpaProperty jpa = camundaBpmProperties.getJpa();
configuration.setJpaPersistenceUnitName(jpa.getPersistenceUnitName());
if (jpaEntityManagerFactory != null) {
configuration.setJpaEntityManagerFactory(jpaEntityManagerFactory);
}
configuration.setJpaCloseEntityManager(jpa.isCloseEntityManager());
configuration.setJpaHandleTransaction(jpa.isHandleTransaction());
}
@Override
public void preInit(SpringProcessEngineConfiguration processEngineConfiguration) {
if (!property.isTask() && !property.isExecution() && !property.isHistory()) {
logger.info("EVENTING-002: Camunda Spring Boot Eventing Plugin is found, but disabled via property.");
return;
}
if (property.isTask() || property.isExecution()) {
logger.info("EVENTING-001: Initialized Camunda Spring Boot Eventing Engine Plugin.");
if (property.isTask()) {
logger.info("EVENTING-003: Task events will be published as Spring Events.");
} else {
logger.info("EVENTING-004: Task eventing is disabled via property.");
}
if (property.isExecution()) {
logger.info("EVENTING-005: Execution events will be published as Spring Events.");
} else {
logger.info("EVENTING-006: Execution eventing is disabled via property.");
}
// register parse listener
processEngineConfiguration.getCustomPostBPMNParseListeners().add(new PublishDelegateParseListener(this.publisher, property));
}
if (property.isHistory()) {
logger.info("EVENTING-007: History events will be published as Spring events.");
// register composite DB event handler.
processEngineConfiguration.getCustomHistoryEventHandlers()
.add(new PublishHistoryEventHandler(this.publisher));
} else {
logger.info("EVENTING-008: History eventing is disabled via property.");
}
}
@Before
public void init() {
processEngineConfiguration = new SpringProcessEngineConfiguration();
genericPropertiesConfiguration = new GenericPropertiesConfiguration();
camundaBpmProperties = new CamundaBpmProperties();
genericPropertiesConfiguration.camundaBpmProperties = camundaBpmProperties;
}
@Test
public void delegate_for_springConfig() throws Exception {
ProcessEngineConfigurationImpl c = new SpringProcessEngineConfiguration();
DummySpringPlugin plugin = new DummySpringPlugin();
plugin.preInit(c);
plugin.postInit(c);
assertThat(plugin.preInit).isTrue();
assertThat(plugin.postInit).isTrue();
}
@Bean
@ConditionalOnMissingBean(ProcessEngineConfigurationImpl.class)
public ProcessEngineConfigurationImpl processEngineConfigurationImpl(List<ProcessEnginePlugin> processEnginePlugins) {
final SpringProcessEngineConfiguration configuration = CamundaSpringBootUtil.springProcessEngineConfiguration();
configuration.getProcessEnginePlugins().add(new CompositeProcessEnginePlugin(processEnginePlugins));
return configuration;
}
protected void configureJobExecutor(SpringProcessEngineConfiguration configuration) {
// note: the job executor will be activated in
// org.camunda.bpm.spring.boot.starter.runlistener.JobExecutorRunListener
configuration.setJobExecutorActivate(false);
configuration.setJobExecutorDeploymentAware(camundaBpmProperties.getJobExecution().isDeploymentAware());
configuration.setJobExecutor(jobExecutor);
}
@Override
public void preInit(SpringProcessEngineConfiguration configuration) {
String historyLevel = camundaBpmProperties.getHistoryLevel();
if (historyLevel != null) {
configuration.setHistory(historyLevel);
}
if (historyEventHandler != null) {
logger.debug("registered history event handler: {}", historyEventHandler.getClass());
configuration.getCustomHistoryEventHandlers().add(historyEventHandler);
}
}
@Override
public void preInit(final SpringProcessEngineConfiguration configuration) {
final AuthorizationProperty authorization = camundaBpmProperties.getAuthorization();
configuration.setAuthorizationEnabled(authorization.isEnabled());
configuration.setAuthorizationEnabledForCustomCode(authorization.isEnabledForCustomCode());
configuration.setAuthorizationCheckRevokes(authorization.getAuthorizationCheckRevokes());
configuration.setTenantCheckEnabled(authorization.isTenantCheckEnabled());
}
@Override
public void preInit(SpringProcessEngineConfiguration configuration) {
if (camundaBpmProperties.isAutoDeploymentEnabled()) {
final Set<Resource> resources = getDeploymentResources();
configuration.setDeploymentResources(resources.toArray(new Resource[resources.size()]));
LOG.autoDeployResources(resources);
}
}
@Override
public void preInit(SpringProcessEngineConfiguration configuration) {
final String determineHistoryLevel = historyLevelDeterminator.determineHistoryLevel();
if (!StringUtils.isEmpty(determineHistoryLevel)) {
configuration.setHistory(determineHistoryLevel);
}
}
@Override
public void preInit(SpringProcessEngineConfiguration configuration) {
if (configuration.getCustomPostBPMNParseListeners() == null) {
configuration.setCustomPostBPMNParseListeners(new ArrayList<>());
}
configuration.getCustomPostBPMNParseListeners().add(new DefaultFailedJobParseListener());
configuration.setFailedJobCommandFactory(new DefaultFailedJobCommandFactory());
}
@Override
public void preInit(SpringProcessEngineConfiguration configuration) {
setProcessEngineName(configuration);
setDefaultSerializationFormat(configuration);
setIdGenerator(configuration);
setJobExecutorAcquireByPriority(configuration);
setDefaultNumberOfRetries(configuration);
}