トークン(Token)とは「ビジネスプロセス(業務フロー)を流れる業務」を管理するためのデータ。管理番号の様なものとも言える。
トークンの概要
トークンとは、そもそも一般社会では「しるし・代用コイン」と言った意味を持つが、情報システム分野においては独特な意味を持つ。特に、通信ネットワーク分野・セキュリティでは「送信権・アクセス権・切符」などの意味を持ち、何らかの制御を行うための整理番号・管理札・管理番号と言った意味合いをもたせるケースが多い。BPMスイートやBPMソフトに搭載されているBPMエンジン(ワークフローエンジン)は多くの場合、社内に多数存在するタスクを管理する上で、それぞれのタスクにトークンと呼ばれるデータを付して管理する。
なお、ソフトウェアプログラミング分野では「字句・文字」と言う意味を持ち、プログラム文の解析単位を指す。
トークンの分割
右図においてアクティビティ「A1」の実行後、フォーク分岐(AND-Split)により「A2」と「B1」の並列処理が開始される。この様な場合にBPMエンジン(ワークフローエンジン)は、トークンを2つに分割しそれぞれの状態を管理する。包含分岐(OR-Split)によって複数のルートが選択される場合にも同様に、トークンは分割される。他方、必ず一つのルートを選択しなければならない排他分岐(XOR分岐、XOR-Split)において、トークンが分割される事はない。
なお、右図「C1」の開始タイミングについて
- 「A2」および「B1」の結果の両方を併合してから開始する
- 「A2」および「B1」の結果をどちらかを受け取り開始する
- 「A2」および「B1」のそれぞれ結果に対してそれぞれ開始する
が想定されるが、BPMN1.1の基本ルールとしては「それぞれ結果に対してそれぞれ開始する」が意図される。(製品によっては「両アクティビティの終了を待ち、併合して開始する仕様」になっているものもある)。
※「A2」および「B1」の両アクティビティの終了を待つ事を明示的に示す場合には、結合時に並列ゲートウェイ(Parallel Gateway)を記載する必要がある。更になお両アクティビティの待ち方について複雑に設定する場合には、複合ゲートウェイ(Complex Gateway))で定義する。
トークンの発散
図1のプロセスダイアグラムにおいて「C1」終了後に「A1」を再度実行する場合、トークンは1つになっている。したがって、このプロセスダイアグラムにおいてトークンの数は常に「1もしくは2」となる。しかしながら他方、図2のプロセスダイアグラムにおいて、「B1」を終了したトークンが「A1」に戻り、そして「A1」終了後さらに分割するとすれば、トークンの数が発散する。「トークンの発散を許容するかどうか」についてはBPMエンジン(ワークフローエンジン)の製品仕様に依存する。
なお、「分岐」と「併合」が必ず対になっていて処理のまとまりが階層化されているプロセスダイアグラムを、ソフトウェア工学分野の「構造化定理/構造化プログラミング(Structured Programming)」にちなんで、「構造化されている」と形容する場合がある。構造化されているプロセスダイアグラムにおいてトークンが発散する事はない。(ただし構造化されていないプロセスダイアグラムが「必ずトークンが発散する」訳ではない)








