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

     前  次    目次     
ここから内容

手順 8 : 実行の並行パスの設計

前の手順では、見積り要求ドキュメント内の繰り返し要素のセットを反復処理する For Each ループを作成しました。この手順では、For Each ループ内のアクティビティを設計します。つまり、ビジネス プロセスのループで行う反復処理ごとに実行されるアクティビティを設計します。

価格や在庫情報の処理で行ったように、ビジネス プロセスが複数の異なるシステムと対話するときには、タスクを並行実行することによってスループットを向上させることができます。実行の「並行」ブランチを複数作成するには、ビジネス プロセスにパラレル ノードを追加します。

このチュートリアルの例では、ビジネス プロセスが価格情報と在庫情報の両方を判断して、見積りを作成し、クライアントに返せるようにする必要があります。このビジネス プロセスは、価格の計算と在庫の計算を行う 2 つの外部システムと通信するため、並行実行を設定することによってスループットが向上します。ビジネス プロセスは、2 つの外部システムそれぞれから応答を受け取ります。

外部システムとは、ビジネス プロセスが必要とする情報を返すあらゆるリソース (他のビジネス プロセス、Web サービス、EJB、データベース、ファイル システムなど) を指します。ビジネス プロセスは、コントロールを介してこうしたリソースを対話します。このチュートリアルでは 2 つの Web サービスを使用します。1 つは、クライアントから受け取った要求ドキュメントで指定された widgetID ごとに価格を返す Web サービスで、もう 1 つは、要求ドキュメントで指定された widgetID および quantity に基づいて在庫情報を返す Web サービスです。RequestQuote ビジネス プロセスが対話するコントロールは、プロジェクト フォルダ \Tutorial_Process_ApplicationWeb\requestquote\services に用意されています。用意されているコントロールは、PriceProcessorControl.java および AvailProcessorControl.java です。

関連トピック

ビジネス プロセスでのパラレル実行について

パラレル ノードの作成

ビジネス プロセスにパラレル ノードを追加するには
  1. ビジネス プロセス RequestQuote.java がデザイン ビューに表示されていることを確認します。
  2. デザイン ビューで、ノード パレットの [ Parallel] を選択し、[Parallel] ノードをビジネス プロセスの [For Each] ループ内までドラッグ アンド ドロップします。
  3. Enter〕を押して、ノードに Parallel という名前を付けます。
  4. 以下の図に示すように、デザイン ビューが更新され、パラレル ノードが表示されます。



  5. パラレル ノード内に含まれているブランチの名前を、ビジネス プロセスで並行実行するアクティビティを識別する名前に変更します。
    • 左側の [Branch] のラベルをダブルクリックして Get Price と入力し、〔Enter〕を押す。
    • 右側の [Branch] のラベルをダブルクリックして Get Availability と入力し、〔Enter〕を押す。
結合条件に関する注意

デフォルトでは、パラレル ノードによって結合条件 AND が指定されます。この結合条件は、Parallel ブランチ ライン上では で表現されます。この場合、すべてのブランチのアクティビティが完了してからでないと、実行フローはパラレル ノードの次のノードに進みません。

見積り要求ビジネス プロセスの場合は、パラレル ノードの両方のブランチを完了させるので、結合条件 AND は変更しないでください。

結合条件 OR が指定された場合は、1 つのブランチのアクティビティが完了すると、他のすべてのブランチのアクティビティの実行が終了され、実行フローはパラレル ノードの次のノードに進みます。結合条件 OR は、デザイン ビューでは で表現されます。

デザイン ビューでは、[join condition] プロパティをプロパティ エディタで表示して編集することができます。パラレル ノードの上部にある または をクリックすると、パラレル ノードのプロパティがプロパティ エディタに表示されます。パラレル ノードのプロパティ エディタは、以下の図のようになります。

価格データと在庫データを作成するためのロジックの作成

この節では、以下について学習します。

価格と在庫の情報を返す 2 つの Web サービスと対話するパラレル ノードを設計するには、以下のタスクを実行します。

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

