解説: BPMN、CMMN、そして DMN、何それ?

この歳になると、転職などは現実としてあまり考えられないし、ましてや良い転職先などはほとんど見つけられそうもないのですが、それでも定期的に求人サイトを覗いています。理由は「今市場で求められている技術動向など、社内では得られない情報(市場ニーズ)が得られるから」です。先日も求人サイトを見ていたところ、ふと「BPMNやCMMN、DMNに精通していること」という記述が目に留まりました。

「BPMN、CMMN、そして DMN ?何それ?」思わず自分が関わっている分野で知らないことがあることを知って不安な気持ちになりました。そこで早速 BPMN、CMMN、そして DMN について調べてみることにしました。

ビジネスプロセスに関する表記法だった

BPMN(Business Process Model and Notification: ビジネスプロセスモデリング表記法)、CMMN(Case Management Model and Notification: ビジネスケースモデリング表記法)そして DMN(Decision Model and Notification: 意思決定モデル表記法)はすべて OMG(Object Management Group)が定めたビジネスプロセスに関する表記法でした。Wikipediaに説明があるので、そのリンクを張っておきます。

OMG が定めた表記法と知って、ピンと来ました。というのも、OMG は UML(Unified Modeling Language: 統一モデリング言語)を定めている機関だったからです。僕がソフトウェアエンジニアだった頃は UML を良く使っていたので、「BPMN は、もしかしたら UML のビジネス版なのではないか?」と思ったのです。

UML はソフトウェアはもちろんのこと、統一モデリング言語というだけあって色々なプロセスを詳細に記述することができます。実際に僕もリーンシックスシグマのプロジェクトの中でビジネスプロセスを記述するときに UML を使うことがあります。

しかしリーンシックスシグマのプロジェクトで UML を使う時、大きな問題がひとつあります。それは「ソフトウェアエンジニア以外、だれも UML を理解できない」ということです。DFSS を含め、リーンシックスシグマのプロジェクトの多くはソフトウェア開発とは無縁です。そのためせっかく UML でプロセスを詳細に記述したとしても、プロジェクトメンバーが理解できなければまったく意味がありません。

BPMN CMMN DMN

皆が理解できないものを作っても仕方がないので、結局詳細な情報は割愛して、フローチャートや VSM(Value Stream Map:物と情報の流れ図)に戻ってしまいます。フローチャートや VSM は、「プロセスを大きな視点で捉える」というの意味ではとても良いのですが、プロセスを詳細に定義できないというところが難点です。そんな思いもあり、BPMN、CMMN、そして DMN がビジネス用の統一モデリング言語であるかもしれないと思ったときは、期待が高まりました。

BPMN:ビジネスプロセスモデリング表記法

BPMN Example

BPMN は国際規格 ISO/IEC 19510:2013 ですでに定められていたのですね。知りませんでした。BPMN を使うと、ビジネスプロセスをグラフィカルに、しかも詳細に定義することができます。曖昧なビジネスプロセスの定義から生ずる問題を未然に防げるだけでなく、そこから問題を発見し、それを解決するというビジネスプロセスの改善にも使えます。またグラフィカルな表示なので、専門家でなくても容易に理解できます(本当か?)。

引用:https://www.businessprocessincubator.com/content/the-nobel-prize/

CMMN:ビジネスケースモデリング表記法

CMMN

ビジネスケースをグラフィカルに定義する際に用いることができます。ビジネスプロセスとは異なり、ビジネスケースは色々な条件で起こる非同期なイベントです。このようなイベントによって起こるビジネスケースを定義することで、ビジネスプロセスの範囲を超えて、さまざまなビジネスを表現することができます。CMMN は BPMN の上位に位置するような感じでしょうか。

引用:CMMN 仕様 ver1.1 より

DMN:意思決定モデル表記法

DMNCertifyNewA_DRG

DMN はビジネスにおける意思決定に必要なルールと知識を定義することができます。ビジネスに関わる多くの人々がどのような知識とルールによって意思決定をしているのか、ということをグラフィカルに表現することができます。DMN は、BPMN や CMMN を知識とルールという面から補足することができます。

引用:https://en.wikipedia.org/wiki/Decision_Model_and_Notation

僕はまだ BPMN や CMMN、そして DMN を使い始めて間もないのですが、以下のような感じで、階層的に使い分けています。

BPMN CMMN DMN 2

UML を使っていたので、このようなグラフィカルな記述方法は嫌いでないのですが、凝れば凝るほど、一般の人達には分かりづらくなってしまうのが難点です。詳細に記述し始めればきりがないので、「どこまで詳細が求められるのか」というバランス感覚が必要かもしれません。またいくらビジネス用のモデリング言語といっても、やはり OMG が定めることなので、ソフトウェアビジネス用という感じが強く残り、一般的とはあまり言えないかもしれません。それも個人的には決してこういうものは嫌いではないので(むしろ好きな方なので)、今後もリーンシックスシグマのプロジェクトで使っていこうと思っています。