|
ビジネス プロセスの一般的な設計パターンの 1 つは、1 つまたは複数の条件の評価に基づいて実行パスを選択するものです。このパターンは、ビジネス プロセスで Decision ノードを定義することにより作成できます。
デフォルトでは、Decision ノードは、1 つの条件、条件の下に続くパス (分岐の評価が true の場合にたどる実行パスを表す)、および条件の右に続く (デフォルト) パス (条件の評価が false の場合にたどる実行パスを表す) から成ります。Decision ノードには条件を追加できます。条件を追加すると、最初の条件の評価が false の場合に、2 番目の条件が評価されます。2 番目の条件が false に評価された場合は、またその次の条件が評価されます。デフォルトのパスは、どの条件も満たされない場合に実行されます。
| 注意 : | ケース文を作成するために、WebLogic Integration には切り替えノードと呼ばれるカスタマイズしたノードがあります。切り替えノートの使用方法、および分岐ノードとの違いについては、「ケース文の作成」の「Decision ノードと Switch ノードの比較」を参照してください。 |
この節では、Decision ノードのビジネス プロセスへの追加方法、条件の定義方法、および Decision ノードで実行する代替パスへのアクティビティの定義方法について説明します。内容は以下のとおりです。
ビューの表示
ノード パレット] を選択します。
Decision] をクリックします。
図 8-1 に示すように、デザイン ビューを更新すると、Decision ノードが含まれます。
をクリックします。
複数の条件を定義して実行すると、最初の条件の評価が false の場合に、2 番目の条件が評価されます。2 番目の条件が false に評価された場合は、またその次の条件が評価されます。デフォルトのパスは、どの条件も満たされない場合に実行されます。
は、このノードの設計が未完成であることを示します。ノードの設計を完成すると、
は
に変わります (「Decision ノードの例」を参照)。すべての条件をコンフィグレーションすると、Decision ノードが完了します。
Decision ノードのロジックを作成するには、次の手順を実行する必要があります。
次の手順では、XML または MFL スキーマに関連付けられたビジネス プロセス変数の選択方法を説明します。
| 注意 : | ビジネス プロセス変数の作成方法とスキーマのプロジェクトへのインポート方法については、「ビジネス プロセス変数とデータ型」を参照してください。 |
をクリックしてビジネス プロセス変数を選択します。
プロジェクトにビジネス プロセス変数のドロップダウン リストが表示されます。
たとえば、プロジェクトに XML スキーマ (QuoteRequest.xsd) をインポートし、quoteRequest (QuoteRequest.xsd スキーマに基づく) タイプのビジネス プロセス変数 (requestXML) を作成した場合は、requestXML 変数がビジネス プロセス変数のドロップダウン リストで利用できます。
図 8-2 に示すように、その変数に関連付けられた XML スキーマの表現が [式ノードの選択] フィールドに表示されます。
前の図に示したように、この変数に割り当てられている XML ドキュメントの要素と属性は、ノードの階層として表現されます。例のスキーマ (QuoteRequest.xsd) はルート要素 (quoteRequest)、および子要素 (customerName、shipAddress、および widgetQuoteRequests) を指定します。一方、widgetQuoteRequest 要素は、反復要素 (widgetQuoteRequest) を指定します。(反復する XML 要素は、スキーマの GUI 表現では
により表されます。)
例の説明を続けるために、前の図で表した XML 変数で [customerName] を選択したものとします。[選択された式] フィールドには以下の式が表示されます。
fn:data($requestXML/ns0:customerName)
例 : fn:data($requestXML/ns0:customerName) = "BEA"
デザイン ビューでは、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\""+
"};")
保管] を選択します。
次の手順では、XML または MFL スキーマに関連付けられたビジネス プロセス変数の選択方法を説明します。
をクリックします。
ソース ビューが、Java メソッドが書き込まれた Process.java ファイルのコード行に表示されます。
デザイン ビューでは、Decision ノードの条件は次のアイコン
で表示されます。これは、分岐の基づいて Java メソッドを指定するソース コードで定義した条件の画像表現です。このノードに表示される条件をさらに変更するには、ソース ビューでソース コードを編集する必要があります。
保管] を選択します。
実行時にフローが Decision ノードに移行したときに評価される条件を定義すると、フローの実行パスを意味するパス上にアクションを定義する準備が整います。
これは、ビジネス プロセスのビジネス ロジックに適したアクティビティを実行するものであれば、どのようなノードでも可能です。たとえば、コントロールを使用して、データベース、JMS キュー、または EJB などの外部リソースと対話することができます。
Decision ノードのパス上にアクティビティを追加すると、分岐ロジックは一連の条件やアクションとしてビジネス プロセスに表されます。
図 8-3 に、デザイン ビューの Decision ノードの例を示します。

変数 (スキーマ) 条件の作成に使用した QuoteRequest の例の作成では、2 つの Perform ノードが Decision ノードのパスに追加されます。実行時には、この分岐ノードの制御フローは次のシーケンスのようになります。
fn:data($requestXML/ns0:customerName) = "BEA"| 注意 : | 条件ノードで評価された XML は、requestXML ビジネス プロセス変数に割り当てられます。 |
|