データ パレットには PriceProcessorControl.java および AvailProcessorControl.java があります。コントロールは、[パッケージ・エクスプローラー] の Tutorial_Process_Application_WEB\src\requestquote.services フォルダにあります。この節では、アプリケーション内に適切なコントロールを作成し、ビジネス プロセスとそれらのコントロールとの間の通信を設計する方法について説明します。

  1. [データ パレット] タブの をクリックして、ビジネス プロセスが対話できるリソースを表すコントロールのリストを表示します。
  2. [ローカル コントロール] を選択し、[priceProcessorControl - requestquote.Services] を選択します。コントロールの挿入ダイアログ ボックスが表示されます。
  3. [フィールド名] フィールドに priceProcessorControl と入力し、[終了] をクリックします。
  4. 同様に、[ローカル コントロール] を選択し、[availProcessorControl - requestquote.Services] を選択します。コントロールの挿入ダイアログ ボックスが表示されます。
  5. [フィールド名] フィールドに availProcessorControl と入力し、終了をクリックします。
  6. Web サービス コントロール インスタンス [priceProcessorControl] および [availProcessorControl] がデータ パレットに追加されます。



ビジネス プロセスにコントロール ノードを追加するには

Part I と Part II では、データ パレットの適切なコントロールからデザイン ビューのビジネス プロセスまでメソッドをドラッグすることによって、ビジネス プロセスにコントロール ノードを作成できることを学びました。ノード パレットから [Control Send]、[Control Receive]、または [Control Send with Return] を選択して、コントロール ノードを作成することもできます。その後で、作成したコントロール ノードに適切なメソッドをバインドします。この節では、後者の方法を使用します。

ノード パレットの以下のノードを、パラレル ノードの各ブランチに追加します。

デザイン ビューで、各ノードを選択してビジネス プロセスまでドラッグ アンド ドロップし、Parallel ブランチ上に配置して、以下の図に示すような [Parallel] グループを作成します。

このようにして、各ブランチに以下の実行フローが設計されます。

  1. コントロール送信ノードから、コントロールを介してリソースを呼び出す。
  2. コントロール受信ノードで、コントロールからの応答を待機する。
  3. 戻り値のあるコントロール送信ノードで、コントロールへの同期呼び出しを行う。このノードでは、XML ドキュメントを構成するトランスフォーメーションを呼び出します。For Each ループのそれぞれの反復処理について、コントロールから返される応答データがこの XML ドキュメントに追加されます。
Get Price ブランチのアクティビティを設計するには
  1. Get Price ブランチのノードの名前を、実行順に Request PriceReceive PriceCreate PriceList に変更します。
  2. 以下のタスクを実行します。
Request Price ノードを設計するには
  1. [Request Price] ノードをダブルクリックし、そのノード ビルダを開きます。ノード ビルダを開くと、[一般的な設定] タブが表示されます。
  2. [コントロール] フィールドの横の矢印をクリックして、プロジェクト内のコントロールのインスタンスのドロップダウン リストを表示し、[priceProcessorControl] を選択します。
  3. [メソッド] パネルには、priceProcessorControl で呼び出すことのできる「非同期送信メソッド」のリストが表示されます。

  4. メソッド void getPrice(int itemID_arg) を選択します。
  5. [データの送信] タブをクリックして、ノード ビルダに 2 番目のタブを開きます。
  6. デフォルトでは、[データの送信] タブを開くと [変数の割り当て] ペインが表示されます。[コントロールが予期する値] フィールドには、priceProcessor Web サービスがエクスポーズする getPrice() メソッドが予期するデータ型で int itemID と表示されます。

    注意 : priceProcessor サービスは、要求された項目の ID を入力に使用し、そのウィジェットの価格を返します。
  7. [トランスフォーメーション] を選択して、[データの送信] タブのモードを切り替えます。


  8. 注意 : この場合は、priceProcessorControl への入力として求められるデータ型が int で、For Each ループ内の widgetId の値を保持する iter_forEach1 変数が XML 型である (WidgetRequestDocumentXML スキーマに対して有効である) ため、モードを切り替える必要があります。

    この反復変数は、For Each ループで反復処理する繰り返し要素を指定したときに作成されたものです。この変数は実行時に現在の widgetRequest 要素 (For Each ループで現在処理中の要素) を保持します。「ビジネス プロセス内の For Each ループの設計」を参照してください。
  9. [変数の選択] をクリックしてプロジェクト内の変数を表示し、[iter_forEach1 (widgetRequest)] を選択します。


  10. [トランスフォーメーションの作成] をクリックします
  11. トランスフォーメーション ツールが開き、[iter_forEach1 (widgetRequest)] 変数が [ソース] ペインに、[int] が [対象] ペインに表示されます。

  12. [ソース] ペインの [widgetID] をクリックし、[対象] ペインの [int] の上にドラッグします。マップ ペインで、widgetID 要素と int 要素を結ぶ線が描画されます。これは 2 つのデータ型間のトランスフォーメーションを表します。


  13. マップ ペインに線を描画すると、次の警告が表示されます。

    ソース ノード [widgetId] と対象ノード [int] のデータ型が一致しません。型変換が行われます。
    注意 : このトランスフォーメーションを作成すると、プロジェクトにすでに作成され、チュートリアル アプリケーションであらかじめ構築された RequestQuoteTransformation.java の下に、新しいメソッドが作成されます。これは、Tutorial_Process_Application_WEB/requestquote フォルダ内にあります。このトランスフォーメーション メソッド用のクエリが含まれている、RequestQuotepriceProcessorControlgetPrice.xq という名前の新しい XQ ファイルも作成されます。「トランスフォーメーションに関する注意」を参照してください。
  14. ナビゲーション ペインで [RequestQuote.java] をクリックして、プロセスに戻ります。
  15. Request Price ノード ビルダを閉じるには、[閉じる] をクリックします。
  16. この手順で、Request Price ノードの設計が完了します。

