チュートリアル : 初めてのビジネス プロセス構築

     前  次    目次     
ここから内容

手順 4 : Web サービスの呼び出し

デフォルトでは、分岐ノードには 1 つの条件、条件ノードの下に続く、条件または条件のセットの評価結果が「true」のときに進む実行パスを表すパス、および条件ノードの右に続く、条件の評価結果が「false」のときに進む実行パスを表すパス (デフォルト パス) があります。

注意 : 分岐ノードには条件ノードやパスを追加することができますが、ここでは条件の 1 セットと 2 つのパスだけを使用します。

この手順では、分岐ノードの 1 つの実行パスにロジック (Sales Tax Calculation Needed?) を追加する方法を学習します。具体的には、コントロールを介してリソースと対話するようにビジネス プロセスを設計する方法を学びます。ビジネス プロセスは Web サービスを呼び出し、その Web サービスから返されたデータを処理します。ここでは、以下のトピックについて説明します。

 


税計算コントロールについて

Java コントロールは、Workshop フレームワークで管理されているサーバサイド コンポーネントです。Java コントロールは、Workshop アプリケーションで使用できるように、外部リソースとビジネス ロジックをカプセル化します。つまり、コントロールは、ビジネス プロセスと他のリソース間のインタフェースです。基底のコントロールの実装で、対話の詳細の大部分を処理します。コントロールにより、ビジネス プロセスから直接呼び出し可能な Java インタフェースがエクスポーズされます。ユーザは、コントロールのインスタンスをプロジェクトに追加し、そのメソッドを呼び出します。

このシナリオでは、ビジネス プロセスが呼び出す Web サービスによって消費税が計算され、ビジネス プロセスに返されます。ビジネス プロセスは、Web サービス コントロールを介して Web サービスを呼び出します。この Web サービス コントロール (TaxCalcControl.java) は、アプリケーションのプロジェクト内、Tutorial_Process_Application_WEB\requestquote\services フォルダに用意されています。myapplications は、チュートリアル アプリケーションを作成した場所を表しています。

TaxCalc.java Web サービスとそれに関連付けられているコントロール (TaxCalcControl.java) の作成方法の詳細については、このチュートリアルでは説明していません。このチュートリアルの手順 4 の目的は、ビジネス プロセスに適切なノードを作成する方法と、それらのノードとこの Web サービス コントロールとの通信を設計する方法について説明することです。

Web サービスを作成し、Web サービスからコントロールを作成する方法については、「チュートリアル : Web サービス」および「 コントロールとトランザクション」を参照してください。

関連トピック

チュートリアル : Web サービス

トランザクション境界

ビジネス プロセスと Web サービスとの対話の設計

この節では、分岐ノードに定義された条件の評価結果が true のときに実行するアクティビティの作成方法について説明します。クライアントから受け取った XML ドキュメント内の shipAddress/state の値が、CA、California、NJ、または New Jersey と等しい場合、評価結果は true になります。

この節では、ビジネス プロセスから Web サービスを呼び出す方法と、その Web サービスから返されるデータを受け取るコールバック ハンドラを作成する方法を学習します。この手順で実行するタスクは次のとおりです。

プロジェクトに Web サービス コントロールのインスタンスを作成するには
  1. デザイン ビューが表示されていない場合は、[デザイン] タブをクリックします。
  2. BEA Workshop メニューから [ウィンドウArrow symbolビューの表示Arrow symbolデータ パレット] を選択します。
  3. [データ パレット] タブの をクリックします。ビジネス コントロールが対話できるリソースを表すコントロールのドロップダウン リストが表示されます。
  4. [ローカル コントロール] を選択し、[TaxCalcControl - requestQuote.services] を選択します。
  5. [Insert Control:TaxCalcControl - requestQuote.services] ダイアログ ボックスのデフォルトのフィールド名を受け入れます。
  6. 注意 : TaxCalcControl.java を [パッケージ・エクスプローラー] ペインからデータ パレットにドラッグ アンド ドロップすることもできます。このファイルは、Tutorial_Process_application_WEB/src/requestquote.services/TaxCalcControl.java にあります。
  7. [終了] をクリックします。
ビジネス プロセスから税計算 Web サービスを呼び出すには

