Установка полного дистрибутива на сервер приложений Tomcat вручную

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

Этот раздел описывает, как установить OpenBPM Engine и его компоненты на чистый Apache Tomcat http://tomcat.apache.org/, если вы не можете использовать готовый дистрибутив Tomcat. Дополнительно скачайте дистрибутив OpenBPM Engine для Tomcat со страницы https://openbpm.ru/downloads, чтобы получить необходимые модули OpenBPM Engine.

Как читать это руководство

В этом руководстве мы используем ряд переменных для обозначения общих имён путей и констант:

  • $TOMCAT_HOME указывает на главный каталог сервера Tomcat.

  • $TOMCAT_VERSION обозначает версию сервера Tomcat.

  • $PLATFORM_VERSION обозначает версию OpenBPM Engine, которую вы хотите установить или которая уже установлена, например 2026.0.0.

  • $TOMCAT_DISTRIBUTION представляет скачанный готовый дистрибутив OpenBPM Engine для Tomcat, например openbpm-engine-bpm-tomcat-$PLATFORM_VERSION.zip или openbpm-engine-bpm-tomcat-$PLATFORM_VERSION.tar.gz.

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

==== Проблемы загрузки классов Weld

В сценариях развёртывания с одним или несколькими приложениями процессов, содержащими управляемые бины, могут возникать проблемы загрузки классов, если библиотека WELD встроена непосредственно в папку /WEB-INF/lib файла WAR. Чтобы решить эту проблему, переместите библиотеку weld из war в папку $CATALINA_HOME/lib.

Описанный выше обходной путь не гарантированно работает для случаев со ссылками на бины между развёртываниями WAR (WAR A ссылается на бин из WAR B).

Следующие тестовые сценарии завершаются с ошибкой на Tomcat 10:

Настройка

Прежде чем установить компоненты OpenBPM Engine, необходимо выполнить ряд обязательных шагов настройки.

Создание схемы базы данных и таблиц

В конфигурации дистрибутива по умолчанию схема базы данных и все необходимые таблицы автоматически создаются в базе данных H2 при первом запуске движка. Если вы не хотите использовать базу данных H2, вам необходимо

Когда вы создаёте таблицы вручную, вам необходимо настроить движок на то, чтобы он не создавал таблицы при запуске, установив свойство databaseSchemaUpdate в false (или, в случае использования Oracle, в noop). В Tomcat это делается в файле bpm-platform.xml, расположенном в папке $TOMCAT_DISTRIBUTION\server\apache-tomcat-$VERSION\conf\.

Добавление слушателя инициализации сервера BPM

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

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

Настройка JDBC-ресурса

Чтобы настроить JDBC-ресурс, вам необходимо отредактировать файл $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:./camunda-h2-dbs/process-engine;TRACE_LEVEL_FILE=0"
              defaultTransactionIsolation="READ_COMMITTED"
              username="sa"
              password="sa"
              maxActive="20"
              minIdle="5"
              maxIdle="20" />
  </GlobalNamingResources>
</Server>

Дополнительную информацию о создании источников данных JDBC см. в документации вашей версии Tomcat: 11.0 https://tomcat.apache.org/tomcat-11.0-doc/jndi-datasource-examples-howto.html.

Добавление сервисов OpenBPM

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

     <Resource name="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="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" />

Добавление необходимых библиотек

Скопируйте все библиотеки из папки $TOMCAT_DISTRIBUTION/lib/ в папку библиотек Tomcat $TOMCAT_HOME/lib:

Кроме того, вам необходимо объединить ваш соответствующий JDBC-драйвер в папку $TOMCAT_HOME/lib.

Добавление bpm-platform.xml

Вам необходимо добавить файл bpm-platform.xml в папку $TOMCAT_HOME/conf или, опционально, вы можете настроить его расположение с помощью некоторых доступных механизмов, см. Настройка расположения файла bpm-platform.xml:

<?xml version="1.0" encoding="UTF-8"?>
<bpm-platform xmlns="http://www.camunda.org/schema/1.0/BpmPlatform"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.camunda.org/schema/1.0/BpmPlatform http://www.camunda.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 (Security Howto) для вашей версии Tomcat: 11.0 https://tomcat.apache.org/tomcat-11.0-doc/security-howto.html.

В частности, перейдите в ${TOMCAT_HOME}/webapps/ и удалите каталоги ROOT, docs, examples.adoc, manager и host-manager.

