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

     前  次    目次     
ここから内容

手順 7 : リスト内の項目のループ処理

この手順では、クライアントから受け取った見積り要求ドキュメントから項目のリストを抽出するロジックを作成し、クライアントから要求された項目の価格と在庫を判断するビジネス プロセスの設計作業を開始します。

For Each ノードは、リスト内の項目ごとに 1 回ずつ、一連のアクティビティを繰り返し実行する、ビジネス プロセス内のポイントを表します。For Each ノードには、イテレータ ノード (項目のリストを指定するノード) とループ (リスト内の項目ごとに実行するアクティビティを定義する) があります。ループの期間中、For Each ループで処理されている現在の要素は、反復変数が保持します。

この節では、次のトピックについて説明します。

 


XML スキーマと For Each ノードについて

このチュートリアルで構築するビジネス プロセスは、クライアントから見積り要求 XML ドキュメントを受け取ったときに開始するように設計されます。見積り要求ドキュメントには、有効な XML、つまり XML スキーマに対して有効な XML QuoteRequest.xsd が含まれている必要があります。QuoteRequest.xsd スキーマは、アプリケーション内の Tutorial_Process_Application_WEB\Schemas にあります。

前の行の myapplications は、チュートリアル アプリケーションの場所を表しています。

注意 : プロジェクト内のスキーマをビジネス プロセスで使用できるようにするには、ユーティリティ プロジェクトの Schemas フォルダに置く必要があります。ユーティリティ プロジェクトは、現在は Tutorial_Process_Application_UTILITY になります。プロジェクトは、Workshop アプリケーションに含めることができるフォルダ プロジェクトの 1 つの種類です。BEA Workshop アプリケーションに追加したプロジェクトは、BEA Workshop ファイル階層内で、アプリケーション フォルダの子フォルダとして表されます。BEA Products アプリケーション内にプロジェクトを作成してデータを設定する方法については、「関連トピック」を参照してください。

アプリケーションの Schemas フォルダ内の XML スキーマがコンパイルされて、XML Bean が生成されます。このようにして、BEA Workshop により、XML スキーマのさまざまな側面を表現するインタフェースのセットが生成されます。XML Bean 型は、XML スキーマ自体の型に対応します。XML Beans により、組み込みのスキーマ型に対応する Java 型が与えられ、スキーマの任意の派生型について Java 型が生成されます。

手順 2 : プロセスの開始方法の指定」では、クライアントからビジネス プロセスが受け取る見積り要求ドキュメントが割り当てられる変数 requestXML を作成しました。デザイン ビューでこのような変数を使用するときには、変数に関連付けられた XML スキーマをグラフィカルに表現したものを使用します。以下の図は、クライアントから受け取った見積り要求ドキュメントが有効な QuoteRequest.xsd スキーマ内の quoteRequest 要素をグラフィカルに表現したものです。

QuoteRequest.xsd スキーマの以下の特徴に留意してください。

このシナリオのビジネス プロセスでは、クライアントから受け取った見積り要求ドキュメント内の widgetId 要素と quantity 要素のペアが処理されます。処理は For Each ノードで開始され、For Each ループ内の反復処理で widgetRequest 項目の 1 セットずつが処理されます。

この節では、まず、項目のリスト (widgetRequest 項目) を requestXML 変数から抽出し、次に、リスト内の各項目で 1 回づつ、アクティビティまたはアクティビティのセットを繰り返し実行する For Each ノードを設計します。

関連トピック

スキーマ ファイルの作成とインポート

ビジネス プロセス内の For Each ループの設計

ビジネス プロセスで見積り要求 XML ドキュメント内のノード シーケンスを反復処理するロジックを作成するには、以下の手順を実行します。

ビジネス プロセスに For Each ノードを追加するには
  1. ノード パレット内の For Each をクリックします。
  2. デザイン ビューで、[For Each] ノードを [RequestQuote] ビジネス プロセスにドラッグし、[Sales Tax Calculation Needed?] (分岐) ノードの直後にドロップします。
  3. Enter〕を押して、ノードに For Each という名前を付けます。
  4. デザイン ビューが更新され、[For Each] ノードが表示されます。



反復処理の対象となる繰り返しの XML 項目を選択するには
  1. デザイン ビューで [For Each] ノードをダブルクリックしてノード ビルダを起動します。
  2. ノード ビルダで [変数の選択] をクリックします。プロジェクト内の XML 型の変数のドロップダウン リストが表示されます。
  3. [requestXML (QuoteRequestDocument)] を選択します。requestXML 変数には、設計する反復処理ロジックの対象となる繰り返しの XML 要素が含まれています。requestXML 変数の XML 表現が、[ノードの選択] ペインに表示されます。繰り返し要素は で識別されます。


  4. [ノードの選択] ペインでまだ選択されていない場合は、+ widgetRequest をクリックします。
  5. [繰り返し要素] フィールドと [反復変数] フィールドに以下のデータが設定されます。

    • 繰り返し要素 - 以下の XPath 式が表示されます。受信した XML ドキュメントにこの式を適用すると、繰り返しの XML 要素のセットが返されます。
    • $requestXML/ns0:widgetRequest
    • 反復変数 - 反復変数の名前 iter_forEach1 が表示されます。実行時に、For Each ループで処理中の現在の要素が反復変数に割り当てられます。
  6. [閉じる] をクリックして、ノード ビルダを閉じます。
  7. 反復変数 iter_forEach1 が作成され、データ パレット内の変数リストに追加されます。この変数は XML 型の WidgetRequestDocument.WidgetRequest です。

    For Each ループでの反復変数の使用方法については、「Create PriceList ノードを設計するには」を参照してください。

    この手順で、For Each ノード用の反復処理ロジックの設計が完了します。デザイン ビューでは、条件を定義するために行った作業を反映して、ノードのグラフィカル表現が更新されます。



    は、ノードのタスクの設計が完了したことを示します。 は設計が完了していないことを示し、 はノードに対して XML クエリが定義されたことを示します。

For Each ループのアクティビティを設計するには

For Each ノードに反復処理ロジックを作成した後で、作成したリスト内の項目を対象とした反復処理ごとに実行されるアクティビティまたはアクティビティのセットを定義する必要があります。

For Each ループにアクティビティを追加するには、ループ内にビジネス ロジックに対応するノードを作成します。このチュートリアルの次の手順では、パラレル ノードを作成し、ビジネス プロセスでアクティビティの 2 セットが並行して実行されるように、そのノードを設計します。1 つは価格要求で、もう 1 つはクライアントから要求された項目の在庫の判断です。パラレル ノードの設計方法については、「手順 8 : 実行の並行パスの設計」を参照してください。

関連トピック

ビジネス プロセス変数とデータ型

リスト内の項目によるループ

ビジネス プロセス内のノードのグループ化


  ページの先頭       前  次