この手順では、ビジネス プロセスから税計算コントロールを呼び出すロジックを作成します。

  1. データ パレットで、[taxCalcControl] の横にある + をクリックします。[taxCalcControl] で利用できるメソッドのリストが表示されます。
  2. [taxCalcControl] メソッドのリストで、以下のメソッドをクリックします。
  3. void requestTaxRate(String stateID_arg)
  4. このメソッドをビジネス プロセスまでドラッグし、[Sales Tax Calculation Needed?] ノードの条件 (Yes) ノードのすぐ下にドロップします。


  5. taxCalculation Web サービス コントロールへの非同期呼び出しを表すコントロール送信ノードが作成されます。このノードの名前は、ビジネス プロセスまでドラッグしたメソッドの名前に従って、requestTaxRate となります。

    注意 : この対話は非同期として設計されます。つまり、ビジネス プロセスは、このノードから taxCalcControl に要求を送信でき、コントロールからの応答を待ってブロックすることはありません。言い換えれば、ビジネス プロセスは、処理を続行し、taxCalcControl サービスが要求を完了したときに、そのサービスから応答を受け取ることができます。
  6. [requestTaxRate] ノードをダブルクリックします。ノード ビルダを開くと、[一般的な設定] タブが表示されます。コントロール インスタンスとターゲット メソッド、つまり taxCalcControlvoid request TaxRate(String stateID_arg) がすでに選択されています。
  7. [データの送信] をクリックします。
  8. デフォルトでは、[データの送信] を開くと [変数の割り当て] ペインが表示されます。[コントロールが予期する値] フィールドには、taxCalcControl Web サービスがエクスポーズする requestTaxRate() メソッドが予期するデータ型で String stateID_arg と表示されます。

    注意 : 前の手順で学習したように、[データの受信] タブには 2 つのモードがあります。
    • [変数の割り当て] - このモードは、クライアントから受信したデータを同じデータ型の変数に割り当てる場合に使用します。
    • [トランスフォーメーション] - このモードは、変数に割り当てられたデータとメソッド パラメータが予期するデータ間のトランスフォーメーションを作成する場合に使用します。
    • この場合は、taxCalcControl コントロールへの入力として必要なデータ型は Java String 型で、見積り要求メッセージ (shipAddress/state の値を含む) が格納される変数は XML 型 (XML スキーマに対して有効な QuoteRequestDocument) であるため、[トランスフォーメーション] モードに切り替える必要があります。

      BEA Products には、異質なデータ型をマップするデータ マッピング ツールがあります。このツールを使って作成するデータ トランスフォーメーションは、データ トランスフォーメーション ファイルに格納されます。トランスフォーメーション ファイルは、ビジネス プロセスがコントロールを介して対話するリソースの 1 つと考えることができます。つまり、データ トランスフォーメーションが格納されているトランスフォーメーション ファイルは、コントロールとしてビルドされます。コントロールは、トランスフォーメーション メソッドをエクスポーズし、それをビジネス プロセスにより呼び出して異種のデータ型をマッピングします。

  9. [トランスフォーメーション] をクリックします。変数とコントロール メソッドのパラメータが予期するデータ型との間のトランスフォーメーションを定義するためのペインが開きます。
  10. [変数の選択] をクリックしてプロジェクト内の変数を表示し、[requestXML (QuoteRequestDocument)] を選択します。これは、ビジネス プロセスの最初にクライアント要求ノード用に作成した変数です。

  11. 次のダイアログ ボックスで、[トランスフォーメーションの作成] をクリックします。トランスフォーメーション ツールが開き、[ソース] ペインに QuoteRequest XML ドキュメントが表示され、[対象] ペインに [String] が表示されます。
  12. [ソース] ペインで [state] をクリックし、そのまま [対象] ペインの [String] までドラッグします。[XML マップ] ペインで、state 要素と String 要素を結ぶ線が描画されます。これは 2 つのデータ型間のトランスフォーメーションを表します。


  13. プロセスに切り替える前に .xq ファイルを保存し、[RequestQuote.java] タブをクリックします。
  14. 注意 : 前の手順でトランスフォーメーションを作成すると、プロジェクトにトランスフォーメーション コントロール (RequestQuoteTransformation.java という名前の Java ファイル) が作成されます。また、トランスフォーメーション メソッドに対するクエリ (XQuery 言語による) を含んだ XQ ファイルも作成されます。Java ファイルと XQ ファイルはどちらも [パッケージ・エクスプローラー] タブに表示されます。また、トランスフォーメーション コントロールのインスタンスが作成され、データ パレットControls フォルダに トランスフォーメーションとして表示されます。
  15. [閉じる] をクリックして、Request Tax Rate ノード ビルダを閉じます。
  16. この手順で、Request Tax Rate ノードの設計が完了します。

