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

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

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

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

For Each ノードは、リスト内の項目ごとに 1 回ずつ、一連のアクティビティを繰り返し実行する、ビジネス プロセス内のポイントを表します。For Each ノードには以下のものが含まれます。

ループの期間中、For Each ループで処理されている現在の要素は、反復変数が保持します。

以下の節では、XML スキーマの概要について説明します。ビジネス プロセスに For Each ノードを設計する前に、この節に目を通しておいてください。

 


XML スキーマの概要

このチュートリアルで作成するビジネス プロセスは、クライアントから RFQ を (XML ファイル形式で) 受け取ったときに開始するよう設計します。この RFQ には、有効な XML、つまり XML スキーマ (ここでは QuoteRequest.xsd) に対して有効な XML データが含まれている必要があります。

QuoteRequest.xsd スキーマは、アプリケーション内の Tutorial_Process_Application_Utility\Schemas にあります。

注意 : プロジェクト内のスキーマをビジネス プロセスで使用できるようにするには、そのスキーマを Tutorial_Process_Application_Utility (ユーティリティ プロジェクト) の Schemas フォルダ内に置く必要があります。

詳細については、「XQuery を使用したデータの変換」の「スキーマ ファイルの作成とインポート」を参照してください。

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

手順 2 : プロセスの開始方法の指定」では、クライアントからビジネス プロセスが受け取る RFQ ドキュメントが割り当てられる変数 (requestXML) を作成しました。このような変数を [デザイン] ビューで使用するときには、変数に関連付けられた XML スキーマをグラフィカルに表現したものを使用します。

以下の図は、クライアントからの RFQ ドキュメントが有効な QuoteRequest.xsd スキーマ内の quoteRequest 要素をグラフィカルに表現したものです。

図 8-1 XML スキーマのグラフィカルな表現

XML スキーマのグラフィカルな表現

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

このシナリオのビジネス プロセスでは、クライアントから受け取った RFQ ドキュメント内の widgetId 要素と quantity 要素の各ペアが処理されます。処理は For Each ノードで開始されます。For Each ループ内で反復される各処理では、requestXML 変数から 1 つの widgetRequest 項目を抽出し、その項目に対して 1 つまたは複数のアクティビティを実行する必要があります。

 


For Each ループの設計

ビジネス プロセスで RFQ ドキュメント内の項目シーケンスを反復処理するロジックを作成するには、以下の作業を実行します。

For Each ノードの追加

  1. [デザイン] ビューで、[For Each] ノード (XML スキーマのグラフィカルな表現) を [ノード パレット] から [RequestQuote] ビジネス プロセスまでドラッグし、[Sales Tax Calculation Needed?](分岐) ノードの直後にドロップします。
  2. Enter〕を押して、デフォルト名 For Each を受け入れます。
  3. 次の図に示すように、ビジネス プロセスに [For Each] ノードが含まれます。

    図 8-2 For Each ノード


    For Each ノード

反復処理の対象となる繰り返しの XML 要素の選択

  1. [For Each] ノードをダブルクリックします。
  2. ノード ビルダで [変数の選択] をクリックします。
  3. プロジェクト内の変数 (型付き XML) のリストが表示されます。

  4. [requestXML (QuoteRequestDocument)] を選択します。
  5. requestXML 変数には、設計する反復処理ロジックの対象となる繰り返しの XML 要素が含まれています。requestXML 変数の XML スキーマの表現が、[ノードの選択] ペインに表示されます。

    図 8-3 [ノードの選択] ペインに表示される XML スキーマ


    [ノードの選択] ペインに表示される XML スキーマ

  6. [ノードの選択] ペインで [widgetRequest] を選択します。
  7. [繰り返し要素] フィールドと [反復変数] フィールドに以下のデータが設定されます。

    • [繰り返し要素] : 以下の XPath 式が表示されます。受信した XML ドキュメントにこの式を適用すると、繰り返しの XML 要素のセットが返されます。
    • $requestXML/ns0:widgetRequest
    • [反復変数] : 反復変数の名前 iter_forEach1 が表示されます。
    • 実行時に、For Each ループで処理中の現在の要素が反復変数に割り当てられます。

  8. [閉じる] をクリックして、ノード ビルダを閉じます。
  9. 反復変数 iter_forEach1 が作成され、[データ パレット] 内の変数リストに追加されます。この変数は XML 型の WidgetRequestDocument.WidgetRequest です。

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

    この手順で、For Each ノード用の反復処理ロジックの設計が完了します。

    [デザイン] ビューでは、条件を定義するために行った作業を反映して、ノードが更新されます。

    図 8-4 更新された For Each ノード


    更新された For Each ノード

    更新された For Each ノード アイコンは、ノードに対して XML クエリが定義されたことを示します。

For Each ノードに反復処理ロジックを作成したら、反復処理ごとに実行される 1 つまたは複数のアクティビティを定義する必要があります。

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

関連トピック


  ページの先頭       前  次