Cockpit для нескольких камунд

коллеги, есть вопрос!

Каким образом можно подключить cockpit для нескольких экземпляров системы, использующих разные базы? Используем движок встроенный в spring boot приложение.

Что имеется ввиду под “несколькими камундами”?
Это?
https://docs.camunda.org/manual/7.15/webapps/cockpit/dashboard/#multi-engine

Все верно)
интересует пример настроенного подключения Cockpit к нескольким базам Camunda.

Начали с настроек приведенных в документации и сразу проблемы если хотим подключить несоклько баз:

:grimacing: :grimacing: :grimacing: :grimacing:

spring:
datasource:
url: jdbc:postgresql://localhost:5432/camunda_primary
username: postgres
password:
second-datasource:
url: jdbc:postgresql://localhost:5432/camunda_second
username: postgres
password:

third-datasource:
url: jdbc:postgresql://localhost:5432/camunda_third
username: postgres
password:

Caused by: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:1004) ~[HikariCP-3.4.5.jar:na]
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:109) ~[HikariCP-3.4.5.jar:na]
at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) ~[spring-jdbc-5.3.4.jar:5.3.4]
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) ~[spring-jdbc-5.3.4.jar:5.3.4]
at org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:223) ~[spring-jdbc-5.3.4.jar:5.3.4]
at com.sun.proxy.$Proxy72.getMetaData(Unknown Source) ~[na:na]

Добрый день!

Не скажу про Spring Boot и Embedded Engine - не доводилось организовывать на нем multiple engines. В Camunda Standalone на основе Tomcat (как и в других серверах приложений) делается так:

Сконфигурировать дополнительные процессные движки bpm-platform.xml

<process-engine name="secondCamunda">
    <job-acquisition>default</job-acquisition>
    <configuration>org.camunda.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration</configuration>
    <datasource>java:jdbc/secondCamunda</datasource>

    <properties>
      <property name="history">full</property>
      <property name="databaseSchemaUpdate">true</property>
      <property name="authorizationEnabled">true</property>
      <property name="jobExecutorDeploymentAware">true</property>
      <property name="historyCleanupBatchWindowStartTime">00:01</property>
    </properties>


  </process-engine>
  <process-engine name="thirdCamunda">
    <job-acquisition>default</job-acquisition>
    <configuration>org.camunda.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration</configuration>
    <datasource>java:jdbc/thirdCamunda</datasource>

    <properties>
      <property name="history">full</property>
      <property name="databaseSchemaUpdate">true</property>
      <property name="authorizationEnabled">true</property>
      <property name="jobExecutorDeploymentAware">true</property>
      <property name="historyCleanupBatchWindowStartTime">00:01</property>
    </properties>

Настроить подключения к базам в server.xml:

<Resource name="jdbc/secondCamunda"
              auth="Container"
              type="javax.sql.DataSource"
              factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
              uniqueResourceName="secondCamunda"
              driverClassName="org.postgresql.Driver"
              url="jdbc:postgresql://localhost:5432/bff_underwriting"
              defaultTransactionIsolation="READ_COMMITTED"
              username="postgres"
              password=""
              maxTotal="20"
              minIdle="5"
              maxIdle="20" />

    <Resource name="jdbc/thirdCamunda"
              auth="Container"
              type="javax.sql.DataSource"
              factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
              uniqueResourceName="secondCamunda"
              driverClassName="org.postgresql.Driver"
              url="jdbc:postgresql://localhost:5432/bff_scoring"
              defaultTransactionIsolation="READ_COMMITTED"
              username="postgres"
              password=""
              maxTotal="20"
              minIdle="5"
              maxIdle="20" />

В итоге в веб-приложениях появляется возможность переключения между процессными движками:

Должен сказать, что это не очень удобно.
Есть более адекватные альтернативы:

  • Разработать собственное решение, которое будет использовать REST/Java API Camunda для подключения к инстансам Camunda
  • Попробовать Camunda Optimize

Вобщем, ошибка с подключением нескольких датасорцов решилась указанием правильных проперти (jdbc-url, вместо url):

spring:
datasource:
jdbc-url: jdbc:postgresql://localhost:5432/camunda_primary
username: postgres
password:
driver-class-name: org.postgresql.Driver
second-datasource:
jdbc-url: jdbc:postgresql://localhost:5432/camunda_second
username: postgres
password:

third-datasource:
jdbc-url: jdbc:postgresql://localhost:5432/camunda_third
username: postgres
password:

@Configuration
public class DataSourceConfig {
@Bean
@Primary
@ConfigurationProperties(prefix=“spring.datasource”)
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}

@Bean(name="secondDataSource")
@ConfigurationProperties(prefix="spring.second-datasource")
public DataSource secondDataSource() {
    return DataSourceBuilder.create().build();
}

@Bean(name="thirdDataSource")
@ConfigurationProperties(prefix="spring.third-datasource")
public DataSource thirdDataSource() {
    return DataSourceBuilder.create().build();
}

}

@Mstislav использовать сервер приложений для нас не вариант. Будем искать возможность использовать spring boot.