Red Hat Process Automation Manager (PAM) は、デフォルトでは、H2DBを使うことができるようになっています。
H2DBは、Javaで実装された、軽量なインメモリデータベースですが、本番で使うことは推奨されていません。
本格的な開発に入る前に、DBを変更しましょう。
以下のDB用のDDLスクリプトがダウンロード可能になっています。
- DB2
- H2
- MySQL
- Oracle
- PostgreSQL
- SQLServer
- Sybase
大まかな流れ
PAMがEAP上にデプロイされ、正常起動する状態を前提とします。ローカルへの環境構築方法は以下記事等を参照ください。
PAMの開発環境をローカルで作成して触ってみるための手順
- 必要なものをダウンロード(DDLスクリプト、JDBCドライバ、なければDB本体も)
- DBをインストール
- DDLスクリプトを流す
- JDBCドライバをEAPにモジュール登録
- PAMのデフォルトDB設定を変更
ここでの前提
DBはPostgerSQLを使います(バージョンは13.1)
必要なもの
- DB本体
- 各自入手ください。PostgreSQLはこのあたりからダウンロード https://www.postgresql.jp/download
- macの場合、Homebrewでインストール可(バージョン13の場合の例)
$ brew install postgresql@13
- DDLスクリプト(以下の製品のadd-onのzip内に各DB用のDDLスクリプトが含まれています)
- JDBCドライバ
- 各自入手ください。postgresql用はこのあたりなど。
https://jdbc.postgresql.org/download.html
- 各自入手ください。postgresql用はこのあたりなど。
- DB用GUIツール(pgadmin,Object Browser等、無くてもよいが、あったほうが便利)
- ここではpgadmin使いました。pgadminはこちらからダウンロード https://www.pgadmin.org/download/
手順を詳細解説
**DB本体のインストール方法、pgadminのインストール方法は、ここでは省略します。
DDLスクリプトを流す
DDLスクリプトが含まれている、add-ons.zipを解凍すると、複数のzipが出来ます。その中の「rhpam-7.x.x-migration-tool.zip」を更に解凍します。
すると、ddl-scriptsフォルダが出来ます。そこに各DB用のDDLスクリプトがあります。
たくさんありますが、新規作成時に必要なのは、postgresql-jbpm-schema.sql です。
DBをインストールして起動したら、ユーザを作りましょう。(まだやっていない場合)
以下はmacの場合の例
// PostgreSQLインストール
$ brew install postgresql
// バージョン確認
$ psql --version
// postgresql起動
$ brew services start postgresql
// ユーザ作成
$ createuser -s -P ユーザ名
まず、PAM用のデータベースを作成します。
$ createdb DATABASE_NAME
(もしくは、psqlで接続して、# create database DATABASE_NAME)
次に、DDLスクリプトを流します。
$ psql DATABASE_NAME < /解凍したDDLスクリプトのパス/postgresql-jbpm-schema.sql
各種テーブル(40数個)とインデックス等が生成されます。
これで、PAM用のデータベースが完成です。
pgadmin等でアクセスして、中身(データは空です)を確認してみましょう。
バージョン7.9では、以下のテーブルが作成されました。
テーブルたくさんありますが、よく使われるものは一部のみです。
どういうデータが入るかは、テーブル名からなんとなく想像できると思います。
JDBCドライバをEAPにモジュール登録する
次に、JDBCドライバをEAPに登録します。
ここでは、CLIを使うやり方を紹介します。(管理コンソールからも可能です)
CLIツールは、/EAP_HOME/bin/jboss-cli.sh
です。
$ ./EAP_HOME/bin/jboss-cli.sh
CLIを起動後、以下のmodule addコマンドを実行し、モジュールを追加します。
module add --name=MODULE_NAME --resources=PATH_TO_JDBC_JAR --dependencies=DEPENDENCIES
// 以下は例
module add --name=org.postgresql --resources=/path/postgresql-42.2.18.jar --dependencies=javax.api,javax.transaction.api
続いて、同じくCLIで以下コマンドを実行し、JDBCドライバを登録します。
/subsystem=datasources/jdbc-driver=DRIVER_NAME:add(driver-name=DRIVER_NAME,driver-module-name=MODULE_NAME,driver-xa-datasource-class-name=XA_DATASOURCE_CLASS_NAME, driver-class-name=DRIVER_CLASS_NAME)
// 以下は例
/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=org.postgresql,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource))
driver-module-nameとmodule addした際のnameを一致させます。
さて、次に、データソースを作成します。
CLIでデータソースを作成します。non-XAとXAとがあります。ここでは、non-XAデータソースを作成します。
PAMと連携するアプリケーション側のDBが他のところにあり、2フェーズコミットが必要になる場合は、XAデータソースを作成します。
data-source add --name=DATASOURCE_NAME --jndi-name=JNDI_NAME --driver-name=DRIVER_NAME --connection-url=CONNECTION_URL
// 以下は例
data-source add --name=PostgresDS --jndi-name=java:jboss/PostgresDS --driver-name=postgresql --connection-url=jdbc:postgresql://localhost:5432/postgresdb --user-name=admin --password=admin
PAMのデフォルトDB設定を変更する
最後に、PAMのデフォルトDBが、H2DBになっているので、それを変更します。
/EAP_HOME/standalone/configuration/standalone-full.xml
を編集します。
system-propertiesの設定箇所で、以下のプロパティを探し、valueを以下のように編集します。
以下プロパティがない場合は、追加します。
- org.kie.server.persistence.ds
- org.kie.server.persistence.dialect
<system-properties>
・・・
<property name="org.kie.server.persistence.ds" value="java:jboss/PostgresDS"/>
<property name="org.kie.server.persistence.dialect" value="org.hibernate.dialect.PostgreSQL82Dialect"/>
・・・
</system-properties>
EAP再起動で、PostgreSQLがデフォルトDBになります。