Tech Sketch Bucket of Technical Chips by TIS Inc.

オープンソースのワークフローエンジン「Activiti」入門

Pocket

私達がお客様向けに構築するバックオフィスシステムにおいて、ワークフロー機能を求められる機会が増えています。
この様な要求に対応するために、オープンソースのワークフロー・エンジンを導入することを検討しました。

数あるワークフロー・エンジンの中から「Activiti」を選択し、TISのアプリケーション開発基盤『Xenlon~神龍』(※)にワークフロー機能を装備しました。
本連載では、この「Activiti」について、概要説明・動作環境準備・実践という順序でご紹介いたします。

アプリケーション開発基盤『Xenlon~神龍』


オープンソースのワークフローエンジン「Activiti」とは

「Activiti」は、Apache2.0ライセンスのもとで配布されているオープンソースの"ワークフロー・エンジン"です。
BPMN2.0という規格に準拠していることから、"BPMN2.0エンジン"とも呼ばれています。

Activitiの開発は、オープンソースの「Enterprise Content Management(企業向けコンテンツ管理システム)」で有名な「Alfresco Software」によって行われています。

Activitiは、元JBoss jBPMのプロジェクトリーダーであり、開発者でもあったTom Baeyens氏らによって開発されました。
よって、jBPMのVer.3(およびVer.4)のコンセプトを継承しており、JavaベースのWebアプリケーションへ組み込みやすいエンジンになっています。

【これまでのリリースについて】
2010年12月1日に初版である「Ver. 5.0」がリリースされてから、頻繁(1ヵ月毎)にバージョンアップが行われてきました。
ここ最近(Ver. 5.10以降)は、約3ヵ月毎にバージョンアップが行われており、安定期に入ったと考えられます。

Activitiのコンポーネント群

Activitiは、以下のコンポーネント群で構成されています。

activiti_components.png

モデリング

activiti_component_modeling.png
※1 Activiti Modeler 製品版との機能差異
※2 Activiti Kickstart

ランタイム

activiti_component_runtime.png

管理

activiti_component_management.png

「Activiti Engine」の2つの利用方法

「Activiti Engine」は、以下2つの利用方法があります。
use_two_methods.png

「Activiti Explorer」をTomcat上で動かしてみよう

環境準備

1)Tomcatの準備

Tomcatダウンロードサイト

執筆時点の最新バージョン(7.0.41)の中で、以下のzipファイルをダウンロードします。
activiti_explorer_1.png

ダウンロードした「apache-tomcat-7.0.41.zip」を任意の場所に解凍してください。

【Tomcatの設定変更】
「{任意の解凍場所}\conf\context.xml」で以下の記述がコメントアウトされていますので、有効にしてください。
<Manager pathname="" /> ※コメント解除によって、「Session Persistence」を無効化します。

2)Activitiのダウンロード

以下のサイトから執筆時点の最新バージョン(5.13)のzipファイルをダウンロードします。
http://www.activiti.org/download.html

ダンロード完了後、「activiti-5.13.zip」を解凍してください。

3)「Activiti Explorer」をTomcat上にデプロイ

activiti-5.13.zipを解凍後、「{任意の解凍場所}\activiti-5.13\wars\activiti-explorer.war」をコピーし
「{Tomcatホームディレクトリ}\webapps」へ貼り付けます。
{Tomcatホームディレクトリ}\bin\startup.bat を実行し、以下のログが出力されていれば、Activiti Explorerのデプロイおよび起動は成功です。

activiti_explorer_2.png

「Activiti Explorer」を利用してみよう

1)ブラウザから以下のURLにアクセスする

http://localhost:8080/activiti-explorer/

UserID fozzie
Password fozzie

として、ログインしてください。(UserID:fozzieのロールは、"一般ユーザー"です。)

【補足】
「Activiti Explorer」の内部では、H2のデータベースが起動されています。
別途、データベースを準備する必要はありません。
上記のユーザーは、予め登録済みのユーザーです。

activiti_explorer_3.png

2)サンプルとして登録されているプロセスフローを確認する

[Processes]をクリックすると、左側に登録済みのプロセスフローが表示されます。
activiti_explorer_4.png

3)「Vacation request(休暇申請)」のプロセス・フローを開始する

休暇申請のプロセスを開始してみましょう。
activiti_explorer_5.png

4)最初のアクティビティである「Handle vacation request」へ進む

開始イベントが発生し、最初のアクティビティである「Handle vacation request」へ進みます。
以下の画面にて、休暇申請の内容を入力し、[Start process]ボタンを押下します。
activiti_explorer_6.png

5)申請完了後にログアウトする

休暇申請が完了したら、ログアウトします。
activiti_explorer_7.png

6)UserID:gonzoで再びログインする

UserID gonzo
Password gonzo

として、ログインしてください。(UserID:gonzoのロールは、"マネージャー"です。)

7)マネージャー宛てに届いている承認依頼を確認する

UserID:gonzo宛てにUserID:fozzieから休暇申請の承認依頼が届いていますので、確認します。
[Queued]-[Management(1)]と表示され、1件の依頼があることを確認できます。
activiti_explorer_8.png

8)承認行為を行う

[claim]ボタンを押下し、「この休暇申請に対して、これから承認行為を行います」という予約のような操作を行います。
activiti_explorer_9.png

9)承認/却下のいずれかを選択し、タスクを完了する。

Approve(承認)/Reject(却下)のいずれかを選択し、タスクを完了します。
activiti_explorer_10.png

10)承認結果を確認する

再び、UserID:fozzieでログインし、結果を確認します。

  • Approve(承認)の場合、「Send confirmation e-mail」のアクティビティにフローが進むため、画面上で結果を確認できません。(「Send confirmation e-mail」は、自動メール送信のアクティビティですが、メール環境未設定のため、実際は送信されません。)
  • 「Reject(却下)」の場合、「Adjust vacation request」のアクティビティにフローが進んでいます。
    以下の画面で「Inbox」に1件のお知らせ(却下された休暇申請)があることを確認できます。
    activiti_explorer_11.png

このように「Activiti Explorer」は、Activiti Engineと連携してビジネス・プロセスを実行することができる完成されたアプリケーションです。

今回は、紹介していませんが、UserID:kermitでログインすると、Activiti Explorerの管理機能を使うことができます。

是非、以下のユーザーでログインし、管理機能を動かしてみてください。

UserID kermit
Password kermit

(UserID:kermitのロールは、"管理者"です。)

おわりに

今回は、「Activiti入門」ということで、機能概要やActiviti Explorerのデモを中心に説明しました。
次回以降の連載では、『Activiti Engineの"Java API"』を使って、簡単なワークフローアプリケーションを開発したいと思います。
Engine APIを利用すると、作成した「プロセス・フロー」をもとにしたフロー制御やプロセスのステータス管理を簡単に実装できます。
チュートリアル形式で、複数回に分けて連載する予定ですので、ご期待ください。

エンジニア採用中!私たちと一緒に働いてみませんか?