読者です 読者をやめる 読者になる 読者になる

kondoumh のブログ

- とあるソフトウェアエンジニアのめったに更新されないブログ -

EAでBPMN図を描いてます

Modeling

今の仕事でワークフローを定義する作業をしており、Enterprise Architect のBPMNアドインでプロセス図を描いています。最初はお客様も編集できるようにVisioで描こうと考え、海外の人が公開しているBPMN用ステンシルを使って作成しようとしたのですが、汎用お絵描きツールであるVisioの操作性に耐えられず、手に馴染んだEAで描くことを了承してもらいました。

BPMNアドインは、UMLのアクティビティ図の要素を流用して作られているようで、独自ステレオタイプと独自の描画コマンドを登録することで実現されている模様です。もともとEAには描画コマンドのセットを登録する機能があり、プリミティブな描画コマンドが多数用意されているため、頑張ればなんでも描けます。BPMNのトリガーやイベント、アクティビティなどのマーカー(アイコン)はUMLのアクティビティ図よりもバリエーションが多いのですが、BPMNアドインでは、EAのタグ付き値(Visual Basicのプロパティ設定みたいな機能)を利用してマーカーを選べるようになっています。

アドインを使った感想です。

よい点
  • EAの操作に慣れているとそれほど苦労なく作業が進められる。
  • BPMNの図は一通りちゃんと描ける
  • プール(アクティビティ図のレーン)と各アクティビティ、アクティビティとアクティビティに親子関係を定義できる。(プロジェクトブラウザのツリーで表現されるだけですが)
  • UMLの図と同様、ビューやパッケージ単位でモデルを管理できる。
いまいちな点
  • プールはあくまでダイアグラムの要素であり、アクターの別ビューではない。したがって、プールとアクティビティのマトリクスを作成するなどの分析ができない。(これはアクティビティ図でも同様なので、EAの限界と思われます)
  • メッセージフローやシーケンスフローに対して、アノテーションやデータオブジェクトをリンクすることができない。(リンクに線を引けないってことですが、EAでは関連に対してノート・制約をつないだり、関連クラスを定義する機能があるので出来るはず? なので次のバージョンでは頑張って欲しいです。)
  • BPMNではアクティビティではなくプールに対してもメッセージフローを接続することができます。BPMNアドインでもいちおう出来るのですが、リンク元からプールに向かって線を引くことができず、プールからリンク元に線を引いて"MessageFlow From"を選択して確定という直観的でない操作をしなければなりません。
  • BPMNからBPELを出力することができない。(今回は関係ない機能ですが、出来ないと知って驚きました。テンプレートによる変換機能を使えばそれほど難しくないはずなので、そのうち実装される可能性は高いと思います。WSDLの生成機能は既にあるので、これができればBPELエディタとしては完璧になるハズ)

BPMNを描いてみて、UMLのアクティビティ図よりも、描きやすく読みやすいような気がします。表現力・記述力では同等と思われますが、エンジニアではなく業務エキスパート用に考案された表記法のため、業務を記述するのに便利なイベントやゲートウェイが用意されており簡潔に描けるのではないかと思いました。

前述の通り、人やシステムをプールとして表現して、プール内のアクティビティではなくプールそのものにメッセージを送る(メッセージフローの線をつなぐ)ことができるので、そのプール内の活動をブラックボックスとして表現しないということもできます。これにより外部システム・組織内部のアクティビティを省いて、対象プロセスに注意を集中することができます。