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

     前  次    目次     
ここから内容

手順 9 : 見積りドキュメントの作成

パラレル ノードを設計したときの作業により、ビジネス プロセスが For Each ノードを抜け出る時点で、価格見積りデータが priceList 変数に、在庫見積りデータが availList 変数に割り当てられます。priceList 変数と availList 変数の両方とも、データ型は XmlObjectList (型なし XML データのシーケンス) です。

この手順では、最初に、priceList 変数と availList 変数のデータを型なし XML データ (XmlObjectList) から型付き XML データ (プロジェクトに用意されている XML スキーマに対して有効な XML) に変換します。その後で、型付き XML の価格データと在庫データを結合して、1 つの「見積り」ドキュメントを生成します。このドキュメントは、呼び出し元のクライアントにビジネス プロセスが送信する応答になります。

トランスフォーメーションに関する注意

BEA Products では、以下の方法でトランスフォーメーションを作成できます。

この手順では、すでに計算されている価格データと在庫データを使用して 1 つの見積りドキュメントを作成するロジックを、ビジネス プロセス内に設計します。これを行うには、トランスフォーメーション ファイル PriceAvailTransformations.javaTutorialJoin.java を呼び出すコントロール ノードを設計する必要があります。

注意 : これらのトランスフォーメーション ファイルの作成方法については、このチュートリアルでは説明していません。TutorialJoin.java の作成方法については、「チュートリアル : 初めてのデータ トランスフォーメーション構築」を参照してください。

クライアントに返す 1 つの見積りドキュメントを作成するこの手順では、以下のタスクを実行する必要があります。

価格リストから XML 見積りドキュメントへの変換

以下の手順を実行して、価格リスト (For Each ループでの反復処理で作成されたリスト) を型付き XML データ型の変数に変換するノードを設計します。これを行うには、priceAvailTransformations コントロールのメソッドを使用します。

トランスフォーメーション コントロールとの対話を設計するには
  1. データ パレット内で展開されている priceAvailTransformations コントロール インスタンスで、以下のメソッドをクリックします。
  2. PriceQuoteDocument convertPriceListToXML
    (QuoteRequestDocument _quoteRequestDoc, XmlObjectList _XmlObjectListDoc)



  3. データ パレットのメソッドをドラッグして、デザイン ビュー内の RequestQuote ビジネス プロセスにドロップし、[For Each] ブロックの直後 (ブロック外) に配置します。


  4. ノード名を convertPriceListToXML から Convert PriceList To PriceQuote XML に変更します。
  5. [Convert PriceList To PriceQuote XML] ノードをダブルクリックし、そのノード ビルダを開きます。
  6. priceAvailTransformations コントロールと以下のメソッドが [一般的な設定] タブで選択されていることを確認します。
  7. PriceQuoteDocument convertPriceListToXML
    (org.example.request.QuoteRequestDocument _quoteRequestDoc, com.bae.xml.XmlObjectList _XmlObjectListDoc)
  8. [データの送信] タブをクリックして、ノード ビルダに 2 番目のタブを開きます。
  9. [コントロールが予期する値] フィールドには、priceAvailTransformations コントロールに対する convertPriceListToXML() メソッドが予期するデータ型が表示されます。



    注意 : priceAvailTransformations コントロールに対する convertPriceListToXML() メソッドには、2 つの目的があります。まず XmlObjectList 価格データを型付き XML に変換し、その後で顧客名、出荷先、および価格見積りデータ (価格リスト) を 1 つの変数に結合する必要があります。convertPriceListToXML() メソッドは、XmlObjectList 型のパラメータで価格リストを受け取り、QuoteRequestDocument 型のパラメータで顧客名と出荷先を受け取ります。priceAvailTransformations コントロールの詳細については、「このノードのトランスフォーメーションに関する注意」を参照してください。
  10. [データの送信] タブの [割り当てる変数を選択します] で、priceAvailTransformations コントロールが必要とするデータを保持する変数を以下のように割り当てます。
    • QuoteRequestDocument に関連付けられた変数割り当てフィールド内の矢印をクリックし、[requestXML (QuoteRequestDocument)] を選択します。requestXML は、顧客名と出荷先のデータを保持する変数です。
    • XmlObjectList に関連付けられた変数割り当てフィールド内の矢印をクリックし、[priceList (XmlObjectList)] を選択します。


  11. [データの受信] をクリックして、ノード ビルダに 3 番目のタブを開きます。
  12. [コントロールが返す値] フィールドには、priceAvailTransformations コントロールに対する convertPriceListToXML() メソッドから返されるデータ型、PriceQuoteDocument が表示されます。

  13. [割り当てる変数を選択します] フィールドの矢印をクリックし、[変数の新規作成...] を選択します。[変数を作成] ダイアログ ボックスが表示されます。


  14. [変数名] フィールドに priceQuote と入力します。
  15. [変数の型の選択] フィールドの [XML 型] リストで、[priceQuote] を選択します。[変数の型] フィールドに org.example.price.PriceQuoteDocument が表示されます。
  16. [OK] をクリックして [変数を作成] ダイアログ ボックスを閉じます。
  17. ノード ビルダを閉じるには、[閉じる] をクリックします。
  18. この手順で、Convert PriceList to PriceQuote XML ノードの設計が完了します。実行時に、型付き XML 形式の価格見積りデータ、および顧客名と出荷先が、priceQuote 変数に割り当てられます。

