|
ビジネス プロセスでは、クライアントからの XML メッセージが割り当てられている変数から抽出した値に基づいて分岐を行う必要があります。受信する RFQ XML ファイルに指定されている発送先について、見積りで消費税を計算する必要があるかどうかを判断するために実行時に評価する必要のある条件を設計します。
分岐ロジックは、ビジネス プロセスに分岐ノードを作成して設計します。この手順では、以下の作業を行います。
) を選択し、[デザイン] ビューにドラッグして [Client Requests Quote] ノードの直下にドロップします。| 注意 : | ノードを [デザイン] ビューにドラッグすると、ターゲット ( ) が表示され、ノードを挿入できる場所が示されます。ターゲットの場所の近くにノードをドラッグすると、そのターゲットがアクティブ ( ) になり、カーソルの形が矢印 ( ) に変わります。ここでマウスのボタンを放すと、アクティブになったターゲットで示される場所にノードが設定されます。 |
分岐ノードには、条件のノード (Condition というラベルが付きます) と 2 つの実行パスが含まれています。1 つの実行パスは、条件の評価結果が「true」の場合に実行されるアクションのパスで、もう 1 つの実行パスは、条件の評価結果が「false」の場合に実行されるアクションのパス (Default パス) です。
) をダブルクリックして分岐ビルダを呼び出します。このビルダでは、分岐ロジックの設計に役立つ、タスク駆動型のユーザ インタフェースが提供されます。
デフォルトで [変数] オプションが選択されています。ここでは、XML スキーマに関して有効な、XML ドキュメント内の要素の値に基づいて分岐を設計するので、この選択を変更しないでください。
アイコンをクリックして変数を選択します。
プロジェクト内の変数のドロップダウン リストが表示されます。この場合は、ビジネス プロセスの最初にクライアント要求ノード用に作成した requestXML 変数が表示されます。
quoteRequest XML スキーマが [式ノードの選択] ペインに表示されます。
この例のスキーマ (QuoteRequest.xsd) では以下の要素が指定されます。
この手順では、定義する条件ロジックが基づく要素を表す XML ドキュメント内のノードが選択されます。
fn:data($requestXML/ns0:shipAddress/@state)
“CA” と入力します。 fn:data($requestXML/ns0:shipAddress/@state) = “CA”| 注意 : | 条件の結合の種類は、条件の定義後でも変更できます。変更するには、次の図に示すように結合の種類を右クリックします。 |
CA を California に変更します。NJ および New Jersey の条件を追加します。
[デザイン] ビューの条件ノードのアイコンが
から
に変わり、このノードに定義した条件が XML データの評価に基づくものであることが示されます。
この手順で、実行時にフローが分岐ノードに遷移するときに評価される条件の設計が完了します。
条件ロジックは、ソース コードに XQuery 式として記述されます。分岐ビルダで条件を定義すると、Oracle Workshop for WebLogic によって XQuery 式が生成されます。
XQuery 式を表示するには、[ソース] ビューに移動します。定義した条件は、ソース コードに以下の XQuery 式で記述されています。
@com.bea.wli.common.XQuery(prolog =
"declare namespace ns0 = \"http://www.example.org/request\";" +
"declare function exprFunction0($requestXML) as xs:boolean {" +
"(((fn:data($requestXML/ns0:shipAddress/@state) = \"CA\") or
(fn:data($requestXML/ns0:shipAddress/@state) = \"California\")) or
(fn:data($requestXML/ns0:shipAddress/@state) = \"NJ\")) or
(fn:data($requestXML/ns0:shipAddress/@state) = \"New Jersey\")" +
"};")
これで、フローで後に続くパスのアクションを定義する準備が整いました。
|