image

Предисловие


Инструкция описывает порядок установки и настройки jBPM Suite. Изначально определимся, что мы получим по окончанию всего процесса установки. В данном случае это сервер JBoss BPM Suite, работающий в автономном режиме (не в режиме домена, без кластеризации) на ОС RHEL (на CentOS все абсолютно идентично). Для того что бы было возможно установить JBoss BPM Suite требуется, что бы уже имелся развернутый JBoss EAP. Есть определенные зависимости между версиями jBPM и EAP, их можно с легкостью найти в документации RedHat. В данном материале описан только порядок действий при установке версии jBPM 6.1.2, для других версий она может отличаться.

Предварительные требования


1. JAVA 7
Устанавливаем JDK 7 версии. Настраиваем переменные окружения: EAP_HOME, JAVA_HOME, JRE_HOME, JDK_HOME. Соответственно EAP_HOME=путь к нашему JBOSS EAP серверу, Java переменные — к соответствующим папкам (java_home — к jdk).

2. Установка JBOSS EAP
Мы используем jBPM (Jboss Business Process Management) Suite версии 6.1.2. Как говорилось выше, первоначально необходимо установить Jboss EAP (Enterprise Application Platform). Для нашей версии (6.1.2) соответствует выбор JBoss EAP 6.4 или выше. Скачиваем дистрибутив с сайта RedHat (zip вида). Распаковываем его на сервере.

3. Настройка JBoss EAP
Настраиваем JBoss EAP. В нашем случае это standalone режим (есть 2 режима работы: standalone и domain. Первое — для случаев, когда нет необходимости настраивать централизованное управление, как это реализовано в domain mode. Обычно используется, когда у нас имеется 1 или 2 сервера. Можно объединять в кластер. В domain mode один сервер — управляющий (master), другие — подчиняющиеся (slave). Один конфигурационный файл. Удобно, когда у нас целая группа серверов),  поэтому необходимо отредактировать файл standalone.xml (EAP_HOME/standalone/configuration/standalone.xml) – поправить все адреса 127.0.0.1 на IP адрес нашего сервера. Это касается всех строк, кроме:

<wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>

Там всего 3 таких строки, которые задают доступ к серверу (127.0.0.1 — значит, что доступ есть только с машины, на котором установлен сервер), находятся они в блоке interfaces.

Если вы будете использовать другой профиль, например standalone-full, то необходимо редактировать соответствующий xml файл. Здесь мы этого касаться не будем.

