Конфигурация процессного движка

Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine

Для запуска процессного движка можно использовать XML-файл Spring application context. Через Spring можно запускать как процессные движки, управляемые приложением, так и процессные движки, управляемые контейнером.

Обратите внимание, что вместо XML для запуска можно также использовать Spring JavaConfig.

Настройка процессного движка, управляемого приложением

ProcessEngine можно сконфигурировать как обычный Spring-бин. Точкой входа интеграции является класс io.openbpm.bpm.engine.spring.ProcessEngineFactoryBean. Этот бин принимает конфигурацию процессного движка и создаёт сам процессный движок. Это означает, что создание и настройка свойств для Spring выполняются так же, как описано в разделе конфигурации. Для интеграции со Spring конфигурационный бин и бин движка будут выглядеть так:

<bean id="processEngineConfiguration"
      class="io.openbpm.bpm.engine.spring.SpringProcessEngineConfiguration">
    ...
</bean>

<bean id="processEngine"
      class="io.openbpm.bpm.engine.spring.ProcessEngineFactoryBean">
  <property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>

Обратите внимание, что бин processEngineConfiguration использует класс SpringProcessEngineConfiguration.

Настройка процессного движка, управляемого контейнером, как Spring-бина

Если вы хотите, чтобы процессный движок был зарегистрирован в ProcessEngineService OpenBPM Engine, необходимо использовать io.openbpm.bpm.engine.spring.container.ManagedProcessEngineFactoryBean вместо ProcessEngineFactoryBean, показанного в примере выше. Также необходимо убедиться в следующем:

  1. Ни одно из ваших web-приложений не должно содержать openbpm-webapp*.jar в собственной папке lib; эта библиотека должна находиться на общем уровне.

  2. Ваш server.xml должен содержать JNDI-записи для ProcessEngineService и ProcessApplicationService, как показано ниже:

<!-- Global JNDI resources
     Documentation at /docs/jndi-resources-howto.html
-->
  <GlobalNamingResources>

    <Resource name="java:global/camunda-bpm-platform/process-engine/ProcessEngineService!io.openbpm.bpm.ProcessEngineService"
              auth="Container"
              type="io.openbpm.bpm.ProcessEngineService"
              description="Camunda Platform Process Engine Service"
              factory="io.openbpm.bpm.container.impl.jndi.ProcessEngineServiceObjectFactory" />

    <Resource name="java:global/camunda-bpm-platform/process-engine/ProcessApplicationService!io.openbpm.bpm.ProcessApplicationService"
              auth="Container"
              type="io.openbpm.bpm.ProcessApplicationService"
              description="Camunda Platform Process Application Service"
              factory="io.openbpm.bpm.container.impl.jndi.ProcessApplicationServiceObjectFactory" />
       ...
  </GlobalNamingResources>

В этом случае созданный объект процессного движка регистрируется в OpenBPM Engine и может использоваться для создания deployment процессных приложений, а также экспортироваться через интеграцию с runtime-контейнером.

Настройка плагина процессного движка

В Spring можно настроить плагин процессного движка, задав список значений в свойстве processEnginePlugins бина processEngineConfiguration:

<bean id="processEngineConfiguration" class="io.openbpm.bpm.engine.spring.SpringProcessEngineConfiguration">
  ...
  <property name="processEnginePlugins">
    <list>
      <bean id="spinPlugin"
            class="io.openbpm.spin.plugin.impl.SpinProcessEnginePlugin" />
    </list>
  </property>
</bean>

Использование Spring JavaConfig

Помимо XML-файла Spring application context, процессный движок можно запускать с использованием Spring JavaConfig. Класс конфигурации может выглядеть следующим образом:

@Configuration
public class ExampleProcessEngineConfiguration {

  @Bean
  public DataSource dataSource() {
     // Use a JNDI data source or read the properties from
     // env or a properties file.
     // Note: The following shows only a simple data source
     // for In-Memory H2 database.

    SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
    dataSource.setDriverClass(org.h2.Driver.class);
    dataSource.setUrl("jdbc:h2:mem:camunda;DB_CLOSE_DELAY=-1");
    dataSource.setUsername("sa");
    dataSource.setPassword("");
    return dataSource;
  }

  @Bean
  public PlatformTransactionManager transactionManager() {
    return new DataSourceTransactionManager(dataSource());
  }

  @Bean
  public SpringProcessEngineConfiguration processEngineConfiguration() {
    SpringProcessEngineConfiguration config = new SpringProcessEngineConfiguration();

    config.setDataSource(dataSource());
    config.setTransactionManager(transactionManager());

    config.setDatabaseSchemaUpdate("true");
    config.setHistory("audit");
    config.setJobExecutorActivate(true);

    return config;
  }

  @Bean
  public ProcessEngineFactoryBean processEngine() {
    ProcessEngineFactoryBean factoryBean = new ProcessEngineFactoryBean();
    factoryBean.setProcessEngineConfiguration(processEngineConfiguration());
    return factoryBean;
  }

  @Bean
  public RepositoryService repositoryService(ProcessEngine processEngine) {
    return processEngine.getRepositoryService();
  }

  @Bean
  public RuntimeService runtimeService(ProcessEngine processEngine) {
    return processEngine.getRuntimeService();
  }

  @Bean
  public TaskService taskService(ProcessEngine processEngine) {
    return processEngine.getTaskService();
  }

  // more engine services and additional beans ...

}

Обратите внимание, что собственные бины можно определять прямо в классе конфигурации, комбинировать этот подход с дополнительным XML-файлом или использовать component scan. Следующий пример добавляет в класс конфигурации component scan, который обнаруживает и создаёт все бины в пакете com.example.

@Configuration
@ComponentScan("com.example")
public class ExampleProcessEngineConfiguration {

  // ...

}

Лицензия и атрибуция

Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .

Оригинал документации: https://docs.camunda.org