Receive Price ノードを設計するには
  1. [Receive Price] ノードをダブルクリックし、そのノード ビルダを開きます。ノード ビルダを開くと、[一般的な設定] タブが表示されます。
  2. [コントロール] フィールドの横の矢印をクリックして、プロジェクト内のコントロールのインスタンスのリストを表示し、[priceProcessor] を選択します。
  3. [メソッド] パネルには、priceProcessor コントロールの「非同期受信メソッド」のリストが表示されます。

  4. リストから以下のメソッドを選択します。
  5. void returnPrice(int itemID_arg,float price_arg)
  6. [データの受信] をクリックして、ノード ビルダに 2 番目のタブを開きます。
  7. [コントロールが返す値] フィールドには、priceProcessor Web サービスに対する returnPrice(int itemID, float price) メソッドで返されるデータ型が表示されます。



    PriceProcessor サービスは itemID (int) を入力に使用し、int 型の itemID および float 型の価格の値を返します。

    この場合は、priceProcessor サービスから返されるデータを XML 型の変数に割り当てるため、前の図に示されている [変数の割り当て] モードから [トランスフォーメーション] モードに切り替える必要があります。切り替えるには、ビジネス プロセスで、priceProcessor サービスから返された Java データ型を型付き XML に変換する必要があります。

  8. [トランスフォーメーション] をクリックします。以下の図のように、[データの受信] タブが表示されます。
  9. [変数の選択] をクリックし、[変数の新規作成] をクリックします。[変数を作成] ダイアログ ボックスが表示されます。
  10. [変数名] フィールドに price と入力します。
  11. [変数の型の選択] ペインで [XML] が選択されていることを確認します。
  12. XML 型型付きフォルダのリストを展開し、priceQuote.xsd の横にある [+] をクリックして [priceRequest] を選択します。[変数の型] フィールドに [org.example.price.PriceRequestDocument] が表示されます。


  13. [OK] をクリックします。[変数を作成] ダイアログ ボックスが閉じ、新しい変数が [データの受信] タブに表示されます。この変数は、XML 型変数としてデータ パレットにも表示されます。
  14. [データの受信] タブで、[トランスフォーメーションの作成] をクリックします。トランスフォーメーション ツールが開き、int (itemID) および float (price) が [ソース] ペインに、price 変数が [対象] ペインに表示されます。
  15. 以下の図に示すように、[ソース] ペインの要素を [対象] ペインの要素にマップします。
  16. itemIDwidgetId にマップ
    price
    price にマップ



    注意 : このトランスフォーメーションを作成すると、チュートリアル アプリケーション用にプロジェクトにすでに作成され、ビルドされている RequestQuoteTransformation.java の下に、新しいメソッドが作成されます。これは、Tutorial_Process_Application_WEB/requestquote フォルダ内にあります。このトランスフォーメーション メソッド用のクエリが含まれている、新しい XQ ファイルも作成されます。
  17. ビジネス プロセスに戻るには、[パッケージ・エクスプローラー] 内の [RequestQuote.java] をクリックします。
  18. Receive Price ノード ビルダを閉じるには、[閉じる] をクリックします。
  19. この手順で、Receive Price ノードの設計が完了します。

