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

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

分岐条件の定義

ビジネス プロセスの一般的な設計パターンの 1 つは、1 つまたは複数の条件の評価に基づいて実行パスを選択するものです。このパターンは、ビジネス プロセスで Decision ノードを定義することにより作成できます。

デフォルトでは、Decision ノードは、1 つの条件、条件の下に続くパス (分岐の評価が true の場合にたどる実行パスを表す)、および条件の右に続く (デフォルト) パス (条件の評価が false の場合にたどる実行パスを表す) から成ります。Decision ノードには条件を追加できます。条件を追加すると、最初の条件の評価が false の場合に、2 番目の条件が評価されます。2 番目の条件が false に評価された場合は、またその次の条件が評価されます。デフォルトのパスは、どの条件も満たされない場合に実行されます。

注意 : ケース文を作成するために、WebLogic Integration には切り替えノードと呼ばれるカスタマイズしたノードがあります。切り替えノートの使用方法、および分岐ノードとの違いについては、「ケース文の作成」の「Decision ノードと Switch ノードの比較」を参照してください。

この節では、Decision ノードのビジネス プロセスへの追加方法、条件の定義方法、および Decision ノードで実行する代替パスへのアクティビティの定義方法について説明します。内容は以下のとおりです。

ビジネス プロセスでの Decision ノードの作成

ビジネス プロセスで Decision ノードを作成するには
  1. [パッケージ・エクスプローラー] ペインで、設計するビジネス プロセス (Process.java ファイル) をクリックします。ビジネス プロセスはデザイン ビューに表示されます。
  2. [ノード パレット] が BEA Workshop for WebLogic Platform に表示されない場合は、BEA Workshop for WebLogic Platform メニューから [ウィンドウArrow symbolビューの表示Arrow symbolノード パレット] を選択します。
  3. [ノード パレット] で [分岐ノード Decision] をクリックします。
  4. Decision ノードをドラッグしてデザイン ビュー のビジネス プロセスにドロップし、1 つまたは複数の条件に基づいて実行パスの候補のいずれかに分岐する必要があるビジネス プロセス上のポイントに配置します。
  5. 図 8-1 に示すように、デザイン ビューを更新すると、Decision ノードが含まれます。

    図 8-1 Decision ノード


    Decision ノード

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

関連トピック

Decision ノードの設計

ケース文の作成

Decision ノードの設計

Decision ノードのロジックを作成するには、次の手順を実行する必要があります。

条件のロジックを設計するには
  1. [Condition] ノードをダブルクリックして分岐ビルダを起動します。
  2. 以下のいずれかのオプションを選択します。
    • 変数 - 実行時に、XML や非 XML 変数の要素の値に基づいてビジネス プロセスを分岐させたい場合は、このオプションを選択します。
    • メソッド - 実行時に、作成した Java コードから返されるブール演算の結果に基づいてビジネス プロセスを分岐させたい場合は、このオプションを選択します。
    • ノード ビルダは、[変数] か [メソッド] の選択に応じて異なるオプションを表示します。

  3. 前の手順での選択 (変数 (スキーマ) またはメソッド) に応じたノード ビルダで必要な選択を行います。
変数 (スキーマ)

次の手順では、XML または MFL スキーマに関連付けられたビジネス プロセス変数の選択方法を説明します。

注意 : ビジネス プロセス変数の作成方法とスキーマのプロジェクトへのインポート方法については、「ビジネス プロセス変数とデータ型」を参照してください。
  1. 条件ビルダで、分岐ノード をクリックしてビジネス プロセス変数を選択します。
  2. プロジェクトにビジネス プロセス変数のドロップダウン リストが表示されます。

    たとえば、プロジェクトに XML スキーマ (QuoteRequest.xsd) をインポートし、quoteRequest (QuoteRequest.xsd スキーマに基づく) タイプのビジネス プロセス変数 (requestXML) を作成した場合は、requestXML 変数がビジネス プロセス変数のドロップダウン リストで利用できます。

  3. [変数の選択] ドロップダウン リストで矢印をクリックし、条件を作成したい XML または型付き非 XML を含んでいる変数を選択します。
  4. 図 8-2 に示すように、その変数に関連付けられた XML スキーマの表現が [式ノードの選択] フィールドに表示されます。

    図 8-2 式ノードの選択


    式ノードの選択

    前の図に示したように、この変数に割り当てられている XML ドキュメントの要素と属性は、ノードの階層として表現されます。例のスキーマ (QuoteRequest.xsd) はルート要素 (quoteRequest)、および子要素 (customerNameshipAddress、および widgetQuoteRequests) を指定します。一方、widgetQuoteRequest 要素は、反復要素 (widgetQuoteRequest) を指定します。(反復する XML 要素は、スキーマの GUI 表現では 式ノードの選択 により表されます。)

  5. [式ノードの選択] フィールドで、条件を定義する XML スキーマのノードを選択します。
  6. 例の説明を続けるために、前の図で表した XML 変数で [customerName] を選択したものとします。[選択された式] フィールドには以下の式が表示されます。

    fn:data($requestXML/ns0:customerName)
  7. [選択] をクリックします。[左辺の式] フィールドに新しい変数が表示されます。
  8. [演算子] ドロップダウン リストから演算子を選択します。
  9. 例 : =

  10. [右辺の式] フィールドに、値を入力するか、分岐ロジックを作成するための変数と式を選択します。
  11. たとえば、BEA と入力します。

  12. [追加] をクリックします。作成した条件が条件リストに追加されます。
  13. 例 : fn:data($requestXML/ns0:customerName) = "BEA"

  14. [AND] か [OR] の結合オプションを選択して条件を修飾します。
  15. [左辺の式] フィールドの既存の値に基づいて条件を追加するには
    1. [条件リスト] ペインで条件を選択します。[左辺の式]、[演算子]、および [右辺の式] フィールドに該当する値が読み込まれます。
    2. [右辺の式] フィールドに、値を選択します。
    3. たとえば、BEA など。

    4. 選択したエントリを変更します。
    5. たとえば、Avitek

    6. [更新] ボタンの横の矢印を選択し、メニューから [追加] を選択します。
    7. 新しい条件が条件リストの下に追加されます。

  16. 条件を作成後に編集するには
    1. [条件リスト] ペインで、変更する条件をクリックします。[左辺の式]、[演算子]、および [右辺の式] フィールドに該当する値が読み込まれます。
    2. フィールドの値を変更します。
    3. [更新] をクリックします。
    4. または、直接コードで条件を編集できます。これを行うには、条件ビルダの左下隅の [コードの表示] をクリックします。条件ビルダでの設計作業によりファイルに書き込まれた XQuery 関数が、Process.java ファイルのコード行に表示されます。これは @com.bea.wli.commom.XQuery アノテーションにより示されます。

  17. 結合オプションを作成後に編集するには
    1. [条件リスト] ペインで、変更する結合オプションをクリックします。
    2. 適切な結合オプションを選択します。
    3. [更新] をクリックします。
  18. 条件ビルダの右上隅にある [閉じる] をクリックします。
  19. デザイン ビューでは、Decision ノードの条件は次のアイコンを表示します。

    • 式ノードの選択 は、このノードで定義した条件が XML ドキュメントの評価に基づくことを視覚的に表します。
    • 式ノードの選択 は、このノードで定義した条件が MFL ファイルの評価に基づくことを視覚的に表します。
    • XML か MFL の条件を定義すると、XQuery 関数が生成され、Process.java ファイルに書き込まれます。これはソース ビューで表示できます。これまでの例 (手順 1 から 7) で定義された条件は、次の XQuery 関数を Process.java ファイルに作成します。

      @com.bea.wli.common.Xquery(prolog =
      " declare namespace ns0 =\http://ww.example.org./quote\";"+
      " declare function cond_requestXML_1($requestXML) as  xs:boolean {"+
      " fn:data($requestXML/customerName) = \"BEA\""+
      "};")
  20. 作業内容を保存するには、[ファイルArrow symbol保管] を選択します。