このノードのトランスフォーメーションに関する注意

priceAvailTransformations コントロールに対する convertPriceListToXML() メソッドは、前の手順で価格見積り XML データを作成するのに使用されます。

簡単に言うと、トランスフォーメーション メソッドへの入力には、クライアントから (requestXML 変数で) 送られた元のデータと、For Each ノードでの反復処理の完了後に priceProcessor コントロールから (priceList 変数で) 返された価格データが含まれます。

convertPriceListToXML() メソッドは、requestXML 変数から顧客名と出荷先を、priceList 変数からウィジェット ID と価格のリストを取得し、データを新しい変数 (priceQuote) にマップします。

練習として、priceAvailTransformations コントロールのこのメソッドやその他のメソッドを表示して確認してみてください。たとえば、[パッケージ・エクスプローラー] 内の [PriceAvailTransformations.java] をダブルクリックすると、ソース ビューにトランスフォーメーション コントロールが表示されます。[convertAvailXMLtoXMLObj] メソッドを右クリックし、[XQuery ドキュメントへ移動] を選択すると、トランスフォーメーション ツールが開きます。トランスフォーメーション ツールのデザイン ビューとソース ビューのタブを使用して、トランスフォーメーションと対応する XQuery を表すデータ マップを確認できます。XQuery をテストするには、[テスト ビュー] タブを使用します。たとえば、以下の図は、convertAvailXMLtoXMLObj() メソッド用のマップを示しています。

関連トピック

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

チュートリアル : 初めてのデータ トランスフォーメーション構築

在庫リストから XML 見積りドキュメントへの変換

以下の手順を実行して、在庫リスト (For Each ループでの反復処理で作成されたリスト) を型付き XML データ型の変数に変換するノードを設計します。これを行うには、priceAvailTransformations コントロールのメソッドを使用します。