Опциональные компоненты

Этот раздел описывает, как установить опциональные зависимости OpenBPM Engine на сервер Tomcat. Ни одна из них не требуется для работы с основной платформой.

Cockpit, Tasklist и Admin

Для развёртывания приложений требуются следующие шаги:

  1. Скачайте веб-приложение OpenBPM Engine, которое содержит оба приложения, из нашего репозитория артефактов http://nexus.openbpm.ru/. Для Tomcat 11 имя артефакта — $PLATFORM_VERSION/camunda-webapp-tomcat-jakarta-$PLATFORM_VERSION.war.

  2. Скопируйте файл war в $TOMCAT_HOME/webapps/camunda.war. Опционально вы можете назвать его иначе или извлечь его в папку, чтобы развернуть по другому контекстному пути.

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

  4. Откройте Cockpit и Tasklist по адресам /camunda/app/cockpit и /camunda/app/tasklist или по настроенному вами контекстному пути.

REST API

Для развёртывания REST API требуются следующие шаги:

  1. Скачайте архив веб-приложения REST API из нашего репозитория артефактов http://nexus.openbpm.ru/. Для Tomcat 11 имя артефакта — $PLATFORM_VERSION/camunda-engine-rest-jakarta-$PLATFORM_VERSION-tomcat.war.

  2. Скопируйте файл war в $TOMCAT_HOME/webapps. Опционально вы можете переименовать его или извлечь его в папку, чтобы развернуть по определённому контексту, например /engine-rest.

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

  4. Откройте REST API по настроенному вами контексту. Например, http://localhost:8080/engine-rest/engine должен вернуть имена всех движков платформы, при условии что вы развернули приложение в контексте /engine-rest.

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

Плагин OpenBPM Connect

Добавьте следующие артефакты (если они отсутствуют) из папки $TOMCAT_DISTRIBUTION/lib/ в папку $TOMCAT_HOME/lib/:

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

  • camunda-commons-utils-$PLATFORM_VERSION.jar

Чтобы активировать функциональность OpenBPM Connect для движка процессов, в $TOMCAT_HOME/conf/bpm-platform.xml необходимо зарегистрировать плагин движка процессов следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<bpm-platform ...>
  <process-engine name="default">
    ...
    <plugins>
      ... existing plugins ...
      <plugin>
        <class>io.openbpm.connect.plugin.impl.ConnectProcessEnginePlugin</class>
      </plugin>
    </plugins>
    ...
  </process-engine>

</bpm-platform>

OpenBPM Spin

Добавьте следующие артефакты (если они отсутствуют) из папки $TOMCAT_DISTRIBUTION/lib/ в папку $TOMCAT_HOME/lib/:

  • camunda-spin-dataformat-all-$PLATFORM_VERSION.jar

  • camunda-spin-core-$PLATFORM_VERSION.jar

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

  • camunda-commons-utils-$PLATFORM_VERSION.jar

Чтобы активировать функциональность OpenBPM Spin для движка процессов, в $TOMCAT_HOME/conf/bpm-platform.xml необходимо зарегистрировать плагин движка процессов следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<bpm-platform ...>
  ...
  <process-engine name="default">
    ...
    <plugins>
      ... existing plugins ...
      <plugin>
        <class>io.openbpm.spin.plugin.impl.SpinProcessEnginePlugin</class>
      </plugin>
    </plugins>
    ...
  </process-engine>
  ...
</bpm-platform>

Groovy-скриптинг

Добавьте следующие артефакты (если они отсутствуют) из папки $TOMCAT_DISTRIBUTION/lib/ в папку $TOMCAT_HOME/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

Добавьте следующие артефакты (если они отсутствуют) из папки $TOMCAT_DISTRIBUTION/lib/ в папку $TOMCAT_HOME/lib/:

  • camunda-template-engines-freemarker-$PLATFORM_VERSION.jar

  • freemarker-2.3.31.jar

  • camunda-commons-utils-$PLATFORM_VERSION.jar

Интеграция GraalVM JavaScript

Добавьте следующие артефакты (если они отсутствуют) из папки $TOMCAT_DISTRIBUTION/lib/ в папку $TOMCAT_HOME/lib/:

  • graal-sdk-21.1.0.jar

  • icu4j-68.2.jar

  • js-21.1.0.jar

  • js-scriptengine-21.1.0.jar

  • regex-21.1.0.jar

  • truffle-api-21.1.0.jar

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

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

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