おぷとんばんくでワークフロー構築
Activitiを利用して効率よくワークフローを構築しよう！

みなさん、こんにちは畑中です2このセッションのテーマ

ワークフローとワークフロー・エンジン

3なぜ？このテーマを？

4

今日のアジェンダ
1.ワークフローを作る
2.ワークフローを実現する
3.ワークフローを改善する

5

おぷとんばんくの仲間たち
口座管理部

畑中部長

小島課長

IT管理部

似内さん

大羽主任

6

第一部

1.ワークフローを作る

ワークフローを作る

2.ワークフローを実現する
3.ワークフローを改善する

7

口座管理部 定例会議
1日1000件ですか！？

おぷとんばんくもそろそろ業務拡大していこうと思う。
1日1000件、開設事務を実行できるようにしていきたい。

うーん、どうしたらいいですかね。
とりあえず今の業務内容をワークフローで表してみましょうか？

どうしたらよいと思う？

ワークフローを表すって図にするんですか？

8ワークフローとは？

業務の一連の流れおよびその流れを定義すること

9ワークフローをなぜ作るのか？
メリット

効果

業務手順の明確化

進捗状況が分かる

必要文書の明確化

作業ミスの防止業務を俯瞰できる

業務の見直し・効率化

10それでは口座管理部の業務をピックアップして図にしてみましょう

11

おぷとんばんくの業務内容その１私の業務ですか？
お客さまが記載した申込書と本人確認書類をもらってます

２つの書類を見比べて、内容が一致しているか本人確認チェックします。
（事務担当）
似内さん

チェックを終えたら捺印して、小島課長にネガチェックをお願いしています。

12

おぷとんばんくの業務内容その２

自分は似内さんからもらった申込書、本人確認資料をもとにネガチェックしてます。チェック結果を見て、よければOKにするし、だめだったら似内さんに戻しているね。

OKだったら畑中部長に申込書を渡して、最終決裁をお願いしているよ。

（承認担当）
小島課長

13

おぷとんばんくの業務内容その３

僕はほとんど何もしないよ。

最終決裁の捺印をするだけだね。
僕が最終決裁して、開設業務は終わり。

（最終決裁者）
畑中部長

注意：実際には口座番号の採番、Thanksメール送信とかいろいろあると思いますがここでは割愛しています。
14

こんな感じでしょうか？

15

BPMN
ビジネスプロセスの記載法の1つ
BPMNを利用することのメリット• 記載法がシンプルで分かりやすい• BPMNをサポートするワークフロー・エンジン／システムが多い。

16

BPMN2.0の記載
イベント
アクティビティ
シーケンスフローゲートウェイ

プールとレーン

17

BPMNで表すと18

より詳しく知りたい方は■BPMN2.0 仕様（OMG）
http://www.omg.org/spec/BPMN/2.0/■IT Mediaビジネスを可視化するモデル記述言語「BPMN」
http://www.itmedia.co.jp/im/articles/0503/05/news014.html■BPMNモデリングガイドライン
http://www.umtp-japan.org/modules/introduction1/index.php?id=10■オープンソースBPMジャパン
2014.05.26 BPMN2 サンプルモデル図一挙公開 ：http://www.ossbpm-japan.com/processlib.html

19

第二部

1.ワークフローを作る

ワークフローを実現する

2.ワークフローを実現する
3.ワークフローを改善する

20

おぷとんばんく会議室にて業務を整理して、ワークフローの図は作った
けど、1日1000件を回せないね。
紙に記載しているだけで日が暮れそうだ。

もう、紙じゃ無理だろう。
ワークフローシステムを構築しようよ。

それもありますけど、1日1000件も記載したら申込台帳が何冊あっても足りませんよ。

21

ワークフローシステム

コンピュータとネットワークを利用して、一連の業務を効率良くおこなうためのシステム

ワークフローシステムが提供するもの
さらに便利

ワークフローバージョン管理

組織・人事変更への対応

モニタリング・KPI

便利

ワークフローモデリング

一覧・フィルタリング

フォーム（画面）作成

ワークフローの統制
基盤

ワークフローの制御

認証・権限

証跡、操作ログ23

様々なワークフローエンジン・システム■Activiti
http://www.activiti.org/
オープンソースのワークフローエンジン。
オープンソースながらも多数の機能やツールを提供。
2013年度のベスト・オープンソースBPM■Bonita BPM
http://www.ossbpm-japan.com/bonita-bpm.html
オープンソースのCOMMUNITY版は無料、機能追加版は有料で提供。こちらもベスト・オープンソースBPM■jBPM
http://jbpm.jboss.org/
アプリケーションサーバー「Jboss」が提供するワークフローエンジン
その他パッケージ製品も含めて多数存在。
24

Activitiの提供範囲
便利

機能として提供
API・データを提供

ワークフローバージョン管理

組織・人事変更への対応

モニタリング・KPI

ワークフローモデリング

一覧・フィルタリング

フォーム（画面）作成

ワークフローの統制
基盤

ワークフローの制御

認証・権限

証跡、操作ログ25

Activitiでワークフローを実現する
1.ワークフローをモデリング

2.フォーム作成

3.イベント処理作成

モデリングするだけでワークフロー制御の出来上がり！

Activitiでワークフローを実現する
1.ワークフローをモデリング

2.フォーム作成

3.イベント処理作成

画面はお好きなUIで入力データとワークフローを関連付け