トランスフォーメーション コントロールとの対話を設計するには
  1. データ パレット内の priceAvailTransformations コントロール インスタンスを展開し、以下のメソッドをクリックします。
  2. AvailQuoteDocument convertAvailListToXML(com.bea.xml.XmlObjectList _XmlObjectListDoc)



  3. データ パレットのメソッドをドラッグして、デザイン ビュー内の RequestQuote ビジネス プロセスにドロップし、[Convert PriceList to PriceQuote XML] ノードの直後に配置します。


  4. ノード名を convertAvailListToXML から Convert AvailList to AvailQuote XML に変更します。
  5. [Convert AvailList to AvailQuote XML] ノードをダブルクリックし、そのノード ビルダを開きます。
  6. priceAvailTransformations コントロールと以下のメソッドが [一般的な設定] タブで選択されていることを確認します。
  7. AvailQuoteDocument convertAvailListToXML(com.bea.xml.XmlObjectList _XmlObjectListDoc)
  8. [データの送信] タブをクリックして、ノード ビルダに 2 番目のタブを開きます。
  9. [コントロールが予期する値] フィールドには、priceAvailTransformations コントロールに対する convertAvailListToXML() メソッドが予期するデータ型、XmlObjectList が表示されます。

  10. [データの送信] タブの [割り当てる変数を選択します] で、変数割り当てフィールド内の矢印をクリックし、[availList (XmlObjectList)] を選択します。
  11. [データの受信] をクリックして、ノード ビルダに 3 番目のタブを開きます。
  12. [コントロールが返す値] フィールドには、priceAvailTransformations コントロールに対する convertAvailListToXML() メソッドから返されるデータ型、AvailQuoteDocument が表示されます。

  13. [割り当てる変数を選択します] フィールドの矢印をクリックし、[変数の新規作成...] を選択します。[変数を作成] ダイアログ ボックスが表示されます。
  14. [変数名] フィールドに availQuote と入力します。


  15. [変数の型の選択] フィールドで、[XML 型] リスト内の [AvailQuote.xsd] の横にある + をクリックし、[availQuote] を選択します。[変数の型] フィールドに org.example.avail.AvailQuoteDocument が表示されます。
  16. [OK] をクリックして [変数を作成] ダイアログ ボックスを閉じます。
  17. ノード ビルダを閉じるには、[閉じる] をクリックします。
  18. この手順で、Convert AvailList to AvailQuote XML ノードの設計が完了します。実行時に、XML 形式の在庫見積りデータが availQuote 変数に割り当てられます。

このノードのトランスフォーメーションに関する注意

priceAvailTransformations コントロールに対する convertAvailListToXML() メソッドは、在庫見積り XML データを作成するのに使用されます。convertAvailListToXML() への入力は、For Each ノードでの反復処理が完了した後に availProcessor コントロールから返される在庫データです。

[パッケージ・エクスプローラー] 内の [PriceAvailTransformations.java] をダブルクリックすると、ソース ビューにトランスフォーメーション コントロールが表示されます。[convertAvailListToXML] メソッドを右クリックし、ドロップダウン メニューから [XQuery ドキュメントへ移動] を選択すると、トランスフォーメーション ツールが開きます。以下の図は、convertAvailListToXML() メソッド用のマップを示しています。

前の図は、型なし XML データの繰り返しセットを含む XmlObjectList 型の変数のデータから、型付き XML 変数の繰り返し要素へのトランスフォーメーションを示しています。このトランスフォーメーションを行うには、ターゲット スキーマ内の繰り返し要素が、ルート要素の単一の子であることが必要です。この場合、availRequest が繰り返し要素で、availQuote 要素の単一の子です。対応する XQuery を表示するには、トランスフォーメーション ツールのソース ビューのタブをクリックします。

価格見積りと在庫見積りの結合

以下のタスクを実行します。

プロジェクトに TutorialJoin コントロールのインスタンスを作成するには

チュートリアル アプリケーションには TutorialJoin.java コントロールが用意されています。このコントロールは、Tutorial_Process_ApplicationWeb プロジェクト フォルダ内の requestquote フォルダにあります。TutorialJoin.java コントロールの作成方法については、「チュートリアル : 初めてのデータ トランスフォーメーション構築」を参照してください。

このコントロールのインスタンスをビジネス プロセスに追加するには、以下の手順を実行します。

  1. BEA Workshop 内にデータ パレットが表示されていない場合は、メニュー バーから [ウィンドウArrow symbolビューの表示Arrow symbolデータ パレット] を選択してください。
  2. [パッケージ・エクスプローラー] ペインで、TutorialJoin.java ファイルをクリックします。


  3. TutorialJoin.java ファイルを [パッケージ・エクスプローラー] ペインからデータ パレットにドラッグします。コントロールのインスタンス (tutorialJoin) が作成され、データ パレットに表示されます。
プロセスと TutorialJoin コントロールとの対話を設計するには

この手順では、tutorialJoin コントロールに対して以下のメソッドを呼び出すようにビジネス プロセスを設計します。

join(PriceQuoteDocument _priceQuoteDoc,
AvailQuoteDocument
_availQuoteDoc, float taxRate)

