|
チュートリアルのこの手順では、クライアントから受け取った RFQ から項目のリストを抽出するロジックを作成し、クライアントから要求された項目の価格と在庫を判断するビジネス プロセスの設計作業を開始します。
For Each ノードは、リスト内の項目ごとに 1 回ずつ、一連のアクティビティを繰り返し実行する、ビジネス プロセス内のポイントを表します。For Each ノードには以下のものが含まれます。
ループの期間中、For Each ループで処理されている現在の要素は、反復変数が保持します。
以下の節では、XML スキーマの概要について説明します。ビジネス プロセスに For Each ノードを設計する前に、この節に目を通しておいてください。
このチュートリアルで作成するビジネス プロセスは、クライアントから RFQ を (XML ファイル形式で) 受け取ったときに開始するよう設計します。この RFQ には、有効な XML、つまり XML スキーマ (ここでは QuoteRequest.xsd) に対して有効な XML データが含まれている必要があります。
QuoteRequest.xsd スキーマは、アプリケーション内の Tutorial_Process_Application_Utility\Schemas にあります。
| 注意 : | プロジェクト内のスキーマをビジネス プロセスで使用できるようにするには、そのスキーマを Tutorial_Process_Application_Utility (ユーティリティ プロジェクト) の Schemas フォルダ内に置く必要があります。 |
詳細については、「XQuery Mapper を使用したデータの変換」の「スキーマ ファイルのインポートと作成」を参照してください。
アプリケーションの Schemas フォルダ内の XML スキーマがコンパイルされて、XML Bean が生成されます。Oracle Workshop for WebLogic では、このようにして XML スキーマのさまざまな側面を表現するインタフェースのセットが生成されます。XML Bean 型は、XML スキーマ自体の型に対応します。XML Bean により、組み込みのスキーマ型に対応する Java 型が与えられ、スキーマの任意の派生型について Java 型が生成されます。
「手順 2 : プロセスの開始方法の指定」では、クライアントからビジネス プロセスが受け取る RFQ ドキュメントが割り当てられる変数 (requestXML) を作成しました。このような変数を [デザイン] ビューで使用するときには、変数に関連付けられた XML スキーマをグラフィカルに表現したものを使用します。
以下の図は、クライアントからの RFQ ドキュメントが有効な QuoteRequest.xsd スキーマ内の quoteRequest 要素をグラフィカルに表現したものです。

QuoteRequest.xsd スキーマの以下の特徴に留意してください。
quoteRequest である。この要素は、子要素 customerName、shipAddress、および widgetRequest を指定します。shipAddress 要素は、属性 street、city、state、および zip を指定する。widgetRequest 要素は反復要素である (
としてグラフィカルに表現される)。つまり、関連する XML ドキュメントには 1 つまたは複数の widgetRequest 要素が含まれていることがあります。一方、widgetRequest 要素には 2 つの要素として widgetId と quantity が含まれます。
このシナリオのビジネス プロセスでは、クライアントから受け取った RFQ ドキュメント内の widgetId 要素と quantity 要素の各ペアが処理されます。処理は For Each ノードで開始されます。For Each ループ内で反復される各処理では、requestXML 変数から 1 つの widgetRequest 項目を抽出し、その項目に対して 1 つまたは複数のアクティビティを実行する必要があります。
ビジネス プロセスで RFQ ドキュメント内の項目シーケンスを反復処理するロジックを作成するには、以下の作業を実行します。
プロジェクト内の変数 (型付き XML) のリストが表示されます。
requestXML 変数には、設計する反復処理ロジックの対象となる繰り返しの XML 要素が含まれています。requestXML 変数の XML スキーマの表現が、[ノードの選択] ペインに表示されます。
[繰り返し要素] フィールドと [反復変数] フィールドに以下のデータが設定されます。
反復変数 iter_forEach1 が作成され、[データ パレット] 内の変数リストに追加されます。この変数は XML 型の WidgetRequestDocument.WidgetRequest です。
For Each ループでの反復変数の使用方法の詳細については、「Create PriceList ノードの設計」を参照してください。
この手順で、For Each ノード用の反復処理ロジックの設計が完了します。
For Each ノードに反復処理ロジックを作成したら、反復処理ごとに実行される 1 つまたは複数のアクティビティを定義する必要があります。
For Each ループにアクティビティを追加するには、ループ内にビジネス ロジックに対応するノードを作成します。「手順 8 : 実行の並行パスの設計」では、パラレル ノードを作成し、ビジネス プロセスでアクティビティの 2 セットが並行して実行されるようにそのノードを設計します。1 つは価格要求で、もう 1 つはクライアントから要求された項目の在庫の判断です。
|