|
パラレル ノードを設計したときの作業により、ビジネス プロセスが For Each ノードを抜け出る時点で、価格見積りデータが priceList
変数に、在庫見積りデータが availList
変数に割り当てられます。priceList
変数と availList
変数の両方とも、データ型は XmlObjectList (型なし XML データのシーケンス) です。
この手順では、最初に、priceList
変数と availList
変数のデータを型なし XML データ (XmlObjectList
) から型付き XML データ (プロジェクトに用意されている XML スキーマに対して有効な XML) に変換します。その後で、型付き XML の価格データと在庫データを結合して、1 つの「見積り」ドキュメントを生成します。このドキュメントは、呼び出し元のクライアントにビジネス プロセスが送信する応答になります。
BEA Products では、以下の方法でトランスフォーメーションを作成できます。
RequestQuoteTransformation.java
が作成されました。これは、見積り要求メッセージに含まれていたデータ型を taxCalculation
コントロールへの入力にマップする必要があったときです。「手順 4 : Web サービスの呼び出し」の「ビジネス プロセスから税計算 Web サービスを呼び出すには」を参照してください。その後で、設計したパラレル ノード内のコントロール ノード上の RequestQuoteTransformation.java
(および関連付けられた XQ ファイル) に、いくつかのトランスフォーメーション メソッドを作成して追加しました。
トランスフォーメーション ファイルの PriceAvailTransformations.java
および TutorialJoin.java
は、この方法で作成され、チュートリアル アプリケーションに用意されています。前の手順 (手順 8 : 実行の並行パスの設計) で使用した PriceAvailTransformations.java
は、TutorialJoin.java
と同様に、この手順でも使用します。
この手順では、すでに計算されている価格データと在庫データを使用して 1 つの見積りドキュメントを作成するロジックを、ビジネス プロセス内に設計します。これを行うには、トランスフォーメーション ファイル PriceAvailTransformations.java
と TutorialJoin.java
を呼び出すコントロール ノードを設計する必要があります。
注意 : | これらのトランスフォーメーション ファイルの作成方法については、このチュートリアルでは説明していません。TutorialJoin.java の作成方法については、「チュートリアル : 初めてのデータ トランスフォーメーション構築」を参照してください。 |
クライアントに返す 1 つの見積りドキュメントを作成するこの手順では、以下のタスクを実行する必要があります。
以下の手順を実行して、価格リスト (For Each ループでの反復処理で作成されたリスト) を型付き XML データ型の変数に変換するノードを設計します。これを行うには、priceAvailTransformations コントロールのメソッドを使用します。
PriceQuoteDocument convertPriceListToXML
(QuoteRequestDocument _quoteRequestDoc, XmlObjectList _XmlObjectListDoc)
PriceQuoteDocument convertPriceListToXML
(org.example.request.QuoteRequestDocument _quoteRequestDoc, com.bae.xml.XmlObjectList _XmlObjectListDoc)
[コントロールが予期する値] フィールドには、priceAvailTransformations コントロールに対する convertPriceListToXML()
メソッドが予期するデータ型が表示されます。
注意 : | priceAvailTransformations コントロールに対する convertPriceListToXML() メソッドには、2 つの目的があります。まず XmlObjectList 価格データを型付き XML に変換し、その後で顧客名、出荷先、および価格見積りデータ (価格リスト) を 1 つの変数に結合する必要があります。convertPriceListToXML() メソッドは、XmlObjectList 型のパラメータで価格リストを受け取り、QuoteRequestDocument 型のパラメータで顧客名と出荷先を受け取ります。priceAvailTransformations コントロールの詳細については、「このノードのトランスフォーメーションに関する注意」を参照してください。 |
[コントロールが返す値] フィールドには、priceAvailTransformations コントロールに対する convertPriceListToXML()
メソッドから返されるデータ型、PriceQuoteDocument
が表示されます。
org.example.price.PriceQuoteDocument
が表示されます。
この手順で、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()
メソッド用のマップを示しています。
チュートリアル : 初めてのデータ トランスフォーメーション構築
以下の手順を実行して、在庫リスト (For Each ループでの反復処理で作成されたリスト) を型付き XML データ型の変数に変換するノードを設計します。これを行うには、priceAvailTransformations コントロールのメソッドを使用します。
AvailQuoteDocument convertAvailListToXML(com.bea.xml.XmlObjectList _XmlObjectListDoc)
AvailQuoteDocument convertAvailListToXML(com.bea.xml.XmlObjectList _XmlObjectListDoc)
[コントロールが予期する値] フィールドには、priceAvailTransformations コントロールに対する convertAvailListToXML()
メソッドが予期するデータ型、XmlObjectList
が表示されます。
[コントロールが返す値] フィールドには、priceAvailTransformations コントロールに対する convertAvailListToXML()
メソッドから返されるデータ型、AvailQuoteDocument
が表示されます。
org.example.avail.AvailQuoteDocument
が表示されます。
この手順で、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.java
コントロールが用意されています。このコントロールは、Tutorial_Process_ApplicationWeb プロジェクト フォルダ内の requestquote フォルダにあります。TutorialJoin.java
コントロールの作成方法については、「チュートリアル : 初めてのデータ トランスフォーメーション構築」を参照してください。
このコントロールのインスタンスをビジネス プロセスに追加するには、以下の手順を実行します。
この手順では、tutorialJoin コントロールに対して以下のメソッドを呼び出すようにビジネス プロセスを設計します。
join
(PriceQuoteDocument
_priceQuoteDoc,
AvailQuoteDocument_availQuoteDoc,
float
taxRate)
この join
メソッドは、他のシステムからビジネス プロセスに返されたデータを結合し、そのビジネス プロセスのクライアントに返す 1 つの XML 応答ドキュメント (見積り) を作成します。
QuoteDocument join
(org.example.price.PriceQuoteDocument
_priceQuoteDoc,
org.example.avail.AvailQuoteDocument_availQuoteDoc,float
taxRate)
QuoteDocument join
(org.exampel.price.PriceQuoteDocument
_priceQuoteDoc,
org.example.avail.AvailQuoteDocument_availQuoteDoc,float
taxRate
[コントロールが予期する値] フィールドには、以下の図に示すように、tutorialJoin コントロールに対する join
メソッドが予期するデータ型が表示されます。
join()
メソッドへの入力パラメータに予期される (コントロールが予期する値) データ型と一致するデータ型の変数を選択します。
priceQuote は、ビジネス プロセスの For Each ループで priceProcessor サービスから返された価格見積りデータを保持します。
availQuote は、ビジネス プロセスの For Each ループで availProcessor サービスから返された在庫見積りデータを保持します。
taxRate は、taxCalculation サービスからビジネス プロセスに返された、出荷先に基づく消費税率を保持します。
[データの受信] タブの [コントロールが返す値] フィールドには、join()
メソッドから返されるデータ型、QuoteDocument
が表示されます。
[変数の型] フィールドに org.example.quote.QuoteDocument
が表示されます。
この手順で、Combine Price and Avail Quotes ノードの設計が完了します。実行時に、XML 形式の在庫見積りデータが Quote 変数に割り当てられます。
チュートリアルの Part III の残りの部分では、見積りをファイル システムに書き込み (この手順は省略可能です)、ビジネス プロセスにクライアント応答ノードを作成します。ビジネス プロセスは、作成した見積りをクライアント応答ノードを介してクライアントに返します。
トランスフォーメーション コントロールの作成方法と、この節で使用している TutorialJoin.java コントロールの設計方法については、「チュートリアル : 初めてのデータ トランスフォーメーション構築」を参照してください。