ビジネス プロセス構築ガイド

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

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

ビジネス プロセスで頻繁に設計されるパターンの 1 つは、XML ドキュメントから取得した XML 要素のシーケンスにより、フローの反復ごとに、一連のアクティビティのパフォーマンスを指定します。

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

この節では、ループ ロジックをビジネス プロセスに追加する方法を説明します。内容は以下のとおりです。

ビジネス プロセスにおける For Each ノードの作成

For Each ノードをビジネス プロセスに追加するには
  1. [パッケージ・エクスプローラー] ペインで、For Each ノードを追加するビジネス プロセス (Process.java ファイル) をクリックします。ビジネス プロセスはデザイン ビューに表示されます。
  2. [ノード パレット] が BEA Workshop for WebLogic Platform に表示されない場合は、BEA Workshop for WebLogic Platform メニューから [ウィンドウArrow symbolビューの表示Arrow symbolノード パレット] を選択します。
  3. [ノード パレット] で [XML 表現 For Each] をクリックします。続いて、For Each ノードをビジネス プロセスにドラッグし、リスト内の項目ごとに繰り返し実行される一連のアクティビティのパターンを設計するビジネス プロセス内のポイントにドロップします。
  4. デザイン ビューが更新されると、図 12-1 に示すように For Each ノードの画像表現が含まれます。

    図 12-1 For Each ノード


    For Each ノード

    For Each ノードには次の特徴があります。

    • For Each ノードは、1 つまたは複数の追加ノードのプレースホルダ、およびループ メカニズムを意味します。「For Each ノードの設計」で説明するノード ビルダを使用すると、ビジネス プロセス変数からノードのシーケンスを簡単に選択することができます。
    • デフォルトでは、ノードの名前は For Each です。この名前をダブルクリックして新しい名前を入力すると、名前を変更できます。
    • For Each ノード は、このノードの設計が未完成であることを示します。ノードの設計を完成すると、For Each ノードFor Each ノード に変わります。ノード ビルダでイテレータを指定すると、For Each ノードが完成します。

For Each ノードの設計

ビジネス プロセス内の一連の XML ノードを反復させるロジックを追加できるようにするには、反復するビジネス プロセスに対して XML または MFL 要素を繰り返すように定義した XML スキーマまたは MFL ファイルがプロジェクトに含まれている必要があります。XML スキーマや MFL ファイルをプロジェクトにインポートする方法については、「スキーマ ファイルの作成とインポート」を参照してください。

XML スキーマまたは MFL ファイルをプロジェクトにインポートしたら、For Each ノードの設計を完成できます。この手順で実行するタスクは次のとおりです。

反復する XML または MFL の繰り返し要素を選択するには

For Each ノードは繰り返し要素だけを反復します。ノード ビルダでは、前の節で作成した変数から繰り返しノードを選択できます。

  1. デザイン ビューで、For Each ノードをダブルクリックしてノード ビルダを起動します。
  2. [変数の選択] をクリックして、プロジェクトで作成済みの変数を選択するか、分岐ノードで使用する新しい変数を作成します。
    1. 作成済みの変数を使用する場合は、条件を作成する XML または型付き非 XML を含んだ変数を選択します。
    2. たとえば、プロジェクトに XML スキーマ (QuoteRequest.xsd) をインポートし、quoteRequest (QuoteRequest.xsd スキーマに基づく) タイプのビジネス プロセス変数 (requestXML) を作成する場合は、図 12-2 に示すように、requestXML 変数をビジネス プロセス変数のドロップダウン リストから入手できます。

      図 12-2 変数の選択


      変数の選択

      注意 : ビジネス プロセス変数の作成方法とスキーマのプロジェクトへのインポート方法については、「ビジネス プロセス変数とデータ型」を参照してください。
    3. 新しい変数を作成する場合は、ドロップダウン リストから [変数の新規作成...] を選択します。
    4. [変数を作成] ダイアログ ボックスが開きます。

    5. 新しい変数の名前を [変数名] フィールドに入力します。
    6. 変数が XML ドキュメントに基づくか、MFL ファイルに基づくかによって、[XML] または [非 XML] オプションを選択し、表示されたタイプ オプションのリストで該当する変数を選択します。
    7. [OK] をクリックします。
    8. [変数を作成] ダイアログ ボックスが閉じ、[ノードの選択] ペインに新しい変数が表示されます。

requestXML 変数における XML の画像表現が [ノードの選択] パネルに表示されます。図 12-3 を参照してください。

図 12-3 XML 表現

XML 表現

前の図に表示した QuoteRequest.xsd スキーマには次の特徴があります。

  1. [ノードの選択] フィールドで繰り返し要素を選択します。
  2. [繰り返し要素] と [反復変数] フィールドにデータが読み込まれます。

    • 繰り返し要素 - XPath 式が含まれています。これは、XML 変数に関連付けられた XML ドキュメントに対して適用されると、一連の XML 要素を返します。例の作成の際に、[ノードの選択] パネルで繰り返し要素 widgetRequest を選択した場合は、[繰り返し要素] フィールドに式 $requestXML/ns0:widgetRequest が読み込まれます。この式は XML ドキュメントにあるすべての widgetRequest 要素を返します。
    • 反復変数 - 反復変数の名前が入ります。反復変数が生成され、実行時に For Each ループで処理されている現在の要素を保持します。例では、反復変数はデフォルトで iter_forEach1 という名前になります。[反復変数] フィールドに新しい名前を入力すると、名前を変更できます。
  3. [閉じる] をクリックしてノード ビルダを閉じ、デザイン ビューに戻ります。
  4. デザイン ビューでは、For Each ノードは次の画像で表示されます。

    • XML 表現 は、このノードで定義した反復変数が XML 要素に基づくことを視覚的に表します。
    • XML 表現 は、このノードで定義した反復変数が MFL または型付き非 XML 要素に基づくことを視覚的に表します。
  5. 作業内容を保存するには、[ファイルArrow symbol保管] を選択します。
アクティビティを For Each ノードに追加するには

前の手順 (反復する XML または MFL の繰り返し要素を選択するには) で作成された、リスト内の項目ごとに実行されるアクティビティまたはアクティビティのセットを定義する必要があります。For Each ループの各反復は、ループのノード (または複数のノード) で指定したアクティビティまたは複数のアクティビティを実行します。

  1. [ノード パレット] で、ビジネス プロセスに追加するロジックを持ったノードをクリックします。
  2. ノードを [ノード パレット] から、デザイン ビューのビジネス パレットにドラッグして、For Each ループ内のビジネス プロセスにドロップします。
  3. ノードを For Each ループにドラッグすると、ターゲット XML 表現 がループに表示され、ノードを配置できる For Each ループの有効な位置を表します。ノードをドラッグして有効な位置に近づけると、ターゲットはアクティブ XML 表現 になり、カーソルが矢印 XML 表現 に変わります。ここでマウス ボタンを放すと、ノードが For Each ループに吸着します。

  4. For Each ループに追加したノード (または複数のノード) で、ビジネス プロセスのビジネス ロジックに適したアクティビティを作成します。

関連トピック

ループ ロジックの作成

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

例外の処理

メッセージ パスの追加

タイムアウト パスの追加


  ページの先頭       前  次