4. Конфигурация пользователей
Далее добавляем пользователей (EAP_HOME/bin/add-user.sh), одного админа Management, другого Application уровня (задав роль admin второму, это роль BPM. Если не добавили, то можно потом отредактировать роли в файле /opt/jboss-eap-6.4/standalone/configuration/application-roles.properties (пример: BPMadmin=admin).

Поэтапно:
A. Запускаем
sh EAP_HOME/bin/add-user.sh

B. Выбираем вариант «a», жмем Enter
C. Вводим имя пользователя
D. 2 раза вводим пароль
E. На вопрос: «What groups...» просто жмем Enter
F. Is this correct yes/no? Вводим: «yes», жмем Enter
G. На следующий вопрос вводим: «no», жмем Enter

Пользователь для управления создан.

Далее:
A. Запускаем
sh EAP_HOME/bin/add-user.sh

B. Выбираем вариант «b», жмем Enter
C. Вводим имя пользователя
D. 2 раза вводим пароль
E. На вопрос: «What groups...» вводим: «admin» и жмем Enter (тут задается роль F. пользователя в приложениях)
F. Is this correct yes/no? Вводим: «yes», жмем Enter
G.На следующий вопрос вводим: «no», жмем Enter

5. Настройка JBOSS EAP как службы
Для того, что бы мы могли выполнять действия в CLI (терминальная консоль управления JBoss EAP), а также для настройки удобного управления (запуск/перезапуск/остановка) сервером и авто-запуска, нам необходимо настроить JBoss EAP как службу. Благодаря RedHat, этот процесс достаточно элементарен, установленный EAP включает в себя заготовленные для этого процесса файлы — jboss-as.conf + jboss-as-standalone.sh/jboss-as-domain.sh.

Что нужно сделать:
A. Копируем в /etc/jboss-as/ файл jboss-as.conf (находится в пути EAP_HOME/bin/init.d/)
B. Редактируем этот файл. Задаем JBOSS_USER и JBOSS_HOME.
JBOSS_USER=root (пользователь от которого будет запускаться служба)
JBOSS_HOME=путь в котором установлен EAP, должен быть равным EAP_HOME (например, JBOSS_HOME=/opt/jboss-eap-6.4)
C. jboss-as-standalone.sh копируем в путь /etc/init.d
D. Изменяем файл jboss-as-standalone.sh через редактор. Меняем используемый конфиг. Если у нас профиль standalone, то менять нет необходимости, если full или ha, то меняем standalone.xml на standalone-full.xml
E. Настраиваем chkconfig. Находясь в папке /etc/init.d прописываем команду:
chkconfig --add jboss-as-standalone.sh

F. Запускаем службу:
service jboss-as-standalone.sh start

G.Настраиваем авто запуск службы:
chkconfig jboss-as-standalone.sh on


JBOSS BPM Suite


1. Установка jBPM Suite
Качаем с портала RedHat версию 6.1.0 для EAP (Deployments for EAP). Делаем резервную копию EAP. Затем копируем определенные файлы в EAP_HOME/. Подробнее про копирование файлов (Их нельзя сразу закидывать в папку с EAP, заменяя все файлы):
A. распаковываем скачанный zip архив. Однако не перезаписывайте все файлы сразу. Необходимо вручную объединить следующие файлы в каталоге EAP_HOME:
— /domain/configuration/* — (Имейте ввиду, что jBPM Suite требует JMS, так что JMS по-умолчанию добавляется во все файлы профилей в domain.xml, предусмотренных jBPM Suite)
— /standalone/configuration/* — (Имейте ввиду, что jBPM Suite требует JMS, так что JMS по-умолчанию добавляется во все файлы профилей предусмотренных jBPM Suite, таких как standalone.xml или standalone-ha.xml)
— jboss-eap-6.4/modules/layers.conf
— jboss-eap-6.4/bin/product.conf
B. Убедитесь, что JBOSS EAP не включает в себя приложения с совпадающими именами. Скопируйте папку /standalone/deployments в EAP_HOME директорию.
C. Убедитесь, что не имеется аналогичного layer в папке modules. Скопируйте папку /modules/system/layers/bpms в EAP_HOME.
Так как мы устанавливали чистый JBOSS EAP, то в пункте B и C можно просто все смело копировать.

2. Обновление jBPM Suite
jBPM установлен, теперь необходимо обновить его до 6.1.2, качаем для этого Update 2. Перекидываем папку на сервер, чистим blacklist.txt, который находится в корневой папке (там перечислены документы, которые не будут изменены при обновлении, соответственно оставляем там только то, что редактировали). Находясь в папке скаченного обновления выполняем:

$ ./apply-updates.sh ~/EAP_HOME/jboss-eap-6.4 eap6.x

Обновление завершается успешно (или нет).

3. Проверка запуска и версии
Проверяем запуск EAP (sh EAP_HOME/bin/standalone.sh, либо: service jboss-as-standalone.sh start). Смотрим, заходит ли в консоль управления EAP (http://IP:9990) и в сам jBPM:

Проверяем версию приложения в about (должна быть 6.1.2). Смотрим в консоли управления EAP задеплоинные приложения (их 3, kie-server, dashbuilder, business-central).

image

Если все на месте, то переходим к следующему пункту.

MS SQL и настройка персистентности jBPM


1. Создание БД и настройка прав
Переходим в интерфейс MS SQL. Создаем там БД (в нашем случае BPMSuiteDB). Создаем пользователя и назначаем ему права «db_owner» для нашей БД.

image

Соответственно такие подробности, как задание имени БД, пользователю, введение пароля на скрине пропущены.

2. JDBC драйвер
Для начала необходимо настроить EAP на работу с созданной БД. Для начала необходимо установить jdbc драйвер. Скачиваем его с сайта msdn в формате tar.gz. Распаковываем и закидываем в папку EAP_HOME/modules/com/sqlserver/main содержимое архива.

image

Т.к. у нас JDK 7 версии, то будет использоваться sqljdbc4.jar. Создаем файл module.xml (т.к. его по умолчанию там нет, на скрине его можно увидеть).
Его содержимое (копируем, ничего не правим. name=com.sqlserver – грубо говоря, это адрес в папке modules, где находится наш драйвер, а точнее папка main с его содержимым):
<?xml version="1.0" encoding="UTF-8"?>
 <module xmlns="urn:jboss:module:1.1" name="com.sqlserver">
 <resources>
 <resource-root path="sqljdbc4.jar"/>
 </resources>
 <dependencies>
 <module name="javax.api"/>
 <module name="javax.transaction.api"/>
 </dependencies>
 </module>

Сохраняем, закрываем.

Далее, закинутый драйвер нужно установить в сам EAP:
А. Запускаем сервер как службу:

service jboss-as-standalone.sh start

B. Запускаем CLI консоль:

sh EAP_HOME/bin/jboss-cli.sh 

C. Выполняем:

connect IP

IP соответственно вбиваем тот, что у сетевого адаптера вашего сервера.
D. Выполняем команду:

/subsystem=datasources/jdbc-driver=DRIVER_NAME:add(drivername=DRIVER_NAME,driver-module-name=MODULE_NAME,driver-xadatasource-class-name=XA_DATASOURCE_CLASS_NAME)


Подставляем значения на наши. Пример:
/subsystem=datasources/jdbc-driver=sqlserver:add(drivername=sqlserver,driver-module-name=com.sqlserver,driver-xa-datasourceclass-name=com.microsoft.sqlserver.jdbc.SQLServerXADataSource)


JDBC драйвер установлен.

3. Создание подключения EAP
Теперь необходимо создать подключение к БД с помощью нашего jdbc драйвера. Проще всего это сделать через management консоль. Идем по адресу: IP:9990, логинимся под созданной нами учеткой Managemenet. Переходим в раздел: Configuration > Connector > Datasources. Жмем «Add».

Вбиваем параметры:
Name: MSSQLDS
JNDI: java:/MSSQLDS
Next >>
Выбираем наш драйвер
Next >>
Connection URL: jdbc:sqlserver://IP:1433;DatabaseName=DATABASE_NAME
В нашем случае это: jdbc:sqlserver://192.168.101.201:1433;DatabaseName=BPMsuiteDB
Username и Password – от пользователя, которого мы создавали для нашей БД в MSSQL.
SecurityDomain оставляем пустым. Жмем Test connection. Должно заработать. Если нет, то проверяем настройки standalone.xml (или –full.xml etc).

Настройки коннекта:

<datasource jta="true" jndi-name="java:/MSSQLDS" pool-name="MSSQLDS" enabled="true" use-ccm="true" statistics-enabled="true">
 <connection-url>jdbc:sqlserver://192.168.101.201:1433;DatabaseName=BPMsuiteDB</connection-url>
 <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
 <driver>sqlserver</driver>
 <security>
 <user-name>username</user-name>
 <password>password</password>
 </security>
 <validation>
 <validate-on-match>false</validate-on-match>
 <background-validation>false</background-validation>
 </validation>
 <timeout>
 <set-tx-query-timeout>false</set-tx-query-timeout>
 <blocking-timeout-millis>0</blocking-timeout-millis>
 <idle-timeout-minutes>0</idle-timeout-minutes>
 <query-timeout>0</query-timeout>
 <use-try-lock>0</use-try-lock>
 <allocation-retry>0</allocation-retry>
 <allocation-retry-wait-millis>0</allocation-retry-wait-millis>
 </timeout>
 <statement>
 <share-prepared-statements>false</share-prepared-statements>
 </statement>
 </datasource>


Должны быть аналогичны этим.
Настройки драйвера:

<driver name="sqlserver" module="com.sqlserver">
 <xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
 </driver>

Должны быть аналогичны этим. Если нет – правим, перезапускаем сервер и проверяем коннект.

4. Настройка jBPM
Далее необходимо настроить jBPM на работу с БД. При первом подключении BPM автоматически создаст таблицы в нашей БД.
Для начала открываем файл: EAP_HOME/standalone/deployments/dashbuilder.war/WEB-INF/jboss-web.xml. Редактируем его:

<jboss-web>
 <context-root>/dashbuilder</context-root>
 <resource-ref>
 <res-ref-name>jdbc/dashbuilder</res-ref-name>
 <res-type>javax.sql.DataSource</res-type>
 <jndi-name>java:/MSSQLDS</jndi-name>
 </resource-ref>

Далее заходим в файл, находящийся в том же пути: jboss-deployment-structure.xml. Редактируем его:

В разделе добавляем строчку:

<module name="com.sqlserver" />

Следующий шаг – настройка business-central.war. Открываем конфигурационный файл: EAP_HOME/standalone/deployments/business-central.war/WEB-INF/classes/META-INF/persistence.xml. Редактируем следующие блоки:
А.
<jta-data-source>java:/MSSQLDS</jta-data-source>

B.
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />

Пытаемся запустить, если ошибки про то, что класс диалекта не найден, то добавляем:

<property name="hibernate.connection.driver_class" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
 <property name="hibernate.connection.password" value="password"/>
 <property name="hibernate.connection.url" value="jdbc:sqlserver://IP:1433/;DatabaseName=BPMsuiteDB"/>
 <property name="hibernate.connection.username" value="username"/>

5. Персистентность jBPM
Осталось настроить персистентность. Для этого в persistence.xml в соответствующие разделы добавляем строки.
А. Блок task service:

<class>org.drools.persistence.info.SessionInfo</class>
 <class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class>
 <class>org.drools.persistence.info.WorkItemInfo</class>

B. Блок properties:

<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup"/>

C. Также изменяем:

<property name="hibernate.show_sql" value="false" />

На:

<property name="hibernate.show_sql" value="true" />

Можно добавлять различные параметры, описаны они все в документации RedHat (раздел Persistence). Сохраняем, закрываем. Перезапускаем сервер. Все, jBPM версии 6.1.2 установлена на Jboss EAP 6.4.0 и работает с СУБД MSSQL c настроенной персистентностью.

Можно установить только JBOSS EAP 6.4 и jBPM Suite 6.1.2, в таком случае будет использоваться встроенная БД JBOSS EAP.

Использованная документация:

Комментарии (1)


  1. SOLON7
    09.09.2015 14:10

    Ужассс. конечно Java со своими настройками взырвает мозг. Спасибо как раз собираемся внедрять BPM систему.