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

     前  次    新しいウィンドウで目次を開く     
ここから内容

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

前の手順では、分岐ノード (Sales Tax Calculation Needed?) 用の条件セットを設計しました。この手順では、分岐ノード (Sales Tax Calculation Needed?) で定義した条件の評価結果が true の場合 (つまり、クライアントから受け取った XML ドキュメント内の shipAddress/state の値が、CA、California、NJ、New Jersey と等しい場合) に実行するアクティビティの作成方法を学習します。特に、Web サービス コントロールを介して税計算 Web サービスを呼び出すビジネス プロセスの設計方法について学びます。

このチュートリアルでは、TaxCalcControl.java Web サービス コントロールが Tutorial_Process_Application_Web\requestquote\services フォルダに用意されています。

注意 : Java コントロールは、Workshop フレームワークで管理されているサーバサイド コンポーネントであり、Workshop アプリケーションで使用できるように、外部リソースとビジネス ロジックをカプセル化します。Java コントロールは、ビジネス プロセスと他のリソース間のインタフェースを表します。基底のコントロールの実装で、対話の詳細の大部分を処理します。コントロールにより、ビジネス プロセスから直接呼び出し可能な Java インタフェースがエクスポーズされます。ユーザは、コントロールのインスタンスをプロジェクトに追加し、そのメソッドを呼び出すことができます。
注意 : Web サービスとその関連コントロールの作成方法の詳細については、このチュートリアルでは説明していません。Web サービスの作成、および Web サービスのコントロールの作成方法の詳細については、以下を参照してください。

Web サービス コントロールの呼び出しには、以下の作業が伴います。

 


Web サービス コントロールのインスタンスの作成

  1. [デザイン] ビューを選択します。
  2. WorkSpace Studio のメニューから、[ウィンドウ|ビューの表示|データ パレット] を選択します。
  3. [データ パレット] タブの ビジネス プロセスのグラフィック表示 をクリックします。ビジネス プロセスが対話できるリソースを表すコントロールのドロップダウン メニューが表示されます。
  4. [ローカル コントロール|TaxCalcControl - requestQuote.services] を選択します。
  5. [フィールド名] のデフォルト値を受け入れ、[終了] をクリックします。
  6. 注意 : コントロールのインスタンスは、[パッケージ・エクスプローラー] ビューから [データ パレット] の [コントロール] ノード下にドラッグ アンド ドロップすることによって作成することもできます。

 


Web サービスの呼び出し

  1. [データ パレット] で、[taxCalcControl] ノードを展開します。
  2. [void requestTaxRate(String stateID_arg)] メソッドを [データ パレット] ビューから [デザイン] ビューまでドラッグし、[Sales Tax Calculation Needed?] の [Yes] ノードの直下にドロップします。
  3. 図 5-1 コントロール送信ノード


    コントロール送信ノード

    コントロール送信ノードが作成されます。このノードは、税計算 Web サービス コントロールへの非同期呼び出しを表します。このノードの名前は、[データ パレット] ビューから選択したメソッド (requestTaxRate) の名前と同じになります。

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

    注意 : 前の手順で学習したように、[データの送信] タブには [変数の割り当て] と [トランスフォーメーション] の 2 つのモードがあります。

    この場合は、taxCalcControl コントロールへの入力として必要なデータ型が Java String 型であるのに対して、RFQ メッセージ (shipAddress/state の値を含む) が格納される変数のデータ型は型付き XML (QuoteRequestDocument、XML スキーマに対して有効) であるため、[トランスフォーメーション] モードに切り替える必要があります。

    注意 : WLI には、異種データ型間のデータのトランスフォーメーションを行う XQuery Mapper と呼ばれるツールがあります。XQuery Mapper を使用して作成するデータ トランスフォーメーションは xq ファイルに格納されます。トランスフォーメーション ファイルは、ビジネス プロセスが対話するリソースの 1 つと考えることができます。データ トランスフォーメーションが格納されているファイルは、コントロールとしてビルドされます。コントロールがエクスポーズするメソッドをビジネス プロセスが呼び出すことにより、異種のデータ型のトランスフォーメーションを実行できます。
  7. [トランスフォーメーション] を選択します。
  8. [変数の選択] をクリックしてプロジェクト内の変数を表示し、[requestXML (QuoteRequestDocument)] を選択します。これは、ビジネス プロセスの最初にクライアント要求ノード用に作成した変数です。
  9. [トランスフォーメーションの作成] をクリックします。
  10. XQuery ファイルが作成され、XQuery トランスフォーメーション パースペクティブに自動的に開かれます。

    XQuery ファイルのデザイン ビューで、QuoteRequestDocument XML ドキュメントの要素が [ソース] ペインに、[String] 要素が [対象] ペインに表示されます。

  11. [ソース] ペインで [state] を選択し、[対象] ペインの [String] までドラッグします。次の図に示すように、state 要素と String 要素を結ぶ線が表示されます。この線は、2 つのデータ型間のトランスフォーメーションを表します。
  12. 図 5-2 データ トランスフォーメーション


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

  13. xq ファイルを保存します。
  14. XQuery ファイル (RequestQuotetaxCalcControlrequestTaxRate.xq) とトランスフォーメーション コントロール ファイル (RequestQuoteTransformation.java) が作成されます。両方のファイルが [パッケージ・エクスプローラー] ビューに表示されます。また、トランスフォーメーション コントロールのインスタンスが作成され、[データ パレット]([コントロール] フォルダ) 内の [transformations] 下に表示されます。

  15. [RequestQuote.java] タブを選択してプロセスを切り替え、プロセス パースペクティブに戻ります。
  16. [閉じる] をクリックして、Request Tax Rate ノード ビルダを閉じます。
  17. これで、requestTaxRate ノードの設計が終了しました。

 