Create PriceList ノードを設計するには

この手順では、プロジェクトに用意されているトランスフォーメーション コントロール PriceAvailTransformations を使用して、priceProcessor コントロールから (For Each ループでの反復処理ごとに) 返される価格データを単一の変数に追加します。

前にビジネス プロセスのノードを設計したときに、必要に応じて、1 つのトランスフォーメーションに対するトランスフォーメーション メソッドを作成しました。そのトランスフォーメーション メソッドは、ビジネス プロセスがクライアントやコントロールとやり取りしたデータをマップするためのものでした。ここでは、別の方法でトランスフォーメーションを使用します。Create PriceList ノードの場合は、クライアントやコントロールにデータが送信されません。その代わりに、トランスフォーメーションが、ビジネス プロセスからの入力として「型付き」XML データを受け取り、「型なし」 XML (XmlObject) を返します。ビジネス プロセスは、For Each ループの反復処理ごとに返されるデータを単一の変数に追加して、XML データの繰り返しシーケンスを作成する必要があります。For Each ループ内のこのような XML データの繰り返しシーケンスを保持できる変数は、XmlObjectList 型の変数です。型付き変数と XmlObject 変数の両方とも、XmlObjectList 型の変数に追加できます。「XmlObjectList データ型の使用に関する注意」を参照してください。

注意 : このトランスフォーメーションは、チュートリアル アプリケーションであらかじめ構築されています。このトランスフォーメーションは Tutorial_Process_Application_WEB\requestquote フォルダ内にあります。

PriceAvailTransform.java ファイルの作成方法については、このチュートリアルでは説明していません。トランスフォーメーションの詳細については、「トランスフォーメーションに関する注意」を参照してください。
プロジェクトに PriceAvailTransformations コントロールのインスタンスを作成するには
  1. BEA Workshop 内にデータ パレットが表示されていない場合は、メニュー バーから次のように選択します。
    [ウィンドウArrow symbolビューの表示Arrow symbolデータ パレット]
  2. [パッケージ・エクスプローラー] ペインで priceAvailTransformations.java ファイルをクリックします。
  3. [パッケージ・エクスプローラー] ペインの PriceAvailTransformations.java ファイルをデータ パレットの [コントロール] ペインまでドラッグします。以下の図に示すように、コントロールのインスタンス (priceAvailTransformations) が作成され、データ パレットに表示されます。


