Search code examples
javaspringprocessbpmncamunda

Resolving 'The process engine you are trying to access does not exist'


i'm running embedded camunda engine in my application. Now i would like to run second camunda engine with cockpit on different container with the same database. What i did is basically copy-paste of my main applciation configuration only switched dependency from camunda-bpm-spring-boot-starter to camunda-bpm-spring-boot-starter-webapp. I can acess cockpits main page but i'm immediately prompted The process engine you are trying to access does not exist and i don't understand why? On startup i can see that mySpringProcessEngineConfiguration bean is created as well as ProcessEngineFactoryBean bean. However:

BpmPlatform.getProcessEngineService().getProcessEngineNames();

returns empty set. Could you please have a look and point my mistake?

main app class:

@SpringBootApplication
public class CamundaCockpitApplication {

public static void main(String[] args) {
    SpringApplication.run(CamundaCockpitApplication.class, args);
    BpmPlatform.getProcessEngineService().getProcessEngineNames();
}

Camunda confing:

@Configuration
@RequiredArgsConstructor
public class EngineConfiguration {

private final DataSource dataSource;

private final PlatformTransactionManager transactionManager;

private final ResourcePatternResolver resourcePatternResolver;

@Bean
public SpringProcessEngineConfiguration springProcessEngineConfiguration() {
    SpringProcessEngineConfiguration springConfiguration = new SpringProcessEngineConfiguration();
    springConfiguration.setDataSource(dataSource);
    springConfiguration.setTransactionManager(transactionManager);
    springConfiguration.setDatabaseSchemaUpdate("false");
    springConfiguration.setJobExecutorActivate(false);
    springConfiguration.setHistory("full");
    springConfiguration.setJdbcBatchProcessing(false);
    return springConfiguration;
}

@Bean
public ProcessEngineFactoryBean processEngineFactoryBean() {
    ProcessEngineFactoryBean engine = new ProcessEngineFactoryBean();
    engine.setProcessEngineConfiguration(springProcessEngineConfiguration());
    return engine;
}
}

Solution

  • You need to add @EnableProcessApplication annotation to your main class.

    see https://docs.camunda.org/manual/7.9/user-guide/spring-boot-integration/process-applications/