activitiのサンプルをローカルで動かし使ってみて、BPM及びactivitiの動作を一通り把握したい。
activiti7はクラウドを前提としているため、ハードルが高い。なので、まずactiviti6から。
activiti6をとりあえず動かす
activiti6ダウンロード
下記リンクからダウンロードする:
https://github.com/Activiti/Activiti/releases/download/activiti-6.0.0/activiti-6.0.0.zip
zipファイルを解凍したら、以下の3フォルダに分けられている:
- database:
各種データベース環境作成・メンテ用sql一式 - libs:
activiti engine等、activitiのcoreライブラリ一式 - wars:
サンプルwarファイル三つ
tomcat実行環境準備
tomcatの実行環境は、既に持っているため、ここで割愛。
activiti実行
上記warファイルをtomcatのwebapps配下コピーし、tomcat配下binにあるstartupを実行する。
下記URLにアクセスし、ログイン画面が出ればOK。
http://localhost:8080/activiti-app
admin/testでログインできる。
これで、activitiはメモリ上のH2データベースを利用して動作するので、tomcatを停止すると、作成したすべての情報が消える。
なので、ローカルのPostgresと接続して、データが消えないようにしたい。
activitiをpostgresと接続する
接続方法は2つ。どちらもwebapps/activiti-app/WEB-INF/classes/META-INF/activiti-app/activiti-app.properties
の編集が必要。
jdbcドライバを直接利用して接続
上記activiti-app.propertiesファイル内の以下の設定を行う:
datasource.driver=org.postgresql.Driver
datasource.url=jdbc:postgresql://localhost:5432/準備したDB名
datasource.username=準備したユーザ名
datasource.password=準備したユーザのパスワード
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
urlは自分の環境に適宜合わせること
JNDI Datasource経由して接続
activiti-app.propertiesファイル内jdbc関連をコメントアウトし、以下の設定を追加する:
datasource.jndi.name=jdbc/activitiDB
datasource.jndi.resourceRef=true
{tomcat_home}/conf/Catalina/localhost
にactiviti-app.xml
ファイルを以下の内容で作成する:
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/activiti-app">
<Resource auth="Container"
name="jdbc/activitiDB"
type="javax.sql.DataSource"
description="JDBC DataSource"
url="jdbc:postgresql://localhost:5432/準備したDB名"
driverClassName="org.postgresql.Driver"
username="準備したユーザ名"
password="準備したユーザのパスワード"
defaultAutoCommit="false"
initialSize="5"
maxWait="5000"
maxActive="120"
maxIdle="5"/>
</Context>
JNDI Datasourceを経由するいいところは、データベース接続先が変わっても、warファイルの作成し直すが必要ないってことかな。
データ構造を準備する
postgresの管理ツールまたはpsqlでactiviti用ユーザとそのデータベースを作成した後、activitiが使うテーブル一式の作成は必要。
本来ならば、activitiのProcessEngineConfiguration初期化時の
setDatabaseSchemaUpdate
をtrue
に設定すれば、自動的にテーブルを作成してくれるはずが、なぜかうまく行かない。
テーブル作成は、activiti解凍フォルダdatabase/create内の以下sqlを利用する:
- activiti.postgres.create.engine.sql
- activiti.postgres.create.history.sql
- activiti.postgres.create.identity.sql
tomcat再起動
tomcatから特にエラーが出ていなければ、activitiがpostgresのDBを利用することとなる。
activitiにログインして適当ユーザを作成し、データベースのact_id_user
にそのユーザ情報が追加されればOK。