Web サービスからの税率の受信

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

前の節では、コントロールを介した、税計算 Web サービスの呼び出しを設計しました。

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

  1. プロセス パースペクティブに切り替えます。
  2. [データ パレット] で、[taxCalcControl] ノードを展開し、コントロールで利用できるメソッドのリストを表示します。
  3. [void returnTaxRate(float taxRate_arg)] メソッドを [データ パレット] から [デザイン] ビューまでドラッグし、[Sales Tax Calculation Needed?] ノードの [requestTaxRate] ノードの直下にドロップします。
  4. 税計算 Web サービス コントロールからの非同期応答を表すコントロール受信ノードが作成されます。このノードの名前は、[データ パレット] から選択したメソッド (returnTaxRate) の名前と同じになります。

    図 5-3 コントロール受信ノード


    コントロール受信ノード

  5. [returnTaxRate] ノードをダブルクリックします。
  6. ノード ビルダが [一般的な設定] タブで表示されます。コントロール インスタンスとターゲット メソッド、つまり taxCalculationreturnTaxRate(float taxRate_arg) がすでに選択されています。

  7. [データの受信] タブを選択します。[変数の割り当て] モードでタブが開きます。
  8. [コントロールが返す値] フィールドは、taxCalculation コントロールの returnTaxRate() メソッドが返すパラメータのデータ型と名前を示します。

  9. [割り当てる変数を選択します] ドロップダウン リストから、[変数の新規作成...] を選択します。
  10. [変数を作成] ダイアログ ボックスが表示されます。

  11. [変数名] フィールドに taxRate と入力します。
  12. [単純] タブで、[プリミティブ] を展開し、[float] を選択します。
  13. [デフォルト値] フィールドに、0 (ゼロ) を入力します。これにより、taxRate の値がゼロに初期化されます。
  14. 図 5-4 [変数を作成] ダイアログ ボックス


    [変数を作成] ダイアログ ボックス

  15. [OK] をクリックします。
  16. 実行時に消費税率が割り当てられる新しい変数が作成され、[データ パレット] ビューの [変数] に Java 変数として表示されます。

  17. [閉じる] をクリックして、ノード ビルダを閉じます。
  18. これで、returnTaxRate ノードの設計と、分岐ノードの条件の評価結果が true のときにビジネス プロセスが実行するアクティビティの設計が完了しました。

    [デザイン] ビューに、ビジネス プロセスが以下の図のように表示されます。

    図 5-5 ビジネス プロセスのグラフィック表示


    ビジネス プロセスのグラフィック表示

    注意 : Web サービス コントロールへの非同期呼び出しを追加すると、開始ノードのアイコンが ビジネス プロセスのグラフィック表示 (ステートレス ビジネス プロセスを示す) から ビジネス プロセスのグラフィック表示 (ステートフル) に変わります。
    注意 : プロセスがステートレスかステートフルかを確認するには、開始ノードを選択し、[JPD コンフィグレーション] ビューで stateless プロパティを探します。
    注意 : ステートフル ビジネス プロセスとステートレス ビジネス プロセスの詳細については、『ビジネス プロセス構築ガイド』の「ステートレス/ステートフル ビジネス プロセスの構築」を参照してください。
    注意 : プロセスのプロパティがステートレスからステートフルに変った理由については、「トランザクション境界」を参照してください。
  19. WorkSpace Studio のメニューから、[ファイル|すべて保管] を選択します。

この分岐ノードでこれ以上の設計作業を行う必要はありません。

関連トピック


  ページの先頭       前  次