Create PriceList ノードとトランスフォーメーションとの対話を設計するには
  1. 前の図に示すように、データ パレットの [priceAvailTransformations] インスタンスを展開し、以下のメソッドをクリックします。
  2. XmlObject convertPriceXMLtoXMLObj(org.example.price.PriceRequestDocument _priceRequestDoc)
  3. データ パレットからメソッドをドラッグし、デザイン ビューの [Create PriceList] ノードにドロップします。[Create Price List] ノードは、以下の図に示すように、メソッドのバインドを反映して変更されます。


  4. [Create PriceList] ノードをダブルクリックし、そのノード ビルダを開きます。ノード ビルダを開くと、[一般的な設定] タブが表示されます。
  5. ノードまでドラッグしたメソッドが選択されていることを確認してください。
  6. XmlObject convertPriceXMLtoXMLObj(org.example.price.PriceRequestDocument _priceRequestDoc)
  7. [データの送信] タブをクリックして、ノード ビルダに 2 番目のタブを開きます。
  8. [コントロールが予期する値] フィールドには、priceAvailTransformations コントロールに対する convertPriceXMLtoXMLObj() メソッドが予期するパラメータのデータ型と名前、PriceRequestDocument _priceRequestDoc が表示されます。

  9. [割り当てる変数を選択します] の下のフィールドの矢印をクリックして変数のリストを表示し、[price (PriceRequestDocument)] を選択します。
  10. この場合、price 変数のデータ型 (PriceRequestDocument) は、priceAvailTransformations が予期するデータのデータ型と一致します。

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

    XmlObject は、型なし XML 形式のデータを指定する Java データ型です。つまり、このデータ型は、XML スキーマに対して「有効でない」 XML データを表します。

  13. [割り当てる変数を選択します] の下のフィールドの矢印をクリックし、[変数の新規作成 ...] を選択します。[変数を作成] ダイアログ ボックスが表示されます。
  14. [変数名] フィールドに priceList と入力します。
  15. 必要に応じて、[変数の型の選択] ペインで [XML] を選択して、アプリケーション内の XML データ型の表現を表示します (デフォルトでは [XmlObject] が選択されています。次の手順でこの選択を変更する必要があります)。
  16. [XmlObjectList] を選択し、[OK] をクリックします。
  17. [データの受信] タブで、[割り当てる変数を選択します :] リストから [priceList(XmlObjectList)] を選択します。
  18. priceList 変数が作成され、priceProcessor サービスから返される XmlObject データを受け取るように割り当てられます。



  19. Create PriceList ノード ビルダを閉じるには、[閉じる] をクリックします。
  20. この手順により、パラレル ノードの Get Price ブランチの設計が終了します。実行時に、このブランチを実行することによって、For Each ループでの現在の反復処理で priceProcessor コントロールから返されるデータを含む XmlObject が、priceList 変数に追加されます。

  21. Workshop メニューから [ファイルArrow symbolすべて保管] を選択します。
Get Availability ブランチのアクティビティを設計するには
  1. Get Availability ブランチのノードの名前を、実行順に Request AvailabilityReceive AvailabilityCreate AvailList に変更します。
  2. 以下のタスクを実行します。
Request Availability ノードを設計するには
  1. [Request Availability] ノードをダブルクリックします。ノード ビルダを開くと、[一般的な設定] タブが表示されます。
  2. [コントロール] フィールドの横の矢印をクリックして、プロジェクト内のコントロールのインスタンスのリストを表示し、[availProcessor] を選択します。
  3. [メソッド] パネルには、availProcessor コントロールで呼び出すことのできる「非同期送信メソッド」のリストが表示されます。

  4. リストから以下のメソッドを選択します。
  5. void getAvail(int itemID_arg,int quantity_arg)	
  6. [データの送信] タブをクリックして、ノード ビルダに 2 番目のタブを開きます。
  7. デフォルトでは、[データの送信] タブを開くと [変数の割り当て] ペインが表示されます。[コントロールが予期する値] フィールドには、availProcessor Web サービスがエクスポーズする getAvail() メソッドが予期するパラメータのデータ型と名前、int itemID および int quantity が表示されます。

    注意 : availProcessor サービスは、クライアントから要求された itemID (int) および数量 (int) を入力として使用します。このサービスは、itemID (int)、提供可能な数量 (int)、ウィジェットが在庫にあるかどうかを示すブール値、および出荷日 (String) を返します。
  8. [トランスフォーメーション] を選択して、[データの送信] タブのモードを切り替えます。


  9. 注意 : この場合は、availProcessor に入力するデータを変換する必要があるため、モードを切り替える必要があります。availProcessor コントロールは int データ型の入力を必要とし、For Each ループの widgetId および quantity の値を保持する iter_forEach1 変数は XML 型 (XML スキーマに対して有効な WidgetRequestDocument) です。
  10. [手順 1] で [変数の選択] をクリックしてプロジェクトの変数を表示し、[iter_forEach1 (WidgetRequest)] を選択します。


  11. [手順 2] で [トランスフォーメーションの作成] をクリックします。
  12. トランスフォーメーション ツールが開き、iter_forEach1 変数が [ソース] ペインに、トランスフォーメーション メソッド availProcessor に渡す整数の引数が [対象] ペインに表示されます。

  13. 以下の図に示すように、[ソース] ペインの要素を [対象] ペインの要素にマップします。
  14. widgetIDitemID_arg にマップ
    quantity
    quantity_arg にマップ



    マップ ペインで要素間に線が描画されます。これはデータ型間のトランスフォーメーションを表します。

    注意 : このトランスフォーメーションを作成すると、チュートリアル アプリケーション用にプロジェクトにすでに作成され、ビルドされている RequestQuoteTransformation.java の下に、新しいメソッドが作成されます。これは、Tutorial_Process_Application_WEB/requestquote フォルダ内にあります。このトランスフォーメーション メソッド用のクエリが含まれている、新しい XQ ファイルも作成されます。
  15. [パッケージ・エクスプローラー] 内の [RequestQuote.java] をクリックしてプロセスに戻ります。
  16. Request Price ノード ビルダを閉じるには、[閉じる] をクリックします。
  17. この手順で、Request Availability ノードの設計が完了します。

