ワークフローエンジン

ワークフローエンジンとは、プロセス定義（ワークフロー）に従って担当者に作業を割り当てるソフトウェアを指す. 作業完了時には、その作業成果を受け取り、次の作業者に渡す. Workflow Engine.

ワークフローエンジンの概要
ワークフローエンジンとは、XPDLやBPELあるいはBPMNなどで記述された業務フローの定義を理解し、その定義に従って担当者やシステムに対して業務処理割当を行ったり、また作業者からの結果を受け取ったりするタスク制御ソフトウェアである. BPMスイート製品やワークフロー製品に内包されている事が多い. 「BPMエンジン」と呼ばれる事もある.

仕事を割り当てられる側である担当者やシステムは「パーティシパント（Participant）」と呼ばれ、ワークフローエンジンは様々なパーティシパントとデータをやり取りする事で、業務プロセスを進捗させていると言える.

ワークフローエンジンは、その多くの場合、全てのプロセス（プロセスインスタンス）の処理状況をリアルタイムで把握し、とある作業が終了すれば即座に次のパーティシパントに対して仕事を割り当てる. 複雑な条件設定や、分岐、ループなど、どの様な「ワークフローパターン（コントロールフローパターン）」に対応できるか、については、個々の製品によって様々である. また業務プロセスが取り扱うデータの保存方式や、ステータス管理方式、あるいはパーティシパント構造の記憶方式についても、個々製品により様々である. なお、特に人間に割り当てられた仕事の事を、明示的に「ワークアイテム（Work ItemもしくはWorkitem）」と呼ぶことがある.



ワークフローエンジン機能の比較項目例

 * プロセスデータの隠ぺい制御がどの程度できるか
 * パーティシパントの負荷状況をリアルタイムで理解しているか
 * パーティシパントの実績を理解し、新たな割当に活用できるか
 * 複数人へのインタラクティブな割当（複数人に割当を実施、一人が着手した時点でその他の割当が取消）ができるか
 * 構造化されていないコントロールフローを制御できるか、どの程度まで理解できるか

BPMにおけるワークフローエンジンの役割
ワークフローエンジンにパーティシパントへのタスク割当制御をさせる事により、全てのタスク開始時刻、タスク終了時刻、タスク処理時間がログとして残る. それらのログは業務証跡としての意味だけでなく、その分析を通してプロセスモデル全体の改善につなげる事が可能となる.

なお、ワークフローエンジンによっては、その瞬間瞬間で「もっとも負荷が低い人（暇な人）」を把握した上でタスク割当を行ったり、過去の実績から「もっとも早く完了させられそうな人（その仕事が向いている人）」を把握した上でタスク割当を実行したりする事ができるものもある. すなわち「ワークフローエンジンにパーティシパントへのタスク割当制御をさせる事」自体が業務改善になる場合があると言える.

ワークフローエンジンの製品例
・jBPM、・OpenWFE、・Enhydra Shark

関連記事

 * XPDL
 * BPEL
 * jBPM
 * ワークフローパターン
 * トークン
 * アロケーション
 * オファー
 * Intalio

参考文献

 * WORKFLOW RESOURCE PATTERNS
 * Workflow-Sample.net「ワークフロー表記法」
 * BPMとは（Questetra）