ワークフローパターンは、ソフトウェア エンジニアリングまたはビジネス プロセス エンジニアリングの分野で定義されている設計パターンの特殊な形式です。ワークフロー パターンは、特にワークフローアプリケーション、より広義にはプロセス指向アプリケーションの開発に関連する、繰り返し発生する問題と実証済みのソリューションを指します。
コンセプト
ワークフロー パターンは経済的な開発の概念です。ワークフロー パターンを使用する場合は、メンテナンスを簡素化し、モデリング作業を削減する戦略に従う必要があります。ワークフローはリアルタイムで実行されます。制御メカニズムは、一般的な作業ペースをサポートする必要があります。デザイン パターンは、ワークフローの実行を遅らせる必要があります。
集約
ワークフロー パターンは通常、チェーンとして集約され、開始および終了の条件を明示的に定義する必要があります。
応用
ワークフロー パターンはさまざまなコンテキストに適用できるため、誤解を防ぐために使用条件を明示的に定義して表示する必要があります。
ファンデルアールスト分類[1]
よく知られているワークフロー パターンのコレクションは、Wil van der Aalstら (2003) が論文「ワークフロー パターン」[2]で提案したもので、以前のバージョンは 2000 ~ 2 年に公開されました。このパターン コレクションは、プロセス指向アプリケーション開発の特定の側面、つまりワークフロー/プロセス内のアクティビティ間の制御フローの依存関係の記述に重点を置いています。これらのパターンは、次のカテゴリに分類されます。
基本的な制御パターン
- シーケンス - 2つ以上のアクティビティを順番に実行する
- 並列分割 - 2 つ以上のアクティビティを任意の順序または並列で実行します
- 同期 - 任意の順序または並行して実行される可能性のある 2 つ以上のアクティビティを同期します。先行するすべてのアクティビティが完了するまで、後続のアクティビティの実行を進めません。バリア同期とも呼ばれます。
- 排他的選択 - プロセスの実行が排他的選択に達したときに利用可能なデータに基づいて、多くの選択肢から1つの実行パスを選択します。
- シンプル マージ - 一連のアクティビティのうち 1 つが完了するまで待機してから続行します。これらのアクティビティのうち 1 つだけが実行されるものと想定されます。通常、これらのアクティビティは、排他的選択または延期選択から生じる異なるパス上にあります (以下を参照)。
- 終了 - 定義されたイベントまたはステータスの変更時にアクティビティの実行を終了します
高度な分岐と同期パターン
- 複数の選択肢 - 多くの選択肢から複数の実行パスを選択します
- 条件付き選択 - 識別されたステータス条件に従って、多くの選択肢から 1 つの実行パスを選択します。
- 同期マージ - 複数の実行パスをマージします。複数のパスが取られる場合は同期します。1 つの実行パスのみが取られる場合は、単純なマージと同じ操作を実行します。
- 複数のマージ - 続行する前に、一連のアクティビティのうちの 1 つが完了するまで待機します。待機中のアクティビティが複数実行される場合、そのうちの 1 つが完了するたびに、単純なマージが実行されます。
- 識別子 - 続行する前に、一連のアクティビティの 1 つが完了するまで待機します。待機中のアクティビティが複数実行される場合、識別子は 1 回だけ起動します。
- N-out-of-M 結合 - 識別子と同じですが、パラメータ N を1 より大きい自然数に設定することで、続行する前に、先行するアクティビティの 1 つ以上が完了するまで待機できるようになりました。
構造パターン
- 任意のサイクル - プロセス モデル内に存在できるループの種類に構造上の制限を課しません。
- 暗黙的に終了 - 他に何もすることがない場合はプロセスのインスタンスを終了します
複数インスタンス (MI)
- 同期なしの MI - 1 つのアクティビティのインスタンスを後で同期せずに多数生成します。
- 設計時に事前にわかっている知識を持つ MI - 設計時にインスタンスの数がわかっている場合に、1 つのアクティビティのインスタンスを多数生成します (同期あり)
- 既知の実行時知識を持つ MI - 実行時のある時点でインスタンスの数を決定できる場合 (FOR ループの場合と同様ですが、並列で)、1 つのアクティビティのインスタンスを多数生成します。
- 事前のランタイム知識のない MI - インスタンスの数を決定できない場合に 1 つのアクティビティのインスタンスを多数生成します (WHILE ループのように並列で)
状態ベースのパターン
- 延期選択 - 複数の代替スレッドのうち 1 つを実行します。どのスレッドを実行するかの選択は、実行が延期選択に到達した時点で利用可能なデータに基づくのではなく、イベント (たとえば、アプリケーション ユーザーがワークリストからタスクを選択する、またはプロセス実行エンジンがメッセージを受信する) によって決定されます。
- インターリーブ並列ルーティング - 任意の順序で複数のアクティビティを実行します (例: リソースの可用性に基づく)。ただし、これらのアクティビティは同時に実行されません。
- マイルストーン - マイルストーンに到達する前であればいつでも特定のアクティビティを許可しますが、マイルストーンに到達すると、そのアクティビティは実行できなくなります。
キャンセルパターン
- アクティビティをキャンセル - 有効なアクティビティの実行を停止します
- キャンセルケース - 実行中のプロセスの実行を停止します
- キャンセル待機 - 事前の完了イベントなしで実行中のプロセスの実行を続行します
上記のワークフロー パターンは、プロセス指向アプリケーションの開発をサポートする商用製品の機能を評価するために使用されてきました。また、BPEL、BPMN、UML アクティビティ図、XPDLなど、提案されている多くの標準を評価するためにも使用されてきました。これらのパターンのすべてがすべてのアプリケーション ドメインに関連しているわけではないことに注意してください。そのため、上記のワークフロー パターンを使用して特定のアプリケーションに特定の言語またはシステムを選択する場合は注意が必要です。
ワークフロー パターンは、 YAWL (Yet Another Workflow Language)と呼ばれるワークフロー言語およびオープン ソース システムの設計における初期要件としても使用されています。
上記のワークフロー パターンのセットには、いくつかの拡張が提案されています。特に、これらのパターンを開発した同じ研究グループが、ワークフロー データ パターン、ワークフロー リソース パターン、ワークフロー例外処理パターン、およびサービス相互作用パターンのセットも提案しています。
別の分類
ワークフロー パターンの別の分類は次のとおりです。
- 独立/プール
- スケジュールされた作業の各コンポーネントは、他のコンポーネントとは独立して完了し、どのコンポーネントも他のコンポーネントに特定の依存関係を持ちません。例としては、スタッフがカウンターで接客している場合が挙げられます。この場合、ラウルは、ジェイミーが自分のキューの顧客に接客するのを待たずに、自分のキューの顧客に接客できます。
- 一連
- スケジュールされた作業の各コンポーネントは、先行するコンポーネントに依存します。この場合、先行するコンポーネントは、後続のコンポーネントを通じてワークフローの進行を制御します。例としては、生産ラインが挙げられます。ベロニカがラジエーターを所定の位置に取り付けるまで、ベティはモデル T フォードにラジエーター キャップを取り付けることができません。
- 相互依存/ネットワーク化
- スケジュールされた作業の各コンポーネントは、完了する 1 つまたは複数の他のコンポーネントに依存します。この場合、先行するコンポーネントが後続のコンポーネントを通じてワークフローを制御します。例としてプロジェクト チームがあります。Sarah は、自分のタスクを実行する前に、Kevin と George によっていくつかのタスクが完了するのを待つ必要があります。
他の視点
ワークフローパターンは制御フローに限定されません。[3] その他の(ワークフロー)パターンコレクションには以下が含まれます。
- リソースパターン、[4]
- データパターン、[5] [6]
- 例外パターン、[7]
- サービスインタラクションパターン[8]
- 並列処理とパイプラインパターン。[9]
これらのパターンコレクションは、商用(Websphere、Oracle BPEL、Staffware、SAPワークフロー、Windows Workflow Foundationなど)とオープンソースの両方のさまざまなワークフロープロセスを評価するのに使用されてきました。[10]
パターンを実装するワークフローシステム
- Tavaxy [11]は、バイオインフォマティクス分野で人気のある2つのワークフローエンジンであるGalaxyとTaverna間の相互運用性を可能にするパターンベースのアプローチを実装したクラウドベースのワークフローシステムです。[12]
- YAWL、もう一つのワークフロー言語、
- Cameleon (プログラミング言語)、関数型プログラミングのためのワークフローベースのグラフィカル言語。
参考文献
- ^ 「ワークフローパターンのホームページ」。Workflowpatterns.com 。 2021年11月26日閲覧。
- ^ Wil van Der Aalst、Arthur HM Hofstede、Bartek Kiepuszewski、Alistair P. Barros (2003)。「ワークフロー パターン」。分散および並列データベース14 (1)、pp. 5--51。doi : 10.1023 /A:1022883727209。
- ^ N. Russell、AHM ter Hofstede、WMP van der Aalst、および N. Mulyar。ワークフロー制御フロー パターン: 改訂版。BPMセンター レポート BPM-06-22、BPMcenter.org、2006 年。
- ^ N. Russell、WMPvan der Aalst、AHM ter Hofstede、および D. Edmond。「ワークフロー リソース パターン: 識別、表現、およびツール サポート」。O. Pastor および J. Falcao e Cunha 編、『 Proceedings of the 17th Conference on Advanced Information Systems Engineering (CAiSE'05)』、 Lecture Notes in Computer Scienceの第 3520 巻、216-232 ページ。Springer-Verlag、ベルリン、2005 年。
- ^ N. Russell、AHM ter Hofstede、D. Edmond、およびWMPvan der Aalst。「ワークフロー データ パターン: 識別、表現、およびツール サポート」。L. Delcambre、C. Kop、HC Mayr、J. Mylopoulos、および O. Pastor 編、24th International Conference on Conceptual Modeling (ER 2005)、Lecture Notes in Computer Science の第 3716 巻、353-368 ページ。Springer-Verlag、ベルリン、2005 年。
- ^ N. Trcka、WMPvan der Aalst、N. Sidorova。「データフローアンチパターン: ワークフローでのデータフローエラーの検出」。P. van Eck、J. Gordijn、R. Wieringa 編、Advanced Information Systems Engineering、Proceedings of the 21st International Conference on Advanced Information Systems Engineering (CAiSE'09)、Lecture Notes in Computer Science の第 5565 巻、425-439 ページ。Springer-Verlag、ベルリン、2009 年。
- ^ N. Russell、WMPvan der Aalst、AHM ter Hofstede。「ワークフロー例外パターン」。E. Dubois および K. Pohl 編、『Proceedings of the 18th International Conference on Advanced Information Systems Engineering (CAiSE'06)』、Lecture Notes in Computer Science の第 4001 巻、288-302 ページ。Springer-Verlag、ベルリン、2006 年。
- ^ WMPvan der Aalst、AJ Mooij、C. Stahl、K. Wolf。「サービスインタラクション:パターン、形式化、分析」。M. Bernardo、L. Padovani、G. Zavattaro 編著、『Formal Methods for Web Services』、Lecture Notes in Computer Science の第 5569 巻、42-88 ページ。Springer-Verlag、ベルリン、2009 年。
- ^ C. Pautasso、G. Alonso。「グリッド ワークフローの並列コンピューティング パターン」、大規模科学を支援するワークフローに関する HPDC2006 ワークショップ (WORKS06) の議事録、フランス、パリ、2006 年 6 月。
- ^ P. Wohed、NC Russell、AHM ter Hofstede、B. Andersson、WMPvan der Aalst。「オープンソース BPM システムのパターンベースの評価: jBPM、OpenWFE、Enhydra Shark の事例」。Information and Software Technology、51(8):1187-1216、2009 年。
- ^ Abouelhoda, M.; Issa, S.; Ghanem, M. (2012). 「Tavaxy: クラウドコンピューティングサポートによる Taverna と Galaxy ワークフローの統合」BMC Bioinformatics . 13 : 77. doi : 10.1186/1471-2105-13-77 . PMC 3583125 . PMID 22559942.
- ^ Abouelhoda, M.; Alaa, S.; Ghanem, M. (2010). 「メタワークフロー」。第 1 回国際ワークショップ「ワークフロー アプローチによる新しいデータ中心科学」議事録 - Wands '10。p. 1。doi : 10.1145 / 1833398.1833400。ISBN 9781450301886. S2CID 17343728。
さらに読む
- マーロン・デュマ、ウィル・ファン・デル・アールスト、アーサー・H・M・テル・ホフステード編。 (2005)。プロセス認識型情報システム。ジョン・ワイリー・アンド・サンズ。ISBN 0-471-66306-9。
- Volker Kramberg (2006) 「IBM WebSphere BPEL のパターンベースの評価: ワークフロー パターンに基づく IBM の WebSphere Integration Developer の評価」
外部リンク
- ワークフローパターン
- BPMN 2 オリジナル 20 ワークフロー パターンの例
