第2回:BPMN仕様違反のBPMN図例(シーケンスフロー編)

  
 今回はシーケンスフローの仕様違反に関して、前回と同様BPMNの記述解説書「BPMNメソッド&スタイル」(ブルース・シルバー著、以下「M&S」)での解説と、その解説がBPMN仕様書(以下「仕様書」)の、どこに、どのように記載されているかという形で述べていきます。
(本文、M&S、「業務改革、見える化のための業務フローの描き方」を含めてBPMN仕様におけるコレオグラフィーに関しては対象としてない。という前提となります。そのためコレオグラフィーに関する記述部分は省略します。コレオグラフィーが何かに関しては機会があれば書いてみたいと思います。)

 総務省のサイトから公開されている(https://www.soumu.go.jp/main_content/000872456.pdf以下「本資料」)をベースに、シーケンスフローについて解説していきます。「本資料には地方公共団体情報システム機構『地方公共団体の情報システム調達における機能要件の表記方法に関する調査研究』(平成27年3月)(以下「調査研究資料」)を参考に、表記方法の国際標準であるBPMN(Business Process Model and Notation)の手法を用いて記述した。」とあります。この調査研究資料(https://www.j-lis.go.jp/data/open/cnt/3/1518/1/all.pdf)の中に、「地方公共団体の情報システム調達における機能要件の表記方法利用ガイド」(以下「ガイド」)があるのですが、本資料は残念ながら、このガイドに従って描かれていません。その理由は、調査研究資料が「BPMNを伝統的なフローチャートと同様に独自解釈し独自応用によって記述することができる。」という誤解を与えてしまっている可能性があることです。「仕様そのものを守らなくてならないものである」ということが明記されていないこと、またこのガイドそのものの中にも仕様違反の例が記載されてしまっていることも問題でしょう。

この調査研究資料(ガイド含む)にはBPMにおいて、以下の点から誤解を生じさせる問題を孕んでおり、これは違う機会にコラムに書くことにします。誤解を生じさせる可能性がある点を以下のように、まとめておきます。
 1.BPMN図がシステム調達における業務要件定義の資料作成を目的にしていること
 →BPMNはBPMを実現するためのBPMS実装を主な目的としている。(コラム「あなたが描いているのはBPMN図ではありません」参照)
 2.BPMNを手法と表現していること
 →BPMが手法であり、BPMを実現するためのBPMNはモデリングと表記法である。
 3.BPMN仕様が作成された目的を説明されていないこと
 →BPMN仕様は、主にBPMを実現するためのBPMS、BPMN記述ツールを構築(開発)するための規定である。
 4.BPMN図を描くのは、情報システム部門や事業者へ委託するものだとしていること
 →BPMN仕様が作られた当初の目的は「ITからビジネスへの権限移譲」「簡単なフローチャートを描くことによって、あまり技術的でない人達がトランザクション型のアプリケーションを構築できるようになる。」です。(コラム「あなたが描いているのはBPMN図ではありません」参照)
 5. 「実行可能プロセス」に対する認識。実行可能プロセスが記号が増えたり、記述方法が複雑になるように思わせる記述がある
 →実行可能プロセス(レベル3)はBPMN仕様では規定されていない。実行可能プロセスとはBPMSに実装され動かすことができるプロセスである(画面レイアウトデータやプロセスを実行するのに必要なデータがなどが設定されているもの)。またレベル2の認識にも誤解を与えそうな部分がある。
 6.表記方法に自由度があることがBPMN仕様を守らなくても良いという誤解を与えていること
 →ここは今回のテーマであるシーケンスフローで自由度と仕様を守るということの違いを後述します。

 BPMは、そもそも誤解を生じさせやすい手法です。どのように説明すべきかは我々の10数年の経験においての試行錯誤からセミナーでお伝えをしています。地方公共団体情報システム機構の調査資料は「本来、異なった目的で作られたBPMN図を応用して情報システム調達における業務要件定義のためのガイドである」ということを明記しないとBPMNに対して誤解を生じさせている懸念があります。ただし、このような目的でBPMN図を使うことに対して否定しているわけではありません。BPMNはM&Sに従って描くと、人の業務を含めて業務を理解しやすいフローになるからです。ただし、先人が言っている「永遠の課題」はBPMN図を描くだけでは解決できません。(コラム:「一般的な業務フローとBPMN図との違い」「モデルプロセス導入改善とBPM導入方法について」参照)

 BPM,BPMN、BPMSに関しては様々な誤解情報が飛び交っているということです。何を読んだか、誰から説明を受けたかによって解釈がバラバラとなっていますが、基本は普遍的なマネジメント手法であり、BPMコンソーシアムでは、それらの誤った解釈を是正していきたいと日々活動をしています。

1.シーケンスフローとは

 M&S(英語版P45、日本語版P48)では「ダイアグラムに実線のコネクターとして描かれたシーケンスフローは、プロセスステップの順序立った実行を表現します。」次に「シーケンスフローの最後尾のノードが完了すると、矢印のノードの開始が有効になります。実行可能プロセスでは、制御の実際の流れを表します。最後尾の接続ノードが完了すると、矢印のノードは自動的にプロセス・エンジンによって開始されます。」このセンテンスはわかりにくいので下図で説明をします。

「シーケンスフローの先端と最後尾に接続できる唯一の要素は、BPMN 2.0のメタモデルでフロー・ノード(flow node)と呼ばれ、アクティビティ、ゲートウェイ、およびイベントです。」(中略)「プロセスレベル内のすべてのアクティビティ、ゲートウェイおよびイベントは、イベントを終了するために開始イベントから終了イベントまでのシーケンスフローの連鎖の上に配置する必要があります(BPMN仕様はこれを絶対に要求していませんが、『メソッド&スタイル』ではパラレル・ボックスのようないくつかの例外を除いて要求します)。」
「シーケンスフローの両端には、フロー・ノードに接続する必要があります。一端が接続されていない場合、モデルは有効になりません。」
 BPMN仕様P95に「シーケンス フローは、プロセスのフロー要素の順序を示すために使用されます。それぞれシーケンス フローには、ソースとターゲットが 1 つだけあります。ソースとターゲットは次のセットから選択する必要があります。フロー要素: イベント (開始、中間、終了)、アクティビティ およびゲートウェイです。」フロー要素(Flow Elements)と用語を使っていますが内容は同じです。

ではBPMN仕様が開始イベントから終了イベントまで、すべてのフローノードがシーケンスフローで繋がっていなければならないということをBPMN仕様が「絶対に要求していない」というのは、仕様上のどこに書かれているのでしょうか。

 
 まずBPMN仕様P40に表7.3にシーケンスフローの接続のルールがまとめてあるのですが、各フローノードとアクティビティへの接続が、接続可能であることを示す「↗」では無く「‰」(パーミル)になっています。この意味は謎で、ここでは良くわからないです。

次に BPMN仕様P238、P246では開始イベントは使用を推奨するとしており、描かれていない場合は暗黙的なトリガー無し開始を意味する。終了イベントが省略されている場合は「結果がない」(すなわち、どこかに対してのトリガーはない)と書かれています。これが「絶対に要求していない」ということのようです。ただし開始イベントを使用したら、終了イベントを使用するように規定されています。

 開始イベントから終了イベントまで、すべてのフローノードがシーケンスフローで繋がっていなければならないということをBPMN仕様が「絶対に要求していない」ということは、わかりました。しかしながら実際にBPMSを開発する上では開始イベント、終了イベントがないと、様々な不都合があり、開始イベント、終了イベントがないフローを実装し実行可能なBPMSを少なくとも私は見たことがありません。
 
 ここでのポイントは「プロセスレベル内のすべてのアクティビティ、ゲートウェイおよびイベントは、イベントを終了するために開始イベントから終了イベントまでのシーケンスフローの連鎖の上に配置する必要があります。」ということです。

2.仕様違反のポイント

冒頭の本資料に以下のような記述があります。
 赤枠の部分はシーケンスフローが途切れています。残念ながらこの記述はBPMN仕様に違反をしています。開始イベントがあれば、終了イベントを持たなくてはならない。という仕様にも違反をしています。
 BPMSへの実装を認識できている人であれば、BPMN仕様を忘れていたとしも、このような記述ができないことがわかると思います。選挙人はBPMSを使う人ではないためにブラックボックスプールとして記述されています。「投票用紙等交付」をしたあと、トークン(ボール?)がBPMSを使っていない選挙人に渡り、その後、BPMSを使っていない選挙人から中間イベントにトークンが戻り再開されると言う意味で書かれているようです。しかし選挙人はBPMSを使っていないのでトークンのやり取りをすることができません。これではBPMSがエラーとなり動きません

正しくは以下のようになります。トークンはBPMS内(プロセス内)で受け渡しされます。

その他、本資料の凡例は、個別の記号を独自解釈し独自の意味を与えてしまっています(例えば黒い封筒が描かれた送信タスク。送信タスクと中間送信イベントは、まったく同じ意味で自動送信を意味しますが、人がメール等を送信しているという独自の意味を与えてしまっています。)地方公共団体情報システム機構のガイドとも異なった独自解釈をしており各自治体などが本資料を参考にされないことを願うばかりです。

3.まとめ 

 冒頭にも書きましたが、BPM、BPMN、BPMSは様々な誤解を生じる発信が残念ながらされています。まず古い資料を信用するのはやめましょう。(BPMN1.Xの仕様を参考にしている可能性もあります。)また、同じような内容なのに描き方が異なっているBPMN図を見た場合は、何が正しいのかを確認する必要があります。「両方とも正しい記述で自由度があるんだな」という間違った認識をすることだけはやめていただきたいと思います。少なくとも記号の意味は1つです。使い方、接続ルールも決まっています
 BPMN図の自由度とは以下のようなことであって、記号の意味や接続方法を自由に解釈していいということではありません。以下の2つの図はまったく同じことを意味しています(どちらも仕様違反はありません)。どちらの方がわかりやすいかは別の問題です。プログラミングでも、他の人が読んでもわかりやすく書く人と、そうでない人の差と同じあり、そのプログラムがエラーとならずに動くか動かないかという問題ではないです。BPMN仕様は、少なくともBPMSが「動く」ように最低、守らなくてはならないルールです。BPMSを今は使わないから自由に書いていいい、自由に解釈していいということにはなりません。BPMN図は誰が読んでも同じ意味として伝わる。という特徴を失うことになるからです。
 次回は、メッセージフローに関して記述したいと思います。

関連コラム・ページ

第1回:BPMN仕様違反のBPMN図例(データオブジェクト編)
あなたが描いているのはBPMN図ではありません
一般的な業務フローとBPMN図との違い
モデルプロセス導入改善とBPM導入方法について
・BPMとは
BPMSとは
BPMNとは
BPM導入支援サービス
モデルプロセス導入支援サービス