Activitiを使ったワークフローシステムの構築第2回目:ワークフローを描く

Activitiを使ったワークフローシステムの構築第2回目:ワークフローを描く

こんにちは、Hです。

先日、弊社主催のセミナー「IT Technical Seminar V15」が開催されました。
ヌーラボ社の橋本様、日揮株式会社の鈴木様、アトラシアンの長沢様にも講演いただき、
いつもに増して中身の濃いセッションが展開されました。

私も恐縮ながらその中で「おぷとんばんくでワークフロー構築」というタイトルで
1コマセッションをいただき、Activitiを利用したワークフロー・システム構築の
お話をさせていただきました。

今回からはそこで話した内容をもとに、実際にActivitiを利用して
ワークフロー・システムを開発しながら、Activitiでできることを紹介していきたいと思います。

第2回目は「ワークフローを描く」として、Activitiでワークフローを作成する方法を紹介します。

Activitiが提供するワークフロー・モデリングツール

Activitiは下記の3つのモデリング用ツールを提供しています。

  1. Activiti Modeler
  2. Activiti Designer
  3. 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ではワークフローの動きを管理することができます。
こういったワークフロー・エンジンを使わない場合、ステータスの制御や状態遷移を細かく管理していくことになり、
ステータスが増えてくると非常に複雑になっていきます。

もちろん分岐や新しいステップが増えると、影響調査まで実施し、さらに複雑になっていきます。

さて次回はこの作成したワークフローに対して、実際にタスクを実行するための処理を実装していきます。

どうぞお楽しみに。