Receive Availability ノードを設計するには
  1. [Receive Availability] ノードをダブルクリックします。ノード ビルダを開くと、[一般的な設定] タブが表示されます。
  2. [コントロール] フィールドの横の矢印をクリックして、プロジェクト内のコントロールのインスタンスのリストを表示し、[availProcessor] を選択します。
  3. [メソッド] パネルには、availProcessor コントロールの「非同期受信メソッド」のリストが表示されます。

  4. リストから以下のメソッドを選択します。
  5. void avail(int itemID, int qty, boolean avail, String date)
  6. [データの受信] をクリックして、ノード ビルダに 2 番目のタブを開きます。
  7. [コントロールが返す値] には、availProcessor Web サービスに対する avail(int itemID_arg, int qty_arg, boolean avail_arg, String date_arg) メソッドが返すパラメータのデータ型と名前が表示されます。

    注意 : この場合は、availProcessor サービスから返されるデータを XML 型の変数に割り当てるため、[Receive Data] タブで [変数の割り当て] モードから [トランスフォーメーション] モードに切り替える必要があります。切り替えるには、プロセスで、返された Java データ型を型付き XML に変換する必要があります。
  8. [トランスフォーメーション] をクリックします。以下の図のように、[データの受信] タブが表示されます。


  9. [変数の選択] をクリックし、[変数の新規作成] をクリックします。[変数を作成] ダイアログ ボックスが表示されます。
  10. [変数名] フィールドに avail と入力します。
  1. XML 型で、availQuote.xsd の横にある [+] をクリックしてリストを展開し、[availRequest] を選択します。[変数の型] フィールドに org.example.avail.AvailRequestDocument が表示されます。


  2. [OK] をクリックします。[変数を作成] ダイアログ ボックスが閉じ、新しい変数が作成され、XML 型変数としてデータ パレットに表示されます。
  3. [手順 2] で [トランスフォーメーションの作成] をクリックしてトランスフォーメーション ツールを開くと、availProcessor コントロールから返されるデータ型が [ソース] ペインに、avail 変数が [対象] ペインに表示されます。
  4. 以下の図に示すように、[ソース] の値を [対象] の要素にマップします。
  5. itemIDwidgetId にマップ
    qty
    requestedQuantity にマップ
    avail
    quantityAvail にマップ
    date
    shipDate にマップ



    注意 : このトランスフォーメーションを作成すると、チュートリアル アプリケーション用にプロジェクトにすでに作成され、ビルドされている RequestQuoteTransformation.java の下に、新しいメソッドが作成されます。これは、requestquote\Tutorial_Process_Application_WEB フォルダ内にあります。このトランスフォーメーション メソッド用のクエリが含まれている、新しい XQ ファイルも作成されます。
  6. [ファイルArrow symbolすべて保管] をクリックします。
  7. [パッケージ・エクスプローラー] 内の [RequestQuote.java] をクリックしてビジネス プロセスに戻ります。
  8. Receive Availability ノード ビルダを閉じるには、[閉じる] をクリックします。
  9. この手順で、Receive Availability ノードの設計が完了します。

Create AvailList ノードを設計するには

