はじめに
今回は「イベントを極める」をテーマにBPMN仕様について解説します。「BPMNは難しい」と感じている方の多くがイベントという考え方で苦労しています。イベントを使った表現力はBPMNの長所なのですが、その表現力にBPMN初心者が混乱しているようです。
でも、イベントを正しく上手に使いこなせるとBPMNに熟練している感が著しく出てきます。今回はイベントの基本的な概念に絞って解説をします。時間をかけてでも読み、是非ともBPMN熟練者風になってください。
イベントとは
イベントとは、業務プロセスの進捗に影響を与える事象のことです。つまり、前回詳細に説明したトークンの流れに影響を与えるものです。流れているトークンを途中で止めたり、止まっているトークンを流したりするものです。
下図を見てください。購入申請を一週間分まとめて金曜日の夕方に一括発注している様子を表しています。
「購入申請」を実施したらトークンは後続のシーケンスフローを流れますが、タイマーイベントの所でトークンが一端止まります。「毎週金曜日17時」イベントが発生したら再びトークンが流れ出し「発注」が実施されます。
イベントの「受け手」と「送り手」
下図は顧客と業者が、お互いにメッセージイベントの発生を待っている様子を表しています。顧客は、業者が「見積書」を送ってくるのを待ち、送ってきたら受け取ります。「見積書」メッセージでは、業者が「送り手」、顧客が「受け手」となります。
封筒マークが黒色のイベントはメッセージの送り手を表しています。 BPMNでは送り手のことを「スロー(Throw)」と呼び、丸の中の記号を黒色で記述します。 封筒マークが白色のイベントはメッセージの受け手を表しています。受け手のことを「キャッチ(Catch)」と呼び、丸の中の記号を白色で記述します。
イベントは「送り手や受け手を必ずペアで描く」というものではありません。下図のように送り手や受け手を省略することもできます。タイマーイベントのように、送り手を図に描かないイベント、すなわち「スロー」が用意されていないイベントもあります。
イベントはどこで
イベントは、業務フロー上のどこに配置するかで丸記号の線種を描き分ける必要があります。下図のように細線/二重線/太線の3つの線種があります。
細線は開始イベントと呼び、業務フローの開始地点を表します。太線は終了イベントと呼び、業務フローの終了地点を表します。開始でも終了でもないところでは、中間イベントと呼ばれる二重線のイベントを使用します。
BPMNの振る舞いについて正確に知り、こだわって描きたいと考えている人は、「終了イベントは業務が終了する地点の候補を表しているだけ」というように考えてください。厳密には次のように理解します。
- 終了イベントはトークンの流れが終わるところを表している
- 業務フロー上に存在する全てのトークンが終了イベントに到達したら業務が終了する
次の図を見てください。この業務フローには3つのトークンが存在しています。その内の1つのトークンが終了イベントに到達したからといってこの業務が終了するわけではありません。3つのトークンが全て終了イベントに到達した時に業務が終了します。
作業中に何かが起こる
作業中に何かが起こる状況を、「境界中間イベント」と呼ばれるイベントを使って表します。アクティビティ(タスクまたはサブプロセス)の境界に中間イベントを配置する描き方です。
下図では、提案中に金曜日の17時になったら、提案を止めて失注登録を行うことを表しています。つまり、週末までに受注できないとその週の提案をあきらめる様子を表しています。
境界中間イベントの丸記号を実線から破線に変えると振る舞いが変わります。下図では、 提案中に金曜日の17時になったら、提案状況の報告を行うことを表しています。週末にその週の提案状況を報告する必要はあるが、提案はあきらめずに引き続き提案することを表しています。
イベントの丸記号が実線の場合には「境界中間イベント(中断)」と読んだりします。
アクティビティが始まってから終わるまでの間に、境界中間イベントが発生するとアクティビティを中断します。中断してしまうので、その後続にはトークンが進みません。その代わりに境界中間イベントの方にトークンが流れます。
アクティビティが終わるまでにイベントが発生しない場合には、境界中間イベントの方にはトークンは流れません。
破線の場合には「境界中間イベント(非中断)」と読んだりします。
アクティビティが始まってから終わるまでの間に、境界中間イベントが発生したら境界中間イベントの方にトークンが流れますが、アクティビティは引き続き実行されます。そして、アクティビティが終わった時に後続にトークンが流れます。
どんなイベントがあるか
イベントにはメッセージやタイマー以外にも、多くの種類があります。下図にその全てを示しますが、詳しい説明は別の機会ということで。
最後に
はじめてBPMNを使って業務フローを描く人に「全てのイベントの使い方を覚えてね」と言うのは無理があると思います。やはりイベントの使用を必要なものだけに抑えるのが望ましいと思います。
では必要なものとは何か、その考え方をルール化することがとても大切です。一人で業務フローを描いているならば良いのですが、多くの場合は複数の人が手分けして業務フローを描くことになります。それぞれが自分の好みで何を使うかを決めていたら混乱します。他人が描いた業務フローを見ると自分が知らないイベントが使われていた、というのはあまり良い状況ではありません。
そこで、業務フローの描き方を統一するためのルール集「BPMN記述標準」が必要になります。記述標準について次回お話したいと思います。