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

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

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

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

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

注意 : WLI では、以下の方法でトランスフォーメーションを作成できます。
注意 : トランスフォーメーション ファイルは、コントロール ノードを介してビジネス プロセスから呼び出すことができます。チュートリアル アプリケーションには、以下のトランスフォーメーション ファイルが用意されています。
注意 : 手順 8 : 実行の並行パスの設計」では、PriceAvailTransformations.java を使用しました。
注意 : この手順では、これら両方のトランスフォーメーション ファイルを使用します。
注意 : これらのトランスフォーメーション ファイルの作成方法については、このチュートリアルでは説明していません。詳細については、『チュートリアル : 初めてのデータ トランスフォーメーション構築』を参照してください。

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

この手順では以下の作業を行います。

 


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

以下の手順を実行して、価格リスト (For Each ループでの反復処理で作成されたリスト) を型付き XML 変数に変換するノードを設計します。

  1. [データ パレット] 内の [priceAvailTransformations] コントロール インスタンス下にある [PriceQuoteDocument convertPriceListToXML()] メソッドを選択します。
  2. そのメソッドを [データ パレット] から [デザイン] ビューまでドラッグし、以下の図に示すように RequestQuote ビジネス プロセスの For Each ブロックの直後にドロップします。
  3. 図 10-1 価格リストを XML ドキュメントに変換するためのコントロールの追加


    価格リストを XML ドキュメントに変換するためのコントロールの追加

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

    図 10-2 [コントロールが予期する値] フィールド


    [コントロールが予期する値] フィールド

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

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

  15. [変数名] フィールドに priceQuote と入力します。
  16. [XML] タブを選択します。
  17. [型付き] ノードを [schemas] ノードまで展開 (ノードの横にある [+] をクリック) します。
  18. [schemas] ノード下の [PriceQuote.xsd] を展開し、[priceQuote] を選択します。
  19. [型名] フィールドに [org.example.price.PriceQuoteDocument] と表示されます。

  20. [OK] をクリックして [変数を作成] ダイアログ ボックスを閉じます。
  21. [閉じる] をクリックして、ノード ビルダを閉じます。
  22. この手順で、Convert PriceList to PriceQuote XML ノードの設計が完了します。実行時に、型付き XML 形式の価格見積り、および顧客名と出荷先が、priceQuote 変数に割り当てられます。

注意 : 価格見積り XML データは、前の手順で priceAvailTransformations コントロールに対する convertPriceListToXML() メソッドによって作成されています。
注意 : トランスフォーメーション メソッドへの入力には、クライアントから (requestXML 変数で) 送られた元のデータと、For Each ノードでの反復処理後に priceProcessor コントロールから (priceList 変数で) 返された価格データが含まれます。
注意 : convertPriceListToXML() メソッドは、requestXML 変数から顧客名と出荷先を、priceList 変数から項目 ID と価格のリストを取得し、データを新しい変数 (priceQuote) にマップします。
注意 : [パッケージ・エクスプローラー] ビュー内の [PriceAvailTransformations.java] をダブルクリックすると、[ソース] ビューにトランスフォーメーション コントロールが表示されます。データ トランスフォーメーションを表示するには、[convertAvailXMLtoXMLObj] メソッドを右クリックして表示されるメニューから、[トランスフォーメーション Arrow symbol XQuery ドキュメントへ移動] を選択します。

関連トピック

XQuery Mapper を使用したデータの変換

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

 


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

以下の手順を実行して、在庫リスト (For Each ループでの反復処理で作成されたリスト) を型付き XML 変数に変換するノードを設計します。

  1. [データ パレット] 内の priceAvailTransformations コントロール インスタンスを展開し、以下のメソッドを選択します。
  2. AvailQuoteDocument convertAvailListToXML(com.bea.xml.XmlObjectList _XmlObjectListDoc)
  3. [データ パレット] からメソッドをドラッグして、[デザイン] ビュー内の RequestQuote ビジネス プロセスの [Convert PriceList to PriceQuote XML] ノードの直後にドロップします。
  4. ノード名を Convert AvailList to AvailQuote XML に変更します。
  5. ノードをダブルクリックし、そのノード ビルダを開きます。
  6. priceAvailTransformations コントロールと以下のメソッドが [一般的な設定] タブで選択されていることを確認します。
  7. AvailQuoteDocument convertAvailListToXML(com.bea.xml.XmlObjectList _XmlObjectListDoc)
  8. [データの送信] タブを選択します。
  9. [コントロールが予期する値] フィールドには、priceAvailTransformations コントロールに対する convertAvailListToXML() メソッドに必要なデータ型、XmlObjectList が表示されます。

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

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

  15. [変数名] フィールドに availQuote と入力します。
  16. [XML] タブを選択します。
  17. [型付き] ノードを [schemas] ノードまで展開 (ノードの横にある [+] をクリック) します。
  18. [schemas] ノード下の [AvailQuote.xsd] を展開し、[availQuote] を選択します。
  19. [型名] フィールドに [org.example.avail.AvailQuoteDocument] と表示されます。

  20. [OK] をクリックして [変数を作成] ダイアログ ボックスを閉じます。
  21. [閉じる] をクリックして、ノード ビルダを閉じます。
  22. この手順で、Convert AvailList to AvailQuote XML ノードの設計が完了します。実行時に、XML 形式の在庫情報が availQuote 変数に割り当てられます。

