BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Integration > BPM ワークフローの設計 ベスト プラクティス ガイド > BPM ワークフロー設計上のベスト プラクティス |
BPM ワークフローの設計 ベスト プラクティス ガイド
|
BPM ワークフロー設計上のベスト プラクティス
BEA WebLogic Integration Studio では、ビジネス プロセス ワークフローを設計し、モニタする設計環境を提供しています。Studio ワークフローを作成している、またはワークフロー管理システムとして Integration Studio を使用する予定の場合、ワークフローの設計にベスト プラクティスを念頭に置くようにすることをお勧めします。以下の節では、将来の製品リリースに移行するときに、スムーズに移行作業が行なえるためのワークフロー構築のガイドラインを示します。
ベスト プラクティスをお勧めする理由
現行の WebLogic Integration Studio 実装では、構造化していないワークフローでも構築することができます。 しかし、ワークフロー管理の関係業界、および近年意識されつつあるワークフロー規格においても、構造化ワークフローの設計を推奨しています。将来バージョンの WebLogic Integration Studio では構造化ワークフローの使用が必須となる予定で、ワークフロー規格が成熟し、その使用が妥当と思われた段階でこれに準拠する予定です。 このマニュアルでは、現在の WebLogic Integration Studio で使用するための構造化ワークフローのパターンを説明します。ここで挙げるガイドラインに従うことにより、よりよい設計のワークフローが構築でき、構造化ワークフロー パラダイムへの移行がスムーズに行なえるようになります。
注意: 以下のガイドラインは、従うべきビジネス ロジックの実装方法を提起するものではありません。
ビジネス プロセスの設計
ワークフロー定義は、複雑なビジネス プロセス、方針、および手順をカプセル化するものです。その複雑さを考慮して、ベスト プラクティス ガイドラインでは、共通する一般的なワークフロー パターンに関連した事項を提示します。コンセプトによっては、そのコンセプトの望ましい実装方法、および避けるべき事項を具体的に示します。
提示されたワークフロー パターンやプログラミングの推奨方法は、それが対応するコンセプトの唯一の実装方法というわけではありません。提示内容は、一般的な設計原理がわかりやすいように、また自動移行するときに最適とは言えないモデルないしワークフロー パターンを明確に指摘するために意図的に単純化してあります。当然のことながら、実際のビジネス事例では、それらのコンセプトについて異なる実装または設計が必要な場合もあるでしょうし、実際のワークフロー設計は、このマニュアルで提示される設計パターンよりもおそらくより複雑なものになると思われます。
このガイドで提示される実装例は、ワークフロー設計を最適化する必要度の評価手段、および目安として使用してください。ここで提示されるガイドラインに盲従することは、実際のビジネス プロセスを反映していない、不適切なワークフローになる場合もありますので、決してお勧めできません。
WebLogic Integration Studio を使用したワークフローの設計
ここで規定する望ましいベスト プラクティスは、WebLogic Platform リリース 7.0 の WebLogic Integration Design Studio コンポーネントを使用してワークフローを設計することを想定しています。WebLogic Integration Studio を使用したワークフローの設計に関する詳細は、以下の各トピックのマニュアルを参照してください。
よく使用されるワークフロー パターンに対するワークフロー設計の推奨例
以下の節では、ワークフロー構築におけるさまざまな推奨パターンを提示します。これらのガイドラインは、よくある共通のワークフロー問題に対する適切な対処法を提示することを目的としています。ビジネス プロセスに関して多くのワークフローで見られる一般的なパターンには、以下のようなものがあります。
ここからは、それらのパターンに関する説明、およびそれらのワークフローの推奨される実装について具体的に記載します。
並行実行
「並行実行」パターンは、1 つのワークフロー ノードから出るすべての並行パスが、同時に実行され、その並行処理の終了地点の AND ノードで再び 1 つになる場合を表します。このワークフロー パターンを適切に実装するためには、次のガイドラインに従ってください。
イベント選択
「イベント選択」パターンは、1 つのノードから分岐するすべての並行パスが一定のイベントが発生するのを待ち、最初に起きたイベントによって、どのパスが実行されるか決まるものです(図4 を参照)。複数の並行パスのうち、実行されるパスは、どのイベントが最初に発生するかによってただ 1 つだけです (その他のパスはすべて抑止され、発動しません)。実行パスが互いに排他的になることを保証するため、次のガイドラインに示されているように イベントの取消し アクションを使用します。
図 4 「イベント選択」パターンの実装
「イベント選択」ワークフロー パターンを適切に実装するには、以下の手順に従ってください。
タイムアウト付きイベント
「タイムアウト付きイベント」パターンは、互いに排他的なイベントのセットが、一定の時間枠内または期限前に発生する必要がある場合を表しています。タイムアウト前に発生した最初のイベントの実行パスは完了するまで実行され、他のパスはタイムアウト パスも含めて抑止されます。タイムアウト前にどのイベントも発生しない場合は、タイムアウト パスが実行されます。タイムアウト後にイベントが発生しても、対応する実行パスが開始されることはありません。タイムアウト ロジックは 時限イベント アクションか タスク期日を設定 アクションのどちらかを使用すれば実装できますが、タスク期日を設定 アクションのほうがより明確でわかりやすい構成になるので、タスク期日を設定 アクションを使用することをお勧めします。図5 は、このワークフロー パターンの適切な実装形態を示しています。時限イベント アクションを使ったベスト プラクティスの説明については、タイムアウト付きイベントを参照してください。
「タイムアウト付きイベント」ワークフロー パターンを適切に実装するには、以下のガイドラインに従います。
図 5 「タイムアウト付きイベント」パターンの実装
イベントによる取消し
「イベントによる取消し」パターンは、実行パスが特定のイベントによって取り消される(メッセージ到着により、以前に発注されていた注文を取り消す場合など)場合を表しています。実行パスが実行途中で取り消すことができるかどうかによって、2 つのタイプが考えられます。
どちらのタイプのほうが実際のビジネス ロジックに近いかを判断した上で、選択したタイプを次のガイドラインの提示に従って実装してください。最初の方法、すなわち「中途取消しなし」のタイプのほうが、部分的に完了した作業を取り消すクリーンアップ処理の必要がないため、実装が簡単です。
「中途取消しなし」タイプ
図6 は、取消し対象のパスが実行前にキャンセル イベントを受信しない限りパスが実行される場合の、「イベントによる取消し」パターンの推奨される実装を示しています。このタイプを適切に実装するには、次の手順に従ってください。
図 6 「イベントによる取消し」パターンの「中途取消しなし」タイプの実装
「中途取消しなし」の「イベントによる取消し」は、重要タスクを実行する前に特定のイベントが発生したかどうかをチェックするように設計されたパターンです。 このパターンの簡単な例は、受注処理ワークフロー内に見られます(図7を参照してください)。 受注処理ワークフロー内のタスクとしては、次のようなものが考えられます。
「中途取消しあり」タイプ
図8 は、「中途取消しあり」タイプの推奨実装を示しています。ただし、このタイプの実装では、クリーンアップ ロジックが正しく実装されるために、取消し対象の通常実行パスとキャンセル パスとの間により高度な調整が必要です。
一般に、キャンセル パスでは、必要なクリーンアップ ロジックを実行する必要があります。このクリーンアップ ロジックは、通常実行パスがどこまで先に進んだかによって異なる可能性があります。通常実行パスの進行度の検出は、通常実行パスに一定の変数を設定し、キャンセル イベントの発生時にキャンセル パスでそれらの変数を検査することにより行なうことができます。同様に、通常実行パスでは、キャンセル パスがアクティブ化したことを検出し、キャンセル パスでは実行されない一定のクリーンアップ アクションを実行する必要がある場合があります。作成したワークフローが実際のビジネス プロセスを正確に反映したものになるための適切な調整を実装する作業は、ワークフロー作成者自身が適宜行なってください。クリーンアップ処理は 1 つのパス上で行なうことを推奨します。
図8 は、「中途取消しあり」タイプの実装の骨格だけを示したものです。取消しおよびクリーンアップ ロジックの詳細は、記載されていません。
図 8 「イベントによる取消し」パターンの「中途取消しあり」タイプの実装
以下の一般的な手順は、このワークフロー パターンを適切に実装する方法を示しています。
実行タイムアウト
「実行タイムアウト」パターンは、「イベントによる取消し」パターンと似ていますが、パスの実行を取り消す原因はイベントではなくタイムアウトです。図9 は、このワークフロー パターンの推奨される実装形態を示しています。
実行タイムアウト パターンでは、タイムアウトが起動した場合の、通常実行パスとタイムアウト パスとの間に一定レベルの調整が必要な場合があります。さらに、複雑なクリーンアップ ロジックが必要なこともあります (これに関してはイベントによる取消しの節を参照してください)。クリーンアップに必要なワークフロー アクションの実装は、ワークフロー作成者自身が行なってください。この節では、このワークフロー パターンの実装の骨格のみを示します。
「実行タイムアウト」パターンを実装する場合、以下の手順を実行してください。
図 9 「実行タイムアウト」パターンの実装
ワークフロー パターンにおけるアクションの使用法
表 1 は、このマニュアルで前述したワークフロー パターンに関連するアクションをリストにしたものです。自動移行できるようにワークフローを最適化するには、ワークフローでこれら特定のアクションを使用するときに 表 1 に示すガイドラインに従ってください。
注意: 非同期アクションのコールバック アクション リストには、Set Task as Done 以外のアクション(ワークフローを開始 など)は定義しないでください。
タスク ノードの使用法
WebLogic Integration Studio のタスク ノードには、任意の数のアクションを 作成時、アクティブ時、実行時、および 完了マーク時 リストに入れることができます。これらのリストは、WebLogic Integration Studio の [タスクのプロパティ] ダイアログで定義します。 [タスクのプロパティ] ダイアログの詳細については、『WebLogic Integration Studio ユーザーズ ガイド』を参照してください。
一般に、タスクには次の 2 種類があります。
ユーザ タスクのガイドライン ユーザ タスクを実装する場合、以下のガイドラインに従ってください。
自動タスクのガイドライン
自動タスクを実装する場合、以下のガイドラインに従ってください。
例外処理
将来バージョンの WebLogic Integration では、構造化された例外処理を使用する予定です。将来の WebLogic Integration 製品リリースにスムーズに移行できるようにするため、例外ハンドラを設定する時に、以下の事項を考慮するようにしてください。
図 10 例外ハンドラ ブロックの例
Studio プラグインを使用する場合のガイドライン
WebLogic Integration Studio では、一部のワークフロー コンポーネントの機能を拡張するプラグインをサポートしています。プラグインの機能はそのままでも継続しますが、できればカスタマイズしたプラグインに対して EJB を使用して、自動移行ができるようにワークフローを最適化してください。『WebLogic Integration BPM プラグイン プログラミング ガイド』を参照してください。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |