Ручная установка

В разделе описано, как установить OpenBPM Engine в чистый Apache Tomcat 11, если готовый дистрибутив не подходит. Библиотеки и файлы настроек берутся из готового дистрибутива для Tomcat, поэтому скачайте его со страницы загрузки.

Обозначения
  • $TOMCAT_HOME: каталог вашего сервера Tomcat.

  • $TOMCAT_VERSION: версия Tomcat в готовом дистрибутиве.

  • $PLATFORM_VERSION: версия OpenBPM Engine, например 2026.0.1.

  • $TOMCAT_DISTRIBUTION: каталог, в который распакован готовый дистрибутив openbpm-engine-bpm-tomcat-$PLATFORM_VERSION.zip (или .tar.gz).

  • $DISTRIBUTION_LIB: каталог библиотек готового дистрибутива, $TOMCAT_DISTRIBUTION/server/apache-tomcat-$TOMCAT_VERSION/lib.

  • $GROOVY_VERSION, $FREEMARKER_VERSION: версии библиотек, их видно по именам файлов в $DISTRIBUTION_LIB.

Известные ограничения CDI

Если процессное приложение содержит управляемые бины CDI, а библиотека Weld лежит в /WEB-INF/lib WAR-файла, возможны ошибки загрузки классов. Перенесите библиотеку Weld из WAR-файла в $TOMCAT_HOME/lib.

Этот способ не гарантирует работу, если бины одного WAR-файла ссылаются на бины другого. Интеграционные тесты движка CallActivityContextSwitchTest и CdiBeanCallActivityResolutionTest на Tomcat не выполняются.

Обязательные шаги

Схема базы данных

В настройке по умолчанию движок сам создаёт таблицы в базе данных H2 при первом запуске. Для другой СУБД:

  1. Создайте базу данных или схему для OpenBPM Engine средствами СУБД.

  2. Создайте таблицы и индексы по инструкции Схема базы данных.

  3. Запретите движку создавать таблицы при запуске: задайте свойству databaseSchemaUpdate значение false (для Oracle noop) в файле $TOMCAT_HOME/conf/bpm-platform.xml (см. Файл bpm-platform.xml).

Слушатель запуска движка

Добавьте в $TOMCAT_HOME/conf/server.xml слушатель io.openbpm.bpm.container.impl.tomcat.TomcatBpmPlatformBootstrap перед GlobalResourcesLifecycleListener. Слушатель запускает и останавливает движок вместе с Tomcat.

<Server port="8005" shutdown="SHUTDOWN">
  ...
  <Listener className="io.openbpm.bpm.container.impl.tomcat.TomcatBpmPlatformBootstrap" />
  ...

Источник данных JDBC

Опишите источник данных jdbc/ProcessEngine в $TOMCAT_HOME/conf/server.xml. Пример для H2:

<Server>
  ...
  <GlobalNamingResources>
    ...
    <Resource name="jdbc/ProcessEngine"
              auth="Container"
              type="javax.sql.DataSource"
              factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
              uniqueResourceName="process-engine"
              driverClassName="org.h2.Driver"
              url="jdbc:h2:./openbpm-engine-h2-dbs/process-engine;TRACE_LEVEL_FILE=0;DB_CLOSE_ON_EXIT=FALSE"
              defaultTransactionIsolation="READ_COMMITTED"
              username="sa"
              password="sa"
              maxActive="20"
              minIdle="5"
              maxIdle="20" />
  </GlobalNamingResources>
</Server>

Подробнее об источниках данных JDBC в документации Tomcat 11.

Сервисы движка в JNDI

Скопируйте в раздел GlobalNamingResources файла $TOMCAT_HOME/conf/server.xml следующие ресурсы из $TOMCAT_DISTRIBUTION/server/apache-tomcat-$TOMCAT_VERSION/conf/server.xml:

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

    <Resource name="global/openbpm-engine/process-engine/ProcessApplicationService!io.openbpm.bpm.ProcessApplicationService" auth="Container"
              type="io.openbpm.bpm.ProcessApplicationService"
              description="OpenBPM Engine Process Application Service"
              factory="io.openbpm.bpm.container.impl.jndi.ProcessApplicationServiceObjectFactory" />

Библиотеки

Скопируйте в $TOMCAT_HOME/lib библиотеки движка из $DISTRIBUTION_LIB. Это все JAR-файлы, которых нет в чистом Tomcat той же версии:

  • библиотеки движка: openbpm-engine-*.jar (движок, модели BPMN и DMN, DMN-движок, JUEL, commons, плагины, Spin, Connect, LDAP);

  • зависимости движка: MyBatis, java-uuid-generator, joda-time, FEEL Scala (feel-engine), SLF4J;

  • языки скриптов и шаблоны: Groovy, GraalVM JavaScript, FreeMarker (см. Дополнительные компоненты);

  • драйвер H2 (h2-*.jar), если используете H2.

Для другой СУБД положите в $TOMCAT_HOME/lib её JDBC-драйвер.

Файл bpm-platform.xml

Скопируйте bpm-platform.xml из $TOMCAT_DISTRIBUTION/server/apache-tomcat-$TOMCAT_VERSION/conf в $TOMCAT_HOME/conf. Расположение файла можно изменить, см. Расположение файла bpm-platform.xml. Минимальное содержимое файла:

