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

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

手順 3 : 実行の代替パスの条件定義

ビジネス プロセスでは、クライアントからの XML メッセージが割り当てられている変数から抽出した値に基づいて分岐を行う必要があります。受信する RFQ XML ファイルに指定されている発送先について、見積りで消費税を計算する必要があるかどうかを判断するために実行時に評価する必要のある条件を設計します。

分岐ロジックは、ビジネス プロセスに分岐ノードを作成して設計します。この手順では、以下の作業を行います。

 


分岐ノードの追加

  1. [ノード パレット] ビューが表示されていない場合、[ウィンドウ|ビューの表示|ノード パレット] を選択します。
  2. [ノード パレット] ビューで [Decision] ノード (条件リスト) を選択し、[デザイン] ビューにドラッグして [Client Requests Quote] ノードの直下にドロップします。
  3. 注意 : ノードを [デザイン] ビューにドラッグすると、ターゲット (条件リスト) が表示され、ノードを挿入できる場所が示されます。ターゲットの場所の近くにノードをドラッグすると、そのターゲットがアクティブ (条件リスト) になり、カーソルの形が矢印 (条件リスト) に変わります。ここでマウスのボタンを放すと、アクティブになったターゲットで示される場所にノードが設定されます。

    分岐ノードには、条件のノード (Condition というラベルが付きます) と 2 つの実行パスが含まれています。1 つの実行パスは、条件の評価結果が「true」の場合に実行されるアクションのパスで、もう 1 つの実行パスは、条件の評価結果が「false」の場合に実行されるアクションのパス (Default パス) です。

  4. このチュートリアルのビジネス タスクをより明確に示すことができるように、[Decision]、[Condition]、および [Default] ノードの名前を次のように変更します。
    • [Decision] ノードの名前 : 「Sales Tax Calculation Needed?」に変更します。
    • [Condition] ノード (true パス) の名前 : 「Yes」に変更します。
    • [Default] ノード (false パス) の名前 : 「No」に変更します。
    • ビジネス プロセスが次の図に示すように、[デザイン] ビューに表示されます。

      図 4-1 分岐ノードを持つビジネス プロセス


      分岐ノードを持つビジネス プロセス

 


分岐ノードの条件の定義

  1. 条件ノード (分岐ノードを持つビジネス プロセス) をダブルクリックして分岐ビルダを呼び出します。このビルダでは、分岐ロジックの設計に役立つ、タスク駆動型のユーザ インタフェースが提供されます。
  2. 図 4-2 分岐ビルダ


    分岐ビルダ

    デフォルトで [変数] オプションが選択されています。ここでは、XML スキーマに関して有効な、XML ドキュメント内の要素の値に基づいて分岐を設計するので、この選択を変更しないでください。

  3. 分岐の決定の基になる XML 要素を選択します。
    1. 分岐ビルダで、[左辺の式] の横の 分岐ビルダ アイコンをクリックして変数を選択します。
    2. プロジェクト内の変数のドロップダウン リストが表示されます。この場合は、ビジネス プロセスの最初にクライアント要求ノード用に作成した requestXML 変数が表示されます。

      quoteRequest XML スキーマが [式ノードの選択] ペインに表示されます。

      図 4-3 [式ノードの選択]


      [式ノードの選択]

      この例のスキーマ (QuoteRequest.xsd) では以下の要素が指定されます。

      • ルート要素 : quoteRequest
      • 子要素 : customerName および shipAddress
      • 反復要素 : widgetRequest
      • shipAddress 要素には、属性 streetcitystate、および zip が含まれます。

    3. [ShipAddress] 要素を展開して、[state] 属性を選択します。
    4. この手順では、定義する条件ロジックが基づく要素を表す XML ドキュメント内のノードが選択されます。

      [選択された式] フィールドに以下の式が表示されます。

      fn:data($requestXML/ns0:shipAddress/@state)

    5. [選択] をクリックします。[左辺の式] フィールドに上記の式が表示されます。
    6. [演算子] リストから [=] 演算子を選択します。
    7. [右辺の式] フィールドに “CA” と入力します。
    8. [追加] をクリックして、作成した条件を追加します。
    9. fn:data($requestXML/ns0:shipAddress/@state) = “CA”

      これで、分岐ノードの最初の条件の設計が終了しました。

    10. 以下の図に示すように、条件リストのペインで式を選択します。
    11. 図 4-4 条件リストのペイン


      条件リストのペイン

    12. [結合の種類] を [OR] に変更します。
    13. 注意 : 条件の結合の種類は、条件の定義後でも変更できます。変更するには、次の図に示すように結合の種類を右クリックします。
      図 4-5 結合の種類の変更


      結合の種類の変更

    14. [右辺の式] フィールドで、CACalifornia に変更します。
    15. [追加] ボタンが [更新] に変わります。

    16. [更新] ボタンの横の矢印をクリックし、メニューから [追加] を選択します。
    17. 同様に、NJ および New Jersey の条件を追加します。
    18. 以下の図に示すように、定義した条件が条件リストのペインに表示されます。

      図 4-6 条件リスト


      条件リスト

  4. [閉じる] をクリックして、分岐ビルダを閉じます。
  5. [デザイン] ビューの条件ノードのアイコンが 条件リスト から 条件リスト に変わり、このノードに定義した条件が XML データの評価に基づくものであることが示されます。

    この手順で、実行時にフローが分岐ノードに遷移するときに評価される条件の設計が完了します。

    条件ロジックは、ソース コードに XQuery 式として記述されます。分岐ビルダで条件を定義すると、BEA Workshop によって XQuery 式が生成されます。

    XQuery 式を表示するには、[ソース] ビューに移動します。定義した条件は、ソース コードに以下の XQuery 式で記述されています。

    コード リスト 4-1 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\")" +
    "};")

これで、フローで後に続くパスのアクションを定義する準備が整いました。

関連トピック

分岐条件の定義


  ページの先頭       前  次