注意 : 在庫の XML ドキュメントは、priceAvailTransformations コントロールに対する convertAvailListToXML() メソッドで作成されます。convertAvailListToXML() への入力は、For Each ノードでの反復処理後に availProcessor コントロールから返されるデータです。
注意 : [パッケージ・エクスプローラー] ビュー内の [PriceAvailTransformations.java] をダブルクリックすると、[ソース] ビューにトランスフォーメーション コントロールが表示されます。データ トランスフォーメーションを表示するには、[convertAvailListToXML] メソッドを右クリックして表示されるメニューから、[トランスフォーメーション Arrow symbol XQuery ドキュメントへ移動] を選択します。
注意 : 以下の図は、convertAvailListToXML() メソッドのデータ トランスフォーメーションを示しています。

[コントロールが予期する値] フィールド

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

 


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

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

TutorialJoin コントロールのインスタンスの作成

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

  1. [パッケージ・エクスプローラー] ビューで、[TutorialJoin.java] ファイルを選択します。これは、Tutorial_Process_Application_Web\requestquote プロジェクト フォルダ内にあります。
  2. 注意 : TutorialJoin.java コントロールの構築については、『チュートリアル : 初めてのデータ トランスフォーメーション構築』を参照してください。
  3. TutorialJoin.java ファイルを [パッケージ・エクスプローラー] ビューから [データ パレット] までドラッグします。コントロールのインスタンス (tutorialJoin) が作成され、[データ パレット] に表示されます。

プロセスと TutorialJoin コントロールの対話の設計

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

join(PriceQuoteDocument _priceQuoteDoc,
AvailQuoteDocument _availQuoteDoc, float taxRate)

このメソッドは、他のシステムからビジネス プロセスに返されたデータを結合し、そのビジネス プロセスを呼び出したクライアントに返す 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. ノード名を Combine Price and Avail Quotes に変更します。
  5. [Combine Price and Avail Quotes] ノードをダブルクリックします。ノード ビルダを開くと、[一般的な設定] タブが表示されます。
  6. [コントロール] フィールドに [tutorialJoin] が表示され、[メソッド] フィールドで以下のメソッドが選択されていることを確認します。
  7. QuoteDocument join
    (org.example.price.PriceQuoteDocument _priceQuoteDoc,
    org.example.avail.AvailQuoteDocument _availQuoteDoc,float taxRate
  8. [データの送信] タブを選択します。
  9. [コントロールが予期する値] フィールドには、以下の図に示すように、tutorialJoin コントロールに対する join メソッドが予期するデータ型が表示されます。


    [コントロールが予期する値] フィールド

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

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

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

  11. [データの受信] タブを選択します。[コントロールが返す値] フィールドには、join() メソッドから返されるデータ型、QuoteDocument が表示されます。
  12. [割り当てる変数を選択します] フィールドで、[変数の新規作成...] を選択します。
  13. [変数を作成] ダイアログ ボックスが表示されます。

  14. [変数名] フィールドに Quote と入力します。
  15. [XML] タブを選択します。
  16. [型付き] ノードを [schemas] ノードまで展開 (ノードの横にある [+] をクリック) します。
  17. [schemas] ノード下の [Quote.xsd] を展開し、[quote] を選択します。[型名] フィールドに [org.example.quote.QuoteDocument] と表示されます。
  18. [OK] をクリックして新しい変数を作成します。Quote 変数が、[データの受信] タブと [データ パレット] に表示されます。
  19. [閉じる] をクリックして、ノード ビルダを閉じます。
  20. この手順で、Combine Price and Avail Quotes ノードの設計が完了します。実行時に、XML 形式の在庫見積りデータが Quote 変数に割り当てられます。

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


  ページの先頭       前  次