Parallel ノードの Get Price ブランチを設計したときに、価格データを単一の変数に追加するようにビジネス プロセスを設計したのと同じ方法で、この手順では、priceAvailTransformations コントロールでメソッドを呼び出して、返された在庫情報を XmlObjectList 型の単一の変数に追加します。「XmlObjectList データ型の使用に関する注意」を参照してください。

  1. データ パレット内の priceAvailTransformations コントロール インスタンスを展開し、以下のメソッドをクリックします。
  2. XmlObject convertAvailXMLtoXMLObj(org.example.avail.AvailRequestDocument _availRequestDoc)
  3. データ パレットからメソッドをドラッグし、デザイン ビューの [Create AvailList] ノードにドロップします。[Create AvailList] ノードは、以下の図に示すように、メソッドのバインドを反映して変更されます。


  4. [Create AvailList] ノードをダブルクリックします。ノード ビルダを開くと、[一般的な設定] タブが表示されます。
  5. [コントロール] フィールドで [priceAvailTransformations] コントロールが選択され、ノードまでドラッグしたメソッドが [メソッド] フィールドで選択されていることを確認します。
  6. XmlObject convertAvailXMLtoXMLObj(org.example.AvailRequestDocument _availRequestDoc)
  7. [データの送信] タブをクリックして、ノード ビルダに 2 番目のタブを開きます。
  8. [コントロールが予期する値] フィールドには、priceAvailTransformations コントロールに対する convertAvailXMLtoXMLObj(org.example.avail.AvailRequestDocument _availRequestDoc) メソッドが予期するデータ型、AvailRequestDocument が表示されます。

  9. [割り当てる変数を選択します] の下のフィールドの矢印をクリックして、変数のリストを表示します。[avail (AvailRequestDocument)] を選択します。
  10. この場合、avail 変数のデータ型 (AvailRequest) は、priceAvailTransformations コントロールが予期するデータのデータ型と一致します。

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

    XmlObject は、型なし XML 形式のデータを指定する Java データ型です。つまり、このデータ型は、XML スキーマに対して有効でない XML データを表します。

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


  15. 必要に応じて、[変数の型の選択] ペインで [XML] を選択して、アプリケーション内の XML データ型の表現を表示します。
  16. [型なし] の [XmlObjectList] を選択し、[OK] をクリックします。
  17. availList 変数が作成され、availProcessor サービスから返される XmlObject データを受け取るように割り当てられます。



  18. Create AvailList ノード ビルダを閉じるには、[閉じる] をクリックします。
  19. この手順により、パラレル ノードの Get Availability ブランチの設計が終了します。実行時に、このブランチを実行することによって、For Each ループでの現在の反復処理で availProcessor コントロールから返されるデータを含む XmlObject が、availList 変数に追加されます。

  20. Workshop メニューから [ファイルArrow symbolすべて保管] を選択します。
XmlObjectList データ型の使用に関する注意

For Each ループでの反復処理ごとに priceProcessor サービスから価格データが返され、そのデータが price 変数に割り当てられます。また、availProcessor サービスからは在庫データが返され、そのデータが avail 変数に割り当てられます。ビジネス プロセスでは、反復処理ごとに返される価格データを収集し、ループでの反復処理ごとに 1 つの項目をリストに割り当てて、価格データのリストを作成する必要があります。同様に、ループでの反復処理ごとに、パラレル ノードの Get Availability ブランチに在庫データのリストが作成されます。

XmlObjectList は、型なし XML 形式のデータのシーケンスを指定する Java データ型です。つまり、このデータ型は、XML 要素のシーケンス (繰り返し要素のセット) を表します。ビジネス プロセスでは、パラレル ノードの Get Price ブランチでの各反復処理の最後の段階として、price 変数から受け取ったデータを priceList 変数 (XmlObjectList 型) に割り当てます。このようにして、For Each ループで反復処理する見積り要求内の各ウィジェットの価格データを、単一の変数が保持します。同様に、各ウィジェットの在庫データも単一の変数が保持します。

XmlObjectList 変数の使用方法については、「Create PriceList ノードを設計するには」および「Create AvailList ノードを設計するには」を参照してください。

関連トピック

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

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

ビジネス プロセスでのパラレル実行について


  ページの先頭       前  次