<?xml version="1.0" encoding="UTF-8"?>
<bpm-platform xmlns="http://www.operaton.org/schema/1.0/BpmPlatform"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.operaton.org/schema/1.0/BpmPlatform http://www.operaton.org/schema/1.0/BpmPlatform ">

  <job-executor>
    <job-acquisition name="default" />
  </job-executor>

  <process-engine name="default">
    <job-acquisition>default</job-acquisition>
    <configuration>io.openbpm.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration</configuration>
    <datasource>java:jdbc/ProcessEngine</datasource>

    <properties>
      <property name="history">full</property>
      <property name="databaseSchemaUpdate">true</property>
      <property name="authorizationEnabled">true</property>
      <property name="jobExecutorDeploymentAware">true</property>
    </properties>

  </process-engine>

</bpm-platform>

Защита Tomcat

Настройте Tomcat по руководству по безопасности Tomcat 11. В частности, удалите из $TOMCAT_HOME/webapps каталоги ROOT, docs, examples, manager и host-manager.

Дополнительные компоненты

Компоненты ниже необязательны: движок работает и без них. Если на шаге Библиотеки вы скопировали все библиотеки, нужные JAR-файлы уже на месте. Списки ниже пригодятся, если библиотеки копировались выборочно.

В bpm-platform.xml готового дистрибутива плагины Connect и Spin уже зарегистрированы. Если вы скопировали этот файл, регистрировать их повторно не нужно.

Веб-приложения Cockpit, Tasklist и Admin

  1. Скачайте WAR-файл openbpm-engine-webapp-tomcat-$PLATFORM_VERSION.war (артефакт io.openbpm.bpm.webapp:openbpm-engine-webapp-tomcat) из репозитория артефактов.

  2. Скопируйте его в $TOMCAT_HOME/webapps/openbpm-engine.war. Можно выбрать другое имя: оно задаёт путь приложения.

  3. Запустите Tomcat.

  4. Откройте http://localhost:8080/openbpm-engine (или путь, соответствующий имени файла).

REST API

  1. Скачайте WAR-файл openbpm-engine-rest-$PLATFORM_VERSION-tomcat.war (артефакт io.openbpm.bpm:openbpm-engine-rest, классификатор tomcat) из репозитория артефактов.

  2. Скопируйте его в $TOMCAT_HOME/webapps/engine-rest.war. Имя файла задаёт путь приложения.

  3. Запустите Tomcat.

  4. Проверьте работу: http://localhost:8080/engine-rest/engine возвращает список процессных движков.

  5. Включите аутентификацию, как описано в разделе Аутентификация REST API.

Connect

Библиотеки из $DISTRIBUTION_LIB:

  • openbpm-engine-connect-core-$PLATFORM_VERSION.jar

  • openbpm-engine-connect-connectors-all-$PLATFORM_VERSION.jar

  • openbpm-engine-plugin-connect-$PLATFORM_VERSION.jar

  • openbpm-engine-commons-utils-$PLATFORM_VERSION.jar

Зарегистрируйте плагин в $TOMCAT_HOME/conf/bpm-platform.xml:

<bpm-platform ...>
  <process-engine name="default">
    ...
    <plugins>
      ... другие плагины ...
      <plugin>
        <class>io.openbpm.connect.plugin.impl.ConnectProcessEnginePlugin</class>
      </plugin>
    </plugins>
  </process-engine>
</bpm-platform>

Spin

Библиотеки из $DISTRIBUTION_LIB:

  • openbpm-engine-spin-core-$PLATFORM_VERSION.jar

  • openbpm-engine-spin-dataformat-all-$PLATFORM_VERSION.jar

  • openbpm-engine-plugin-spin-$PLATFORM_VERSION.jar

  • openbpm-engine-commons-utils-$PLATFORM_VERSION.jar

Зарегистрируйте плагин в $TOMCAT_HOME/conf/bpm-platform.xml:

<bpm-platform ...>
  <process-engine name="default">
    ...
    <plugins>
      ... другие плагины ...
      <plugin>
        <class>io.openbpm.spin.plugin.impl.SpinProcessEnginePlugin</class>
      </plugin>
    </plugins>
  </process-engine>
</bpm-platform>

Groovy

Библиотеки из $DISTRIBUTION_LIB:

  • groovy-$GROOVY_VERSION.jar

  • groovy-jsr223-$GROOVY_VERSION.jar

  • groovy-json-$GROOVY_VERSION.jar

  • groovy-xml-$GROOVY_VERSION.jar

  • groovy-templates-$GROOVY_VERSION.jar

  • groovy-dateutil-$GROOVY_VERSION.jar

  • groovy-datetime-$GROOVY_VERSION.jar

FreeMarker

Библиотеки из $DISTRIBUTION_LIB:

  • openbpm-engine-template-engines-freemarker-$PLATFORM_VERSION.jar

  • freemarker-$FREEMARKER_VERSION.jar

  • openbpm-engine-commons-utils-$PLATFORM_VERSION.jar

GraalVM JavaScript

Скопируйте из $DISTRIBUTION_LIB все JAR-файлы GraalVM: это артефакты групп org.graalvm.polyglot, org.graalvm.js, org.graalvm.sdk, org.graalvm.regex, org.graalvm.truffle и org.graalvm.shadowed (icu4j).

Документация создана на основе Camunda 7 Docs (Camunda, docs.camunda.org) и распространяется по лицензии Creative Commons Attribution-ShareAlike 3.0 Unported.