Как указать исполнителя Job для использования только определенных процессов? - PullRequest
1 голос
/ 15 апреля 2019

Я устанавливаю загрузочное приложение Spring с Camunda.Я хочу использовать мультитенантную настройку, как это определено в "https://docs.camunda.org/manual/7.5/user-guide/process-engine/multi-tenancy/#one-process-engine-per-tenant"

. Мне удалось настроить несколько механизмов процессов через Java (поэтому не с process.xml, а с кодированием), но, кажется, всегда естьобработчик по умолчанию. Как выполнить настройку только с определенными мной обработчиками?

Дополнительная информация:

  • каждый обработчик использует свой собственный источник данных, полученный из контекста
  • Я хочу избежать обработчика процессов по умолчанию, потому что ему нужен собственный источник данных. Я не хочу настраивать источник данных / базу данных для обработчика процессов без арендатора. (Если я не настрою источник данных по умолчанию, возникнут ошибкиисполнителем задания не удается установить соединение)

Попробованная мною установка находится в следующем блоке, но по какой-то причине всегда есть обработчик по умолчанию.


    @Autowired
    private ConfigurableListableBeanFactory beanFactory;

    @Bean
    @Order(4)
    public void multipleCamunda(){
        log.info("Starting Camunda Multitenant");
        this.targetDatasources.entrySet().stream().forEach(entry -> {

            String tenant = (String) entry.getKey();
            DataSource tenantDatasource = (DataSource) entry.getValue();
            SpringProcessEngineConfiguration standaloneProcessEngineConfiguration = new SpringProcessEngineConfiguration();
            standaloneProcessEngineConfiguration.setDataSource(tenantDatasource);
            standaloneProcessEngineConfiguration.setDatabaseSchemaUpdate("true");
            standaloneProcessEngineConfiguration.setProcessEngineName(tenant);
            DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(fondsDatasource);
            standaloneProcessEngineConfiguration.setTransactionManager(dataSourceTransactionManager);
            standaloneProcessEngineConfiguration.setHistory(HistoryLevel.HISTORY_LEVEL_FULL.getName());
            standaloneProcessEngineConfiguration.setJobExecutorDeploymentAware(true);

            // deploy all processes from folder 'processes'
            Resource[] resources = new Resource[0];
            try {
                resources = resourceLoader.getResources("classpath:/bpm/*.bpmn");
            } catch (IOException e) {
                e.printStackTrace();
            }
            standaloneProcessEngineConfiguration.setDeploymentResources(resources);

            ProcessEngine processEngine = standaloneProcessEngineConfiguration.buildProcessEngine();

          RuntimeContainerDelegate.INSTANCE.get().registerProcessEngine(processEngine);

            beanFactory.registerSingleton("processEngine" + tenant,processEngine);


            log.info("Started process Engine for " + tenant);
        });

    }

maven зависимости, которые я использую:

       <dependency>
            <groupId>org.camunda.bpm</groupId>
            <artifactId>camunda-engine-cdi</artifactId>
            <version>7.10.0</version>
        </dependency>
        <dependency>
            <groupId>org.camunda.bpm.javaee</groupId>
            <artifactId>camunda-ejb-client</artifactId>
            <version>7.10.0</version>
        </dependency>
        <dependency>
            <groupId>org.camunda.bpm.springboot</groupId>
            <artifactId>camunda-bpm-spring-boot-starter- 
 webapp</artifactId>
            <version>3.2.1</version>
        </dependency>

Я предполагаю, что мне нужно определить @Bean для некоторого вида ConfigurationBean, но я не могу понять, какой и как. PlЛегко скажите мне, какой компонент конфигурации мне нужен для автоматического подключения и как.

** Решение **

Чтобы остановить инициализацию по умолчанию, вам нужно отредактировать application.yaml и добавить

camunda:
  bpm:
    enabled: false

Установка того же свойства в CamdundaBpmProperties как-то не работает.

Когда вы это сделаете, запуск по умолчанию не произойдет, и механизм процесса запустится при добавлении механизма процесса черезприведенный выше фрагмент кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...