メソッド

次の手順では、XML または MFL スキーマに関連付けられたビジネス プロセス変数の選択方法を説明します。

  1. [Java メソッド名] フィールドで Java メソッドの名前を入力するか、既存のメソッドを選択するために 式ノードの選択 をクリックします。
  2. ノード ビルダの左下の [コードの表示] をクリックします。
  3. ソース ビューが、Java メソッドが書き込まれた Process.java ファイルのコード行に表示されます。

  4. Java メソッドを編集します。
  5. デザイン ビューに戻るために、タブをクリックします。
  6. [閉じる] をクリックして、条件ビルダを閉じます。
  7. デザイン ビューでは、Decision ノードの条件は次のアイコン 式ノードの選択 で表示されます。これは、分岐の基づいて Java メソッドを指定するソース コードで定義した条件の画像表現です。このノードに表示される条件をさらに変更するには、ソース ビューでソース コードを編集する必要があります。

  8. 作業内容を保存するには、[ファイルArrow symbol保管] を選択します。
Decision ノードのパスにアクティビティを追加するには

実行時にフローが Decision ノードに移行したときに評価される条件を定義すると、フローの実行パスを意味するパス上にアクションを定義する準備が整います。

  1. ノード (または複数のノード) を Decision ノードにある各パスに追加して、パスの先頭の条件ノードで定義された条件が true と評価されたときに実行されるアクティビティを定義します。
  2. これは、ビジネス プロセスのビジネス ロジックに適したアクティビティを実行するものであれば、どのようなノードでも可能です。たとえば、コントロールを使用して、データベース、JMS キュー、または EJB などの外部リソースと対話することができます。

  3. ノード (または複数のノード) をデフォルト パスに追加します。このパスは、実行時に true に評価される条件がない場合に、実行するアクティビティを定義します。デフォルト パス上のノードは、ビジネス プロセスのビジネス ロジックに適したアクティビティを定義するものであれば、どのようなノードでも可能です。

Decision ノードのパス上にアクティビティを追加すると、分岐ロジックは一連の条件やアクションとしてビジネス プロセスに表されます。

Decision ノードの例

図 8-3 に、デザイン ビューDecision ノードの例を示します。

図 8-3 Decision ノード

Decision ノード

変数 (スキーマ) 条件の作成に使用した QuoteRequest の例の作成では、2 つの Perform ノードが Decision ノードのパスに追加されます。実行時には、この分岐ノードの制御フローは次のシーケンスのようになります。

  1. Check Customer 条件ノードで定義された条件が評価されます。
  2. fn:data($requestXML/ns0:customerName) = "BEA"
    注意 : 条件ノードで評価された XML は、requestXML ビジネス プロセス変数に割り当てられます。
  3. Check Customer 条件が実行時に true に評価された場合は、BEA Orders ノードに定義されたアクティビティが実行され、フローは Decision ノードを出ます。
  4. Check Customer 条件が実行時に false に評価された場合は、実行パスは Default パスになります。Non BEA Orders ノードで定義されたアクティビティが実行され、制御フローは分岐ノードを出ます。

関連トピック

ビジネス プロセスでの Decision ノードの作成

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

例外の処理

メッセージ パスの追加

タイムアウト パスの追加

ビジネス プロセスのソース コード

コントロールを使用してリソースと対話する


  ページの先頭       前  次