Рубрики
Без рубрики

ProcessEngineConfiguration в действии

Узнайте о различных способах получения Process Engine и о том, как настроить базу данных с активностью.

Автор оригинала: baeldung.

1. Обзор

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

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

2. Получение экземпляра Механизма процесса

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

  1. использование класса Process Engine
  2. программно, через ProcessEngineConfiguration

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

3. GetProcessEngine С использованием Класса Processengine

Как правило, Process Engine настраивается с помощью XML-файла с именем activiti.cfg.xml, with-это то, что также будет использоваться в процессе создания по умолчанию.

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


    
        
        
        
        
        
    

Обратите внимание, как здесь настроен аспект персистентности движка.

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

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

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

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

  1. Использование конфигурации XML
  2. Использование конфигурации Java

Давайте начнем с конфигурации XML.

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

@Test 
public void givenXMLConfig_whenCreateDefaultConfiguration_thenGotProcessEngine() {
    ProcessEngineConfiguration processEngineConfiguration 
      = ProcessEngineConfiguration
        .createProcessEngineConfigurationFromResourceDefault();
    ProcessEngine processEngine 
      = processEngineConfiguration.buildProcessEngine();
    
    assertNotNull(processEngine);
    assertEquals("root", processEngine.getProcessEngineConfiguration()
      .getJdbcUsername());
}

Метод create ProcessEngineConfiguration Из Resource Default() также будет искать activiti.cfg.xml файл, и теперь нам нужно только вызвать buildProcessEngine() API.

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

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

Во-первых, мы изменим имя файла конфигурации и попросим API использовать наш пользовательский файл:

@Test 
public void givenDifferentNameXMLConfig_whenGetProcessEngineConfig_thenGotResult() {
    ProcessEngineConfiguration processEngineConfiguration 
      = ProcessEngineConfiguration
        .createProcessEngineConfigurationFromResource(
          "my.activiti.cfg.xml");
    ProcessEngine processEngine = processEngineConfiguration
      .buildProcessEngine();
    
    assertNotNull(processEngine);
    assertEquals("baeldung", processEngine.getProcessEngineConfiguration()
      .getJdbcUsername());
}

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

@Test 
public void givenDifferentBeanNameInXMLConfig_whenGetProcessEngineConfig_thenGotResult() {
    ProcessEngineConfiguration processEngineConfiguration 
      = ProcessEngineConfiguration
        .createProcessEngineConfigurationFromResource(
          "my.activiti.cfg.xml", 
          "myProcessEngineConfiguration");
    ProcessEngine processEngine = processEngineConfiguration
      .buildProcessEngine();
    
    assertNotNull(processEngine);
    assertEquals("baeldung", processEngine.getProcessEngineConfiguration()
      .getJdbcUsername());
}

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

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

Если мы не хотим использовать XML-конфигурацию, мы также можем настроить все, используя только Java config .

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

  1. org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration – /ProcessEngine используется автономно, поддерживается базой данных org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration –
  2. по умолчанию используется база данных в памяти H2. БД создается и удаляется при запуске и выключении двигателя – следовательно, этот стиль конфигурации можно использовать для тестирования орг.деятельность.весна.SpringProcessEngineConfiguration –
  3. для использования в среде Spring org.activiti.engine.impl.cfg.JtaProcessEngineConfiguration –
  4. движок работает в автономном режиме с транзакциями JTA

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

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

@Test 
public void givenNoXMLConfig_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 
public void givenNoXMLConfig_whenCreateInMemProcessEngineConfig_thenCreated() {
    ProcessEngineConfiguration processEngineConfiguration 
      = ProcessEngineConfiguration
      .createStandaloneInMemProcessEngineConfiguration();
    ProcessEngine processEngine = processEngineConfiguration
      .buildProcessEngine();
    
    assertNotNull(processEngine);
    assertEquals("sa", processEngine.getProcessEngineConfiguration()
      .getJdbcUsername());
}

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

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

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

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

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

  1. false (по умолчанию) – этот параметр проверяет версию схемы базы данных на соответствие библиотеке. Двигатель выдаст исключение, если они не совпадают
  2. true – при построении конфигурации ядра процесса выполняется проверка базы данных. База данных будет создана/обновлена create-drop соответственно
  3. ” – это создаст схему БД при создании ядра процесса и отбросит ее, когда ядро процесса завершит работу.

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






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


    
    
    
    
    
    

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

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

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

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