こんにちは、Hです。
先日、弊社主催のセミナー「IT Technical Seminar V15」が開催されました。
ヌーラボ社の橋本様、日揮株式会社の鈴木様、アトラシアンの長沢様にも講演いただき、
いつもに増して中身の濃いセッションが展開されました。
私も恐縮ながらその中で「おぷとんばんくでワークフロー構築」というタイトルで
1コマセッションをいただき、Activitiを利用したワークフロー・システム構築の
お話をさせていただきました。
今回からはそこで話した内容をもとに、実際にActivitiを利用して
ワークフロー・システムを開発しながら、Activitiでできることを紹介していきたいと思います。
第2回目は「ワークフローを描く」として、Activitiでワークフローを作成する方法を紹介します。
Activitiが提供するワークフロー・モデリングツール
Activitiは下記の3つのモデリング用ツールを提供しています。
- Activiti Modeler
- Activiti Designer
- Activiti Kickstart
Activiti Modelerは第1回目:業務フローとActivitiでダウンロード・インストールしたActiviti Explorer(※)に付属しています。
こちらで定義したモデル情報はActiviti内部で保持するデータベースに保存されます。
※Activiti ExplorerのソースはGit Hubで公開されています。

Activiti Designerは Eclipseのプラグインとして提供されており、
IDE上でワークフローのモデリングが可能になります。
そのためユーザと一緒になってワークフローをモデリングしていくことが可能になります。
今回はこのActiviti Designerを利用してワークフローを作成していきます。
Activiti Kickstartはワークフローのプロセス定義、UIとなるフォーム定義を行えるEclipseのプラグインとなります。
上記のActiviti Designerをインストールとすると一緒に同梱されてきます。
これでプロセスとそこで必要な画面の定義まででき、プログラミングなしで
ワークフローシステムを構築することができます。
このツールについては別のタイミングで取り上げてみようと思います。


Activiti Designerのインストール
それではActiviti Designerをインストールしましょう。
Eclipseを起動して、[ヘルプ]メニューから[新規ソフトウェアのインストール]を選択します。
サイトのロケーションに下記を入力します。
http://www.activiti.org/designer/update
名前の欄に[Activiti BPMN Designer]が表示されるのを確認後、チェックして[次へ]をクリックします。

ライセンス条項を確認して、[同意します]を選択して、[完了]をクリックします。
Eclipseを再起動したら、Activiti Designerのインストールは終わりです。
作成対象の業務を説明します
さて今回ワークフローとして作成する対象の業務なのですが、
連載の中では、「おぷとんばんく」という仮想の銀行の業務を題材にしていきます。
本連載で登場するメンバーたち
まずは「おぷとんばんく」で働いているメンバーも合わせて紹介させていただきますね。

ワークフローで業務目標を実現する!?
さて口座管理部の部長であるH部長。
今後の業務拡大に向けて、目標を掲げています。

さっそくK課長が中心となって業務目標を達成すべく、ワークフローの精査に乗り出しました。
口座管理部のそれぞれのメンバーに業務の内容をヒアリングしています。
みなさんもどんなフローになるか想像しながらお読みください。



実際に上記の内容を業務フロー図に表すとこんな感じになります。
開設承認時に不承認ないのかな……とか、申込書や本人確認書類の保存どうするのかな?
とか突っ込みどころはありますが、おいおいワークフローも修正していこうと思いますので
まずはこの業務フロー図で進めていきます。

ワークフローをモデリングする
それでは先ほどの業務フロー図を使って、ワークフローのモデリングをしてみましょう。
Eclipseを起動して、[ファイル]メニューから[新規]-[その他]を選択します。
新規ダイアログボックスで[Activiti]-[Activiti Diagram]を選択します。

ファイル名は「MyProcess」のままで[完了]を選択します。
すると白いキャンバスとパレットが表示されます。
ここにワークフローをモデリングしていきます。
パースペクティブが[Activiti]になっていない場合はパースペクティブを変更してください。
下記の画面のように[プロパティ]ビューでワークフローの設定を行うことができるようになります。

プールとレーンを配置する
最初にプールとレーンを配置します。
プールは組織等を現し、その中を分割する場合にレーンを利用します。
今回は「口座開設部」がプールで、「事務担当者」「承認担当者」「最終決裁者」がレーンに当たります。
[パレット]の[コンテナ]から[Pool]を選択し、キャンバスにドラッグアンドドロップします。
同様に[Lane]を2つ[Pool]に配置します。
配置した[Pool]や[Lane]を選択すると、プロパティビューにId, 名前が表示されます。
名前にそれぞれ設定すると、コンテナ上の表記も変わります。

それぞれ設定すると下記のようになります。

タスクを配置する
続いてイベントとタスクを配置します。
パレットの[イベント]から開始イベント、終了イベントを選択して、キャンバスに配置します。
[タスク]から[User Task]を選択して、キャンバスに配置します。
配置場所は事務担当者のレーンになります。
配置した[User Task]を選択したら、プロパティビューで「本人確認チェック」と入力してください。
同じようにネガチェック、開設承認と配置します。

配置した時のイメージは下記の通りです。
タスクをつなぐ
最後はイベントとタスクをフローでつないで完成です。
パレットの[接続]から[Sequence Flow]を選択して、イベントとタスク、タスクとタスクをつないでください。
ただし「ネガチェック」から「開設承認」にかけては承認・不承認の分岐を入れる必要があります。
これは[Gateway]の[ExclusiveGateway]で実現します。
[ExclusiveGateway]を「ネガチェック」タスクの横に配置したら、「ネガチェック」タスクから[ExclusiveGateway]にフローをつなぎます。次に[ExclusiveGateway]から承認の線を「開設承認」タスクへ、不承認の線を「本人確認チェック」タスクへとつないでいきます。

完成したイメージは下記の通りとなります。
最後に
いかがでしたでしょうか?
このようにワークフローをモデリングするだけで、Activitiではワークフローの動きを管理することができます。
こういったワークフロー・エンジンを使わない場合、ステータスの制御や状態遷移を細かく管理していくことになり、
ステータスが増えてくると非常に複雑になっていきます。
もちろん分岐や新しいステップが増えると、影響調査まで実施し、さらに複雑になっていきます。
さて次回はこの作成したワークフローに対して、実際にタスクを実行するための処理を実装していきます。
どうぞお楽しみに。