この join メソッドは、他のシステムからビジネス プロセスに返されたデータを結合し、そのビジネス プロセスのクライアントに返す 1 つの XML 応答ドキュメント (見積り) を作成します。

  1. データ パレット内の tutorialJoin コントロール インスタンスを展開し、以下のメソッドをクリックします。
  2. QuoteDocument join(org.example.price.PriceQuoteDocument _priceQuoteDoc,
    org.example.avail.AvailQuoteDocument
    _availQuoteDoc,float taxRate)
  3. デザイン ビューで、データ パレットのメソッドをドラッグして、RequestQuote ビジネス プロセスにドロップし、[Convert AvailList to AvailQuote XML] ノードの直後に配置します。
  4. ノード名を join から Combine Price and Avail Quotes に変更します。


  5. [Combine Price and Avail Quotes] ノードをダブルクリックします。ノード ビルダを開くと、[一般的な設定] タブが表示されます。
  6. tutorialJoin が [コントロール] フィールドに表示され、データ パレットからノードにドラッグした以下のメソッドが [メソッド] フィールドで選択されていることを確認します。
  7. QuoteDocument join(org.exampel.price.PriceQuoteDocument _priceQuoteDoc,
    org.example.avail.AvailQuoteDocument
    _availQuoteDoc,float taxRate
  8. [データの送信] タブをクリックして、ノード ビルダに 2 番目のタブを開きます。
  9. [コントロールが予期する値] フィールドには、以下の図に示すように、tutorialJoin コントロールに対する join メソッドが予期するデータ型が表示されます。



  10. [割り当てる変数を選択します] で、join() メソッドへの入力パラメータに予期される (コントロールが予期する値) データ型と一致するデータ型の変数を選択します。
    • PriceQuoteDocument 用には、[priceQuote (PriceQuote)] を選択する。
    • priceQuote は、ビジネス プロセスの For Each ループで priceProcessor サービスから返された価格見積りデータを保持します。

    • AvailQuoteDocument 用には、[availQuote (AvailQuote)] を選択する。
    • availQuote は、ビジネス プロセスの For Each ループで availProcessor サービスから返された在庫見積りデータを保持します。

    • float taxRate 用には、[taxRate (float)] を選択する。
    • taxRate は、taxCalculation サービスからビジネス プロセスに返された、出荷先に基づく消費税率を保持します。



  11. [データの受信] をクリックして、ノード ビルダに 3 番目のタブを開きます。
  12. [データの受信] タブの [コントロールが返す値] フィールドには、join() メソッドから返されるデータ型、QuoteDocument が表示されます。

  13. [割り当てる変数を選択します] で矢印をクリックし、[変数の新規作成...] を選択します。[変数を作成] ダイアログ ボックスが表示されます。


  14. [変数名] フィールドに Quote と入力します。
  15. 以下の図に示すように、[変数の選択] フィールドで、[XML] 型のリストから [quote] を選択します。


  16. [変数の型] フィールドに org.example.quote.QuoteDocument が表示されます。

  17. [OK] をクリックして新しい変数を作成します。Quote 変数が、[データの受信] タブと、データ パレットの [XML] リストに表示されます。
  18. ノード ビルダを閉じるには、[閉じる] をクリックします。
  19. この手順で、Combine Price and Avail Quotes ノードの設計が完了します。実行時に、XML 形式の在庫見積りデータが Quote 変数に割り当てられます。

  20. Workshop メニューから [ファイルArrow symbolすべて保管] を選択します。
  21. チュートリアルの Part III の残りの部分では、見積りをファイル システムに書き込み (この手順は省略可能です)、ビジネス プロセスにクライアント応答ノードを作成します。ビジネス プロセスは、作成した見積りをクライアント応答ノードを介してクライアントに返します。

    手順 10 : ファイル システムへの見積りの書き込み

    手順 11 : ビジネス プロセスからクライアントへの見積りの送信

関連トピック

トランスフォーメーション コントロールの作成方法と、この節で使用している TutorialJoin.java コントロールの設計方法については、「チュートリアル : 初めてのデータ トランスフォーメーション構築」を参照してください。


  ページの先頭       前  次