Конфигурация ProcessEngine в Activiti

Конфигурация ProcessEngine в Activiti

1. обзор

В нашей предыдущей вводной статьеActiviti with Java мы увидели важностьProcessEngine и создали его с помощью статического API по умолчанию, предоставляемого фреймворком.

Помимо значения по умолчанию, есть другие способы созданияProcessEngine, которые мы рассмотрим здесь.

2. Получение экземпляраProcessEngine

Есть два способа получить экземплярProcessEngine:

  1. используя классProcessEngines

  2. программно, черезProcessEngineConfiguration

Давайте подробнее рассмотрим примеры обоих подходов.

3. ПолучитьProcessEngine с использованием классаProcessEngines

ОбычноProcessEngine настраивается с использованием XML-файла с именемactiviti.cfg.xml,, который также будет использовать в процессе создания по умолчанию.

Вот краткий пример того, как может выглядеть эта конфигурация:


    
        
        
        
        
        
    

Обратите внимание, как здесь сконфигурирован аспект персистентности двигателя.

И теперь мы можем получитьProcessEngine:

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

4. ПолучитьProcessEngine с помощьюProcessEngineConfiguration

Переходя от маршрута по умолчанию для получения движка - есть два способа созданияProcessEngineConfiguration:

  1. Использование XML Config

  2. Использование Java Config

Начнем с конфигурации XML.

Как указано в разделе 2.1. - мы можем определитьProcessEngineConfiguration программно и построитьProcessEngine, используя этот экземпляр:

@Test
void whenCreateDefaultConfiguration_thenGotProcessEngine() {
    ProcessEngineConfiguration processEngineConfiguration
      = ProcessEngineConfiguration
        .createProcessEngineConfigurationFromResourceDefault();
    ProcessEngine processEngine
      = processEngineConfiguration.buildProcessEngine();

    assertNotNull(processEngine);
}

МетодcreateProcessEngineConfigurationFromResourceDefault() также будет искать файлactiviti.cfg.xml, и теперь нам нужно только вызвать APIbuildProcessEngine().

В этом случае имя bean-компонента по умолчанию, которое он ищет, -processEngineConfiguration. Если мы хотим изменить имя файла конфигурации или имя компонента, мы можем использовать другие доступные методы для созданияProcessEngineConfiguration.

Давайте посмотрим на несколько примеров.

Сначала мы изменим имя файла конфигурации и попросим API использовать наш собственный файл:

@Test
void whenGetProcessEngineConfig_thenGotResult() {
    ProcessEngineConfiguration processEngineConfiguration
      = ProcessEngineConfiguration
        .createProcessEngineConfigurationFromResource(
          "my.activiti.cfg.xml");
    ProcessEngine processEngine = processEngineConfiguration
      .buildProcessEngine();

    assertNotNull(processEngine);
}

Теперь давайте также изменим имя компонента:

@Test
void whenGetProcessEngineConfig_thenGotResult() {
    ProcessEngineConfiguration processEngineConfiguration
      = ProcessEngineConfiguration
        .createProcessEngineConfigurationFromResource(
          "my.activiti.cfg.xml",
          "myProcessEngineConfiguration");
    ProcessEngine processEngine = processEngineConfiguration
      .buildProcessEngine();

    assertNotNull(processEngine);
    assertEquals("root", processEngine.getProcessEngineConfiguration()
      .getJdbcUsername());
}

Конечно, теперь, когда конфигурация ожидает разные имена, нам нужно изменить имя файла (и имя компонента), чтобы оно соответствовало - перед запуском теста.

Другие доступные варианты создания движка:createProcessEngineConfigurationFromInputStream(InputStream inputStream),createProcessEngineConfigurationFromInputStream(InputStream inputStream, String beanName).

Если мы не хотим использовать конфигурацию XML,we can also set things up using Java config only.

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

  1. org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration –ProcessEngine используется автономно при поддержке БД

  2. org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration – по умолчанию используется база данных H2 в памяти. БД создается и удаляется при запуске и выключении двигателя - следовательно, этот стиль конфигурации можно использовать для тестирования

  3. org.activiti.spring.SpringProcessEngineConfiguration – для использования в среде Spring

  4. org.activiti.engine.impl.cfg.JtaProcessEngineConfiguration – движок работает в автономном режиме с транзакциями JTA

Давайте посмотрим на несколько примеров.

Вот тест JUnit для создания автономной конфигурации механизма процесса:

@Test
void whenCreateProcessEngineConfig_thenCreated() {
    ProcessEngineConfiguration processEngineConfiguration
      = ProcessEngineConfiguration
        .createStandaloneProcessEngineConfiguration();
    ProcessEngine processEngine = processEngineConfiguration
      .setDatabaseSchemaUpdate(ProcessEngineConfiguration
        .DB_SCHEMA_UPDATE_TRUE)
      .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
      .buildProcessEngine();

    assertNotNull(processEngine);
    assertEquals("sa", processEngine.getProcessEngineConfiguration()
      .getJdbcUsername());
}

Точно так же мы напишем тестовый пример JUnit для создания конфигурации автономного механизма процесса с использованием базы данных в памяти:

@Test
void whenCreateInMemProcessEngineConfig_thenCreated() {
    ProcessEngineConfiguration processEngineConfiguration
      = ProcessEngineConfiguration
      .createStandaloneInMemProcessEngineConfiguration();
    ProcessEngine processEngine = processEngineConfiguration
      .buildProcessEngine();

    assertNotNull(processEngine);
    assertEquals("sa", processEngine.getProcessEngineConfiguration()
      .getJdbcUsername());
}

5. Настройка базы данных

По умолчанию Activiti API будет использовать базу данных H2 в памяти с именем базы данных «activiti» и именем пользователя «sa».

Если нам нужно использовать любую другую базу данных, нам нужно будет настроить ее явно - с помощью двух основных свойств.

databaseType - допустимые значенияh2, mysql, oracle, postgres, mssql, db2. Это также можно выяснить из конфигурации БД, но будет полезно в случае сбоя автоматического обнаружения.

databaseSchemaUpdate – это свойство позволяет нам определить, что происходит с базой данных, когда движок загружается или выключается. Может иметь следующие три значения:

  1. false (по умолчанию) - этот параметр проверяет версию схемы базы данных на соответствие библиотеке. Двигатель выдаст исключение, если они не совпадают

  2. true - когда конфигурация движка процесса построена, выполняется проверка базы данных. База данных будет создана / обновлена ​​соответствующим образом.

  3. «» - это создаст схему БД при создании механизма процесса и отбросит ее, когда механизм процесса выключится.

Мы можем определить конфигурацию БД как свойства JDBC:





В качестве альтернативы, если мы используемDataSource:


    
    
    
    
    
    

6. Заключение

В этом кратком руководстве мы сосредоточились на нескольких различных способах созданияProcessEngine в Activiti.

Мы также увидели различные свойства и подходы для обработки конфигурации базы данных.

Как всегда, код примеров, которые мы видели, находится вover on GitHub.