|
パラレル ノードを設計したときの作業により、ビジネス プロセスが For Each ノードを抜け出る時点で、価格見積りが priceList 変数に、在庫情報が availList 変数に割り当てられます。priceList 変数と availList 変数の両方とも、データ型は XmlObjectList (型なし XML データのシーケンス) です。
この手順では、最初に、priceList 変数と availList 変数のデータを型なし XML データ (XmlObjectList) から型付き XML データ (プロジェクトに用意されている XML スキーマに対して有効な XML) に変換します。その後で、型付き XML の価格データと在庫データを結合して、1 つの「見積り」ドキュメントを生成します。このドキュメントは、呼び出し元のクライアントにビジネス プロセスが送信する応答になります。
| 注意 : | WLI では、以下の方法でトランスフォーメーションを作成できます。 |
RequestQuoteTransformation.java が作成されました。これは、RFQ メッセージに含まれていたデータ型を taxCalculation コントロールへの入力にマップする必要があったときです (「手順 4 : Web サービスの呼び出し」の、ビジネス プロセスから税計算 Web サービスを呼び出す手順を参照)。その後で、設計したパラレル ノード内のコントロール ノード上の RequestQuoteTransformation.java (および関連付けられた XQ ファイル) に、いくつかのトランスフォーメーション メソッドを作成して追加しました。| 注意 : | トランスフォーメーション ファイルは、コントロール ノードを介してビジネス プロセスから呼び出すことができます。チュートリアル アプリケーションには、以下のトランスフォーメーション ファイルが用意されています。 |
| 注意 : | 「手順 8 : 実行の並行パスの設計」では、PriceAvailTransformations.java を使用しました。 |
| 注意 : | この手順では、これら両方のトランスフォーメーション ファイルを使用します。 |
| 注意 : | これらのトランスフォーメーション ファイルの作成方法については、このチュートリアルでは説明していません。詳細については、『チュートリアル : 初めてのデータ トランスフォーメーション構築』を参照してください。 |
この手順では、価格および在庫情報を使用して 1 つの見積りドキュメントを作成するロジックを、ビジネス プロセス内に設計します。これを行うには、トランスフォーメーション ファイル PriceAvailTransformations.java と TutorialJoin.java を呼び出すコントロール ノードを設計する必要があります。
以下の手順を実行して、価格リスト (For Each ループでの反復処理で作成されたリスト) を型付き XML 変数に変換するノードを設計します。
priceAvailTransformations] コントロール インスタンス下にある [PriceQuoteDocument convertPriceListToXML()] メソッドを選択します。convertPriceListToXML から Convert PriceList To PriceQuote XML に変更します。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 変数に割り当てられます。
| 注意 : | 価格見積り XML データは、前の手順で priceAvailTransformations コントロールに対する convertPriceListToXML() メソッドによって作成されています。 |
| 注意 : | トランスフォーメーション メソッドへの入力には、クライアントから (requestXML 変数で) 送られた元のデータと、For Each ノードでの反復処理後に priceProcessor コントロールから (priceList 変数で) 返された価格データが含まれます。 |
| 注意 : | convertPriceListToXML() メソッドは、requestXML 変数から顧客名と出荷先を、priceList 変数から項目 ID と価格のリストを取得し、データを新しい変数 (priceQuote) にマップします。 |
| 注意 : | [パッケージ・エクスプローラー] ビュー内の [PriceAvailTransformations.java] をダブルクリックすると、[ソース] ビューにトランスフォーメーション コントロールが表示されます。データ トランスフォーメーションを表示するには、[convertAvailXMLtoXMLObj] メソッドを右クリックして表示されるメニューから、[トランスフォーメーション XQuery ドキュメントへ移動] を選択します。 |
チュートリアル : 初めてのデータ トランスフォーメーション構築
以下の手順を実行して、在庫リスト (For Each ループでの反復処理で作成されたリスト) を型付き XML 変数に変換するノードを設計します。
priceAvailTransformations コントロール インスタンスを展開し、以下のメソッドを選択します。AvailQuoteDocument convertAvailListToXML(com.bea.xml.XmlObjectList _XmlObjectListDoc)Convert AvailList to AvailQuote XML に変更します。priceAvailTransformations コントロールと以下のメソッドが [一般的な設定] タブで選択されていることを確認します。 AvailQuoteDocument convertAvailListToXML(com.bea.xml.XmlObjectList _XmlObjectListDoc)
[コントロールが予期する値] フィールドには、priceAvailTransformations コントロールに対する convertAvailListToXML() メソッドに必要なデータ型、XmlObjectList が表示されます。
[コントロールが返す値] フィールドには、priceAvailTransformations コントロールに対する convertAvailListToXML() メソッドから返されるデータ型、AvailQuoteDocument が表示されます。
[型名] フィールドに [org.example.avail.AvailQuoteDocument] と表示されます。
この手順で、Convert AvailList to AvailQuote XML ノードの設計が完了します。実行時に、XML 形式の在庫情報が availQuote 変数に割り当てられます。
| 注意 : | 在庫の XML ドキュメントは、priceAvailTransformations コントロールに対する convertAvailListToXML() メソッドで作成されます。convertAvailListToXML() への入力は、For Each ノードでの反復処理後に availProcessor コントロールから返されるデータです。 |
| 注意 : | [パッケージ・エクスプローラー] ビュー内の [PriceAvailTransformations.java] をダブルクリックすると、[ソース] ビューにトランスフォーメーション コントロールが表示されます。データ トランスフォーメーションを表示するには、[convertAvailListToXML] メソッドを右クリックして表示されるメニューから、[トランスフォーメーション XQuery ドキュメントへ移動] を選択します。 |
| 注意 : | 以下の図は、convertAvailListToXML() メソッドのデータ トランスフォーメーションを示しています。 |
![[コントロールが予期する値] フィールド](wwimages/availquotemap.gif)
| 注意 : | この図は、型なし XML データの繰り返しセットを含む XmlObjectList 型の変数のデータから、型付き XML 変数の繰り返し要素へのトランスフォーメーションを示しています。 |
| 注意 : | このトランスフォーメーションを行うには、ターゲット スキーマ内の繰り返し要素が、ルート要素の単一の子であることが必要です。この場合、availRequest が繰り返し要素で、availQuote 要素の単一の子です。対応する XQuery を表示するには、トランスフォーメーション ツールの [ソース] ビューのタブをクリックします。 |
以下の手順を実行して、ビジネス プロセスに TutorialJoin.java コントロールのインスタンスを追加します。
TutorialJoin.java] ファイルを選択します。これは、Tutorial_Process_Application_Web\requestquote プロジェクト フォルダ内にあります。| 注意 : | TutorialJoin.java コントロールの構築については、『チュートリアル : 初めてのデータ トランスフォーメーション構築』を参照してください。 |
TutorialJoin.java ファイルを [パッケージ・エクスプローラー] ビューから [データ パレット] までドラッグします。コントロールのインスタンス (tutorialJoin) が作成され、[データ パレット] に表示されます。
この手順では、tutorialJoin コントロールに対して以下のメソッドを呼び出すようにビジネス プロセスを設計します。
join(PriceQuoteDocument _priceQuoteDoc,
AvailQuoteDocument _availQuoteDoc, float taxRate)
このメソッドは、他のシステムからビジネス プロセスに返されたデータを結合し、そのビジネス プロセスを呼び出したクライアントに返す 1 つの XML 応答ドキュメント (見積り) を作成します。
QuoteDocument join
(org.example.price.PriceQuoteDocument _priceQuoteDoc,
org.example.avail.AvailQuoteDocument _availQuoteDoc,float taxRate)tutorialJoin] が表示され、[メソッド] フィールドで以下のメソッドが選択されていることを確認します。 QuoteDocument join
(org.example.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] と表示されます。Quote 変数が、[データの受信] タブと [データ パレット] に表示されます。
この手順で、Combine Price and Avail Quotes ノードの設計が完了します。実行時に、XML 形式の在庫見積りデータが Quote 変数に割り当てられます。
チュートリアルのこのパートに残された最後の作業では、見積りをファイル システムに書き込み (この手順は省略可能です)、ビジネス プロセスにクライアント応答ノードを作成します。ビジネス プロセスは、作成した見積りをクライアント応答ノードを介してクライアントに返します。
|