Activitiでワークフローを実現する
1.ワークフローをモデリング
taskService.complete(taskId)

ワークフローを進めたい場合は「完了」
ここだけプログラミング事務担当（分岐の場合）
2.フォーム作成
Map<String, Object> variableMap = new口座
承HashMap<String, Object>();管認理担variableMap.put(“flowCtrl”, “APPROVE”);
部
当taskService.complete(taskId, variableMap);
3.イベント処理作成

最終決
裁者

ネガ
NG

本人確認チェッ
ク

ネガチェック

×
ネガ
OK

開設承認

28

作成したワークフローをデプロイ
口座開設業務をしてみましょう29

おぷとんばんくで利用したActivitiの処理プロセスの開始

認証

タスクの検索タスクの実行
タスクのアサイン・委譲30

Activitiが提供する機能
タスクの検索タスクの実行
タスクのアサイン・委譲プロセスの開始

認証
31

その他、実際のシステムでは？
• プログラム実行（Java、スクリプト）• 外部サービスとの連動• WEBサービスやREST API• メール送信• ビジネスルール実行（JBoss Drools）
32

第三部

1.ワークフローを作る

ワークフローを改善する

2.ワークフローを実現する
3.ワークフローを改善する

33

口座管理部 定例会議
ワークフローシステムの構築お疲れ様。

あれ、そういえばどれぐらいこなせているんだろう？
時間とか記録とってないし、どうするかな。。。

ところで1日1000件はいきそうかい？

おいおい、何のためにシステム化したと思ってんの。
記録はきちんと取れているよ。
私、毎日残業ですよー！

34

記憶より記録
Activitiは自動でヒストリカルデータを蓄積• アクティビティごとの開始時間、終了時間、経過時間

ヒストリカルデータの取得

35

データを見て評価
プロセス
番号

タスク名

担当者

開始日時

終了日時

かかった時間1

本人確認チェック

似内

2014/6/20
10:00:00

2014/6/20
11:35:20

1:15:20

2

本人確認チェック

似内

2014/6/20
11:50:00

2014/6/20
13:30:00

1:40:00

1

ネガチェック小島

2014/6/20
14:00:00

2014/6/20
14:10:00

0:10:00

2

ネガチェック小島

2014/6/20
14:30:00

2014/6/20
15:00:00

0:30:00

1

開設承認

畑中

2014/6/20
14:15:10

2014/6/20
14:15:11

0:00:01

2

開設承認

畑中

2014/6/20
15:00:05

2014/6/20
15:00:06

0:00:0136

見直すポイントプロセスを見直す
作業の効率化・簡略化
並行作業の検討

システムを見直す
インタフェースの改善
作業の自動化人を見直す
業務ノウハウの伝承
マニュアルの整備

本人確認チェックは資料のスキャ
ンとファイリングに時間がかかるのか。画像をアップロードさせたほうがいいかな。大羽主任に相談してみよう。

今どき、申込情報の手入力はないよな。申込フォームを作成してバッチで取り込もう！

メンバー増えるみたい。
すぐに仕事を覚えてもらえるようマニュアルを整備しなくちゃ！
37

目的を持って業務の目標値（KPI）を設定する
計測結果を評価するためにも
例：開設事務処理数：1日1,000件
例：本人確認チェック作業平均時間：15分

さあ、次はどうしようかな？

不要な業務や作業をやめませんか？

38

お終いおぷとんらぼで「Activiti」に関する記事を記載しています。
よろしければご覧ください。

http://labs.opentone.co.jp/

39

ご清聴ありがとうございました

40

付録~Activitiのコーディング~41

認証• IdentityService• デフォルトはID・パスワード認証• ユーザはグループで管理• LDAP（ActiveDirectoryなど）による管理も可能
boolean checked =identityService.checkPassword(id, password);

42

プロセスを開始する• RuntimeService#processInstanceById• ワークフローのキー名を指定して、プロセス開始• フォームの情報（変数）を受渡し
Map<String, Object> formValue =new HashMap<String, Object>();formValue.put("name", name);
formValue.put("birthday", birthday);formValue.put("gendar", gendar);runtimeService.startProcessInstanceByKey(processdDefinitionKey, businessKey, formValue);

43

タスクを検索する• 条件を指定して検索• TaskService#createTaskQuery• 様々なキーによる絞り込み、並べ替え• 業務名、担当者// タスクの一覧を取得
List<Task> tasks = taskService.createTaskQuery().processDefinitionKey("OptonBank1").taskCandidateOrAssigned(userId).orderByProcessInstanceId().asc().list();44

タスクを実行する事務担
当口座
管理部

ネガNG
本人確認チェック

taskService.complete(taskId)

承認
担当最終
決裁者

ネガチェック

×ネガOK（分岐の場合）Map<String, Object> variableMap = newHashMap<String, Object>();variableMap.put(“flowCtrl”, “NEGA_OK”);
taskService.complete(taskId,variableMap);

開設承認

45

タスクのアサイン・委譲
小島課長、チェック
おねがいします！

// タスクのアサイン
taskService.claim(taskId, “kojima”);

了解！

そろそろ帰るわ
承認のタスク
よろしくな！

ぶ、部長、定時前です。。。

// タスクの委譲
taskService.delegateTask(taskId, “kojima”);46

（最後に）おぷとんらぼの更新通知はFacebookで株式会社オープントーン 金融ソリューション事業部47