Web サービスから税率計算を受け取るには

ビジネス プロセスと税計算コントロールとの対話は非同期的に行われます。つまり、税計算サービスが応答を準備している間も、ビジネス プロセスは他の作業を引き続き実行できます。税計算サービスからの応答が用意できると、ビジネス プロセスに通知されます。

前の節では、コントロールを介した、税計算 Web サービスの呼び出しを設計しました。税計算コントロールから返される税率を受け取るロジックをビジネス プロセスに追加するには、以下の手順を実行します。

  1. データ パレットで、[taxCalcControl] の横にある + をクリックして、taxCalcControl で利用できるメソッドのリストを展開します。
  2. [taxCalcControl] メソッドのリストで、以下のメソッドをクリックします。
  3. void returnTaxRate(float taxRate_arg)
  4. このメソッドをビジネス プロセスまでドラッグし、[Sales Tax Calculation Needed?] ノードの [requestTaxRate] ノードのすぐ下にドロップします。
  5. Web サービス コントロールからの非同期応答を表すコントロール受信ノードが作成されます。



    このノードの名前は、ビジネス プロセスまでドラッグしたメソッドの名前に従って、returnTaxRate となります。

  6. [returnTaxRate] ノードをダブルクリックします。ノード ビルダを開くと、[一般的な設定] タブが表示されます。コントロール インスタンスとターゲット メソッド、つまり taxCalculationreturnTaxRate(float taxRate-arg) がすでに選択されています。
  7. [データの受信] タブをクリックします。[変数の割り当て] ペインが選択された状態でタブが開きます。
  8. [コントロールが返す値] フィールドには、taxCalculation コントロールに対する returnTaxRate() メソッドが返すパラメータのデータ型と名前、float taxRate が表示されます。

  9. [変数の割り当て] ペインで、[割り当てる変数を選択します] の下のフィールドの矢印をクリックし、[変数の新規作成...] を選択します。[変数を作成] ダイアログ ボックスが表示されます。
  10. [変数名] フィールドに taxRate と入力します。
  11. [単純] タブで [プリミティブ] を展開し、[float] を選択します。
  12. [デフォルト値] フィールドに、0 と入力します。これにより、taxRate の値がゼロに初期化されます。


  13. [OK] をクリックします。実行時に消費税率が割り当てられる新しい変数が作成され、[変数] タブに Java 変数としてリストされます。
  14. ノード ビルダの [閉じる] をクリックします。コントロール受信ノード ビルダが閉じます。
  15. この手順で、returnTaxRate ノードの設計と、分岐ノードの条件の評価結果が true のときにビジネス プロセスが実行するアクティビティの設計が完了します。デザイン ビューでは、ビジネス プロセスが以下の図のように表示されます。



    Web サービス コントロールへの非同期呼び出しを追加した後に、開始ノードのアイコンが から に変ります。前のアイコンはビジネス プロセスがステートレスであることを示し、後のアイコンはビジネス プロセスにステートがあることを示します。

    これらのアイコンは、ビジネス プロセスの stateless プロパティの仕様を反映しています。stateless プロパティが true と定義されているか false と定義されているかを確認するには、開始ノード アイコン をクリックし、プロパティ エディタを表示します。ステートフル ビジネス プロセスとステートレス ビジネス プロセスについては、「ステートレス/ステートフル ビジネス プロセスの構築」を参照してください。プロパティをステートレスからステートフルに変更する理由については、「トランザクション境界」を参照してください。

    注意 : BEA Workshop に [プロパティ] ペインが表示されていない場合は、メニュー バーから [ウィンドウArrow symbolビューの表示Arrow symbolプロパティ] を選択してください。
  16. Workshop メニューから [ファイルArrow symbolすべて保管] を選択します。
  17. 注意 : この分岐ノードでこれ以上の設計作業を行う必要はありません。条件の評価結果が true の場合は、[Yes] パスに沿って実行パスが進み、税率が計算されます。条件の評価結果が false の場合は、消費税の計算が不要です。実行パスは [No] パスに沿って進み、値 0 が変数 taxRate に割り当てられます。前の節で taxRate 変数を設計したときには、taxRate がゼロに初期化されるように指定しました。

関連トピック

コントロールを使用してリソースと対話する

データ トランスフォーメーション ガイド

ステートレス/ステートフル ビジネス プロセスの構築


  ページの先頭       前  次