BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Integration > BPM トピック > BPM ユーザーズ ガイド > Business Process Management とサンプル ワークフローの紹介 |
BPM ユーザーズ ガイド
|
Business Process Management とサンプル ワークフローの紹介
このチュートリアルで紹介するサンプル ワークフローは SAMPLES_HOME/integration/samples/bpm_tutorial フォルダ内の Tutorial.jar ファイルに入っており、WebLogic Integration の Business Process Management (BPM) の最も一般的な機能について説明しています。これらのサンプル ワークフローは実際に使用されているものではありませんが、次に挙げる Business Process Management の 2 つのクライアント アプリケーションを実際に使用することで、ごく単純化されたシナリオを体験することができます。そのクライアント アプリケーションは、Studio (設計環境) と Worklist (実行環境) の 2 つです。
注意: Worklist クライアント アプリケーションは WebLogic Integration リリース 7.0 より非推奨となりました。代替機能に関する詳細については、『WebLogic Integration リリース ノート』を参照してください。
この概要では、サンプル ワークフローのコンテキストを説明し、全体像を理解した後で、チュートリアルの残りの各章でそれを組み合わせて完成できるようにします。特に、この節では以下のことについて説明します。
シナリオの概要
このサンプル ワークフローは、一般的な Web ベースでの受注販売のシナリオに、だいたい基づいています。いったん受注すると、承認、在庫確認、出荷、請求という段階を経ながら、ワークフローによって受注の実行と処理が制御されます。次に、このシナリオを構成するプロセスとデータについて説明します。
このワークフローがどのようなものかを理解するための基本的なフローチャートは次の図のとおりです。各セクションにつけられた番号は、これまで説明してきた受注販売の各手順に対応しています。
図1-1 受注販売のシナリオ
BPM 環境の概要
Studio のワークフローを使用して、たとえば、クライアントへの E メールの送信や手動で行う作業の Worklist ユーザーへの割り当てなどの一定のビジネス プロセスを直接実行できますが、ほとんどの場合は、外部のソフトウェア コンポーネントを統合するワークフローを作成し、このような外部のプログラム モジュールの呼び出しシーケンスを制御するようにワークフローを定義します。したがって、ワークフローを作成する前に、Enterprise JavaBeans、Java クラスといった、インタフェースが必要なアプリケーションについて外部コンポーネントを識別する必要があります。
このシナリオに必要な外部コンポーネントの識別を容易にするため、はじめに WebLogic Server と Java 2 Enterprise Edition (J2EE) モデル ビュー コントローラ多層アプリケーションの中間層との関連における WebLogic Integration のロールを検討します。分散 J2EE/WebLogic Server アプリケーション内での、このシナリオの実行に必要なその他のコンポーネントとの関連における WebLogic Integration サーバを次の図に示します。
図1-2 WebLogic Integration BPM の環境
BPM は J2EE フレームワークのビジネス ロジック レイヤで図のように動作します。このことは、ワークフローが Java クラスや EJB (Enterprise JavaBeans) などのビジネス オブジェクトを直接統合する一方、他のコンポーネントやアプリケーションとの通信には、JMS (Java Message Service) の中間コードを通じて XML (eXtensible Markup Language) 言語のメッセージを交換することを意味します。 実際には、外部クライアントからのインプットの受信やフォーマットを行うフロントエンド アプリケーション全体は BPM ワークフローには表れません。Web コンポーネントと EJB レイヤとのやりとりが必要な場合に、ワークフローが処理を管理します。このように、ワークフローの開始は外部イベント、すなわち JMS トピック上へ該当する XML ドキュメントが到達することによって、通常、図のようにトリガされます。 このフレームワークでは、通常 BPM ワークフローにこのシナリオの発注プロセスは含まれません。チュートリアルの目的上、このプロセスをシミュレートします(詳細については、「サンプル ワークフローを使った作業」を参照してください)。実際は、次の図で示すように、受注が処理プロセスに渡された時点が、ワークフローの開始となります。 図1-3 受注販売のシナリオ : 開始のメカニズム
シナリオのフローチャートを更新し、ワークフローの開始点や、キャンセル通知のインターセプトに必要な追加手順をより正確に表します。 図1-4 受注販売のシナリオ : 開始と終了
WebLogic Integration におけるシナリオのモデル化
シナリオの定義と WebLogic Integration BPM 環境の確認を行ったあと、実際のプロセスとシナリオ中のエンティティを、WebLogic Integration Studio が生成したワークフローのモデル構成にマップする方法を決める必要があります。マップ方法の決定には、以下の点について確認が必要です。
これらのモデル化の作業については、以下の節で説明します。
アプリケーション ユーザの定義
実際にワークフローをモデル化する前に、まず対象となる実際の担当者の観点からシステムを定義する必要があります。Studio は、用法のコンテキストを明確にする 3 つの構成要素、すなわち オーガニゼーション、ユーザ、ロールを定義します。これらの構成要素について次の節で解説し、それぞれがチュートリアルのシナリオでどのように使用されるかについても説明します。
オーガニゼーション
オーガニゼーションとは、企業やサイト ロケーションを表します。オーガニゼーションは、Studio 内で作成する Business Process Management 固有の構成要素であり、WebLogic Server で定義されるユーザまたはグループには対応しません。しかし、ユーザをオーガニゼーションに関連付けて、ロール(ロールを参照)をオーガニゼーション内に定義することができます。ワークフローは、単一のオーガニゼーションだけではなく複数のオーガニゼーションにも関連付けることができます。
このシナリオのオーガニゼーションは CDExpress という予め定義されたオーガニゼーションです。
ユーザ
ユーザとは、Studio と Worklist クライアント アプリケーションのユーザであり、WebLogic Server のセキュリティ レルムで定義されます。ユーザは Studio で作成され、少なくとも 1 つのデフォルトのオーガニゼーションに関連付けられる必要があります。ユーザはどのオーガニゼーションと関連付けられたワークフローにもアクセス可能ですが、実行可能なワークフローはユーザを割り当てたオーガニゼーション内のワークフローに限ります。ユーザはロールにも関連付けできます(ロールを参照)。
ここで使用する CDExpress というオーガニゼーションには、Studio で作成した、 joe、mary、admin という 3 人のデフォルト ユーザがいます。
ユーザとパーミッションの詳細は、『WebLogic Integration Studio ユーザーズ ガイド』の「データ管理」の中の「ユーザの保守」を参照してください。
ロール
ロールとは、個人のユーザ アカウントとは無関係にユーザが実行できる汎用的なビジネス機能のことで、 たとえば、部門、職務、役職などがロールとなる場合もあります。このシナリオでは、カスタマサービス担当者、会計、出荷がロールに相当します。
ロールはオーガニゼーション内に含まれるので、それぞれのオーガニゼーションは固有なロールのセットを持つことになります。Studio でロールを作成する際に、自動的に WebLogic Server グループを作成できても、WebLogic Server 上でコンフィグレーションされたグループにロールをマップする必要があります。
また、1 ユーザに対して 1 ロール、複数ユーザに対して 1 ロール、1 ユーザに対して複数のロールを関連付けできます。つまり、1 人のユーザが複数のロールを受け持ったり、あるいは 1 つのロールを数人で担う場合もあります。
CDExpress のオーガニゼーションには次のようなロール、マッピング、メンバー ユーザが存在し、それらはすべて予め定義されています。
ロールとパーミッションの詳細は、『WebLogic Integration Studio ユーザーズ ガイド』の「データ管理」の中の「ロールを保守する」を参照してください。 外部コンポーネントの指定 このシナリオでは、目的の作業を遂行するワークフロー内で統合の必要がある Web とバックエンドのコンポーネントを、以下のように指定できます。
ここでは、ワークフローが外部コンポーネントとインタフェースをとる方法の詳細は省きますが(ワークフロー インタフェースの定義で説明)、この基本のワークフローが、どの時点で外部コンポーネントを必要とするかを次の図に示します。
図1-5 受注販売のシナリオ : 外部コンポーネント
サンプル ワークフローでは、他のコンポーネントに対するインタフェースがワークフローで定義されていますが、上の図の中で識別された EJB レベルのコンポーネントだけが組み込まれて実行されます。したがって、サンプル ワークフローでは外部コンポーネントを次のように表します。
ワークフロー オブジェクトの定義
アプリケーションで使用する外部コンポーネントが識別されると、ワークフローに必要なオブジェクトを定義して、シナリオ プロセスのモデル化を始めることができます。ワークフロー オブジェクトと、各オブジェクトがサンプル ワークフローにおいて果たす機能の例を以下の節で紹介します。
ノードと接続
ノードとは、ワークフローを構築し、ビジネス プロセスの境界を示す主要な単位です。接続によってノード間の移行が設定されます。次の表に示す 7 タイプのノードを使用して、ビジネス シナリオにおけるさまざまな要件を満たすことができます。
通常 1 つのノードの完了が次のノードの起因となり、そのフローが特定のアクションでオーバーライドされない限り、連続的にアクティブとなります(詳細はアクションを参照)。 イベントは、ワークフロー中で待機状態で機能する特殊なタイプのノードです。イベントは前のノードの完了によりアクティブになりますが、イベントがリスンするようコンフィグレーションされた XML ドキュメントの到着後にイベントが非同期でトリガされます。XML メッセージは、外部 JMS キューを通じて外部アプリケーションから受け取るか、内部 JMS キューを通じて別のワークフローから受け取ります。 注意: イベント ノードは、JMS 上の XML 以外のメカニズムを使用できるプラグイン定義イベントからも、トリガできます。プラグインのプログラミングの詳細は、『WebLogic Integration BPM プラグイン プログラミング ガイド』を参照してください。 このサンプル ワークフローでは、起動、タスク、完了などの必須ノード以外にも以下のノードを使用します。
したがって、このシナリオを次の図のように表すことができます。
図1-6 受注販売のシナリオ : Studio ワークフロー
上記のサンプル ワークフローにおいて、この単一のワークフローは、 次の図のように、メイン ワークフローとサブ ワークフローの 2 つに分割されています。 図1-7 受注販売のシナリオ : メイン ワークフローとサブ ワークフロー
図で示すように、サブ ワークフローを呼び出すために追加ノードがメイン ワークフローで使用されています。 ワークフローの作成でノードを引き出し、それをワークフローのノードの定義で定義します。 アクション アクションはワークフローの構築に使用する作業の基本単位です。Studio には 28 の種類のアクションがあり、WorkList ユーザに対する手動タスクの割り当て、プログラム全体の流れの制御、外部コンポーネントの統合および情報のやり取りなど、それぞれが異なる動作をします。 注意: デフォルトのアクション カタログを、プラグインを使用して拡張できます。プラグインのプログラミングの詳細は、『WebLogic Integration BPM プラグイン プログラミング ガイド』を参照してください。 アクションはワークフローで見える形では表現されず、ノード(通常はタスク ノード)で指定されます。ただし、起動、判定、イベント、例外ハンドラ(例外ハンドラを参照)、さらに他のアクションにおいてもアクションを指定できます。 サンプル ワークフローでは次のようなアクションを使用することがあります。
このチュートリアルではさまざまなアクションを使用します。
変数
変数とは、ワークフローが値を格納できるコンテナであり、その値とは、テキスト、数値、日付、さらに Java オブジェクトや EJB への参照なども格納できます。ワークフローのテンプレートを定義する場合、変数は幾つでも作成できます。ワークフローの有効期間中は変数の値を変更できます。
一般的に、変数は実行時のワークフローによって収集される実際のデータ項目を表します。変数には、ビジネス オペレーション(ワークフロー インタフェースの定義を参照)から返される値、XML ドキュメントから抽出される値、ワークフローのアクションにより明示的に設定される値などがあります。また、変数はワークフローによって、分岐ノードにおける条件の評価や、Worklist ユーザの XML メッセージへの応答結果の格納など、さまざまな目的で使用できます。
サンプル ワークフローでは、以下のようなさまざまな機能の変数を使用します。
変数はワークフローの作成で作成します。
例外ハンドラ
WebLogic Integration では、すべてのワークフロー インスタンスまたは実行中のワークフローによって、デフォルトで使用されるシステム例外ハンドラが用意されています。実行中に例外が発生した場合、システム例外ハンドラはアクティブなトランザクションをロール バックし、再び例外を送出します。
ワークフロー用のカスタム例外ハンドラも設定できます。ロール バックやトランザクションのコミット時に機能する例外ハンドラに対して、特定のアクションを定義します。
カスタム例外ハンドラの使い方において、POBean の calculate() メソッドに、無効なデータが渡される可能性に対して対処する例外ハンドラの定義と起動を行います。
ワークフロー インタフェースの定義
このシナリオとワークフローの設計では、ワークフローは以下に述べる仮想のコンポ-ネントや実際のコンポーネント、またアプリケーションともインタフェースする必要があります。
ワークフローが外部コンポーネントとインタフェースをとるためのさまざまな方式を、次の図に示しています。
図1-8 外部コンポーネントと外部アプリケーションとのインタフェース
これらのインタフェースについて、以下の節で詳しく説明します。 ビジネス オペレーション Java のクラスまたは Enterprise JavaBean のメソッドをワークフローから呼び出すには、ビジネス オペレーションを作成します。ビジネス オペレーションを実行すると、ワークフローの変数の値を入力パラメータとして EJB または Java オブジェクトのメソッドに渡すことができます。パラメータが渡されると、これらのメソッドは値をワークフローの変数に返します。 サンプル ワークフローでは、ビジネス オペレーションを以下の目的で使用します。
ワークフローの作成 で、ビジネス オペレーションを定義し、実行します。
XML ドキュメント
WebLogic Integration のワークフローは、サーブレットやバックエンド アプリケーションといった異なるタイプのサーバ側コンポーネントと非同期方式でやりとりを行うため、JMS トピックまたはキューにパブリッシュされる XML ドキュメント、または JMS キューから受け取った XML ドキュメントを通じてデータを共有します。
実際に、複数のワークフロー間で非同期で情報交換する場合にも、WebLogic Integration サーバは、内部トピックにポストされた XML ドキュメントを使用します。また、ワークフローと Worklist クライアント間の通信は、WebLogic Integration アプリケーション プログラミング インタフェース(API)を介して行われますが、多くの場合、リクエストとその応答は XML ドキュメントの形式をとります。
注意: WebLogic Integration API の詳細は、『BPM クライアント アプリケーション プログラミング ガイド』と『BEA WebLogic Integration Javadoc』を参照してください。
このように、これらのワークフローでは、多くの外部コンポーネントとの通信、また内部コンポーネントとの通信においても、XML メッセージを作成して、それを Worklist クライアントのユーザや、外部や内部のトピックまたはキューに送信する必要があります。XML 要素と属性は、実行時に値が使用されるワークフロー変数に対応します。サンプル ワークフローでは、送信する XML ドキュメントを次の目的に使用します。
XML ドキュメントは、その XML ドキュメントの参照に使用するアクションによっては、特定のワークフローに埋め込むことができます。一方、そのドキュメントを、XML ドキュメントや文書型定義(DTD)、そしてワークフロー定義外のその他の XML エンティティを格納する XML リポジトリへエクスポートしたり、インポートしたりすることもできるので、1 つのワークフロー内で作成したドキュメントにアクセスして別のワークフローに再利用することができます。XML ドキュメントの作成、リポジトリへのエクスポート、リポジトリからのインポートはXML リポジトリの使い方 : Neworder XML ドキュメントのエクスポートとXPath 文を定義するで行います。
イベント キー
ワークフロー イベントが受信した XML ドキュメントをリスンするよう定義する場合、イベントが想定するドキュメントのドキュメント タイプまたはルート要素を指定します。受信 XML ドキュメントをフィルタ処理し、特定の要素または属性値を持つ XML ドキュメントに限りイベントをトリガできるようにするには、イベントキーを指定します。イベント キーは、ドキュメント タイプ、および XPath 式により XML ドキュメントから抽出される要素の値を識別します。イベント キーは 1 つのテーブルに格納され、実行時に XML ドキュメントから返された値がサーバのイベント プロセッサによってイベント ノードで指定されたキーの値と比較されます。一致した場合にイベントがトリガされます。このメカニズムについては、イベントの作成 : Wait for New Inventory イベントの定義で詳しく説明します。
ワークフローで使用するイベントの例には、以下のような目的で送信される XML メッセージを認識するためのイベント キーがあります。
ワークフローの作成で、イベント キーと XPath 式を定義します。
サンプル ワークフローを使った作業
Business Process Management に使用するサンプル ワークフローでは、シナリオは次の 3 つのワークフローとして実行されます。すなわち、メイン ワークフロー、サブ ワークフロー、トリガ ワークフローの 3 つです。トリガ ワークフローはチュートリアルとともに使用されます。同じシナリオを単純に 1 つのワークフローとして実行することもできますが、長く複雑なワークフローの構築には 2 つのワークフローにプロセスを分割する方式がよいでしょう。
3 つのサンプル ワークフローの関係を、次の図に表します。
図1-9 3 つのサンプル ワークフローの関係
各ワークフローについてはチュートリアルの各節で詳しく説明しますが、各ワークフローの概要をこの節で説明します。
Order Processing がメイン ワークフローです。このワークフローは、最初の顧客リクエスト処理から、在庫チェックを行い、タスクの管理をサブ ワークフローに渡すまでのタスクを定義します。Order Processing が再びプログラムの制御を回復すると、確認通知を送信し、プロセス全体が完了します。
Order Fulfillment は、在庫チェック後に Order Processing ワークフローから呼び出されるサブワークフローです。このサブワークフローは、出荷タスクと請求タスクを定義します。これらのタスクが完了すると、プログラムの制御はメイン ワークフローに戻されます。
Order Processing Trigger は、顧客からの発注を受け付ける Web アプリケーションをシミュレートするために組み込まれています。その結果、Worklist からワークフローを実行できるようになります。
このチュートリアルで説明する 3 つのワークフローの完全な使用可能バージョンは、SAMPLES_HOME/integration/samples/bpm_tutorial フォルダの Tutorial.jar パッケージに用意されています。このパッケージには、テンプレート、テンプレート定義、ビジネス オペレーション、ワークフローの実行に必要なイベント キーが入っています。
このチュートリアルの手順に従うことをお勧めしますが、チュートリアルを使用せずにデモンストレーションとしてワークフローを実行したい場合は次のようにします。
チュートリアルの使い方
このチュートリアルは、Studio と Worklist アプリケーションの、多くの一般機能の使い方を学習できるように編成されています。最初の 4 つの各節では、Studio とワークフローの設計の異なる側面が 1 つのサンプル ワークフローを使って強調され、最後の節ではアクションのワークフロー全体を示します。
WebLogic Integration Studio 入門では、Studio にログオンし、Order Processing Trigger と Order Fulfillment のワークフローをインポートして Studio インタフェースのさまざまな側面を調べます。この節で説明するトピックは次のとおりです。
ワークフロー オブジェクトとプロパティで、Order Processing Trigger ワークフローを使用してワークフローのプロパティを調べ、ワークフローに埋め込まれている XML メッセージを編集します。この節で説明するトピックは以下のとおりです。
ワークフローの作成で、Order Processing ワークフローを次の手順で新しく作成します。
ワークフローのノードの定義で、変数、アクション、その他のワークフロー オブジェクトの追加と定義を行い、Order Processing ワークフローのノードを定義します。この節で説明するトピックは以下のとおりです。
カスタム例外ハンドラの使い方では、Order Fulfillment ワークフローを使用して、WebLogic Integration 例外ハンドラの機能と、他の Worklist ユーザとのやり取りについて説明します。
最後に、サンプル ワークフローの実行とモニタで、Worklist アプリケーションにログオンし、サンプル ワークフローを実行しながら、同時に Studio で Worklist アプリケーションをモニタします。
このチュートリアルで説明されない Studio の機能には、以下のようなものがあります。
これらの機能の使い方については、『WebLogic Integration Studio ユーザーズ ガイド』を参照してください。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |