![]() ![]() ![]() ![]() |
デフォルトでは、分岐ノードには 1 つの条件、条件ノードの下に続く、条件または条件のセットの評価結果が「true」のときに進む実行パスを表すパス、および条件ノードの右に続く、条件の評価結果が「false」のときに進む実行パスを表すパス (デフォルト パス) があります。
注意 : | 分岐ノードには条件ノードやパスを追加することができますが、ここでは条件の 1 セットと 2 つのパスだけを使用します。 |
この手順では、分岐ノードの 1 つの実行パスにロジック (Sales Tax Calculation Needed?) を追加する方法を学習します。具体的には、コントロールを介してリソースと対話するようにビジネス プロセスを設計する方法を学びます。ビジネス プロセスは Web サービスを呼び出し、その Web サービスから返されたデータを処理します。ここでは、以下のトピックについて説明します。
Java コントロールは、Workshop フレームワークで管理されているサーバサイド コンポーネントです。Java コントロールは、Workshop アプリケーションで使用できるように、外部リソースとビジネス ロジックをカプセル化します。つまり、コントロールは、ビジネス プロセスと他のリソース間のインタフェースです。基底のコントロールの実装で、対話の詳細の大部分を処理します。コントロールにより、ビジネス プロセスから直接呼び出し可能な Java インタフェースがエクスポーズされます。ユーザは、コントロールのインスタンスをプロジェクトに追加し、そのメソッドを呼び出します。
このシナリオでは、ビジネス プロセスが呼び出す Web サービスによって消費税が計算され、ビジネス プロセスに返されます。ビジネス プロセスは、Web サービス コントロールを介して Web サービスを呼び出します。この Web サービス コントロール (TaxCalcControl.java
) は、アプリケーションのプロジェクト内、Tutorial_Process_Application_WEB\requestquote\services
フォルダに用意されています。myapplications は、チュートリアル アプリケーションを作成した場所を表しています。
TaxCalc.java
Web サービスとそれに関連付けられているコントロール (TaxCalcControl.java
) の作成方法の詳細については、このチュートリアルでは説明していません。このチュートリアルの手順 4 の目的は、ビジネス プロセスに適切なノードを作成する方法と、それらのノードとこの Web サービス コントロールとの通信を設計する方法について説明することです。
この節では、分岐ノードに定義された条件の評価結果が true のときに実行するアクティビティの作成方法について説明します。クライアントから受け取った XML ドキュメント内の shipAddress/state
の値が、CA、California、NJ、または New Jersey と等しい場合、評価結果は true になります。
この節では、ビジネス プロセスから Web サービスを呼び出す方法と、その Web サービスから返されるデータを受け取るコールバック ハンドラを作成する方法を学習します。この手順で実行するタスクは次のとおりです。
注意 : | TaxCalcControl.java を [パッケージ・エクスプローラー] ペインからデータ パレットにドラッグ アンド ドロップすることもできます。このファイルは、Tutorial_Process_application_WEB/src/requestquote.services/TaxCalcControl.java にあります。 |
この手順では、ビジネス プロセスから税計算コントロールを呼び出すロジックを作成します。
void requestTaxRate(String stateID_arg)
taxCalculation Web サービス コントロールへの非同期呼び出しを表すコントロール送信ノードが作成されます。このノードの名前は、ビジネス プロセスまでドラッグしたメソッドの名前に従って、requestTaxRate となります。
注意 : | この対話は非同期として設計されます。つまり、ビジネス プロセスは、このノードから taxCalcControl に要求を送信でき、コントロールからの応答を待ってブロックすることはありません。言い換えれば、ビジネス プロセスは、処理を続行し、taxCalcControl サービスが要求を完了したときに、そのサービスから応答を受け取ることができます。 |
デフォルトでは、[データの送信] を開くと [変数の割り当て] ペインが表示されます。[コントロールが予期する値] フィールドには、taxCalcControl Web サービスがエクスポーズする requestTaxRate
() メソッドが予期するデータ型で String stateID_arg と表示されます。
注意 : | 前の手順で学習したように、[データの受信] タブには 2 つのモードがあります。 |
この場合は、taxCalcControl コントロールへの入力として必要なデータ型は Java String 型で、見積り要求メッセージ (shipAddress/state
の値を含む) が格納される変数は XML 型 (XML スキーマに対して有効な QuoteRequestDocument
) であるため、[トランスフォーメーション] モードに切り替える必要があります。
BEA Products には、異質なデータ型をマップするデータ マッピング ツールがあります。このツールを使って作成するデータ トランスフォーメーションは、データ トランスフォーメーション ファイルに格納されます。トランスフォーメーション ファイルは、ビジネス プロセスがコントロールを介して対話するリソースの 1 つと考えることができます。つまり、データ トランスフォーメーションが格納されているトランスフォーメーション ファイルは、コントロールとしてビルドされます。コントロールは、トランスフォーメーション メソッドをエクスポーズし、それをビジネス プロセスにより呼び出して異種のデータ型をマッピングします。
requestXML
(QuoteRequestDocument
)] を選択します。これは、ビジネス プロセスの最初にクライアント要求ノード用に作成した変数です。注意 : | 前の手順でトランスフォーメーションを作成すると、プロジェクトにトランスフォーメーション コントロール (RequestQuoteTransformation.java という名前の Java ファイル) が作成されます。また、トランスフォーメーション メソッドに対するクエリ (XQuery 言語による) を含んだ XQ ファイルも作成されます。Java ファイルと XQ ファイルはどちらも [パッケージ・エクスプローラー] タブに表示されます。また、トランスフォーメーション コントロールのインスタンスが作成され、データ パレットの Controls フォルダに ![]() |
ビジネス プロセスと税計算コントロールとの対話は非同期的に行われます。つまり、税計算サービスが応答を準備している間も、ビジネス プロセスは他の作業を引き続き実行できます。税計算サービスからの応答が用意できると、ビジネス プロセスに通知されます。
前の節では、コントロールを介した、税計算 Web サービスの呼び出しを設計しました。税計算コントロールから返される税率を受け取るロジックをビジネス プロセスに追加するには、以下の手順を実行します。
void returnTaxRate(float taxRate_arg)
Web サービス コントロールからの非同期応答を表すコントロール受信ノードが作成されます。
このノードの名前は、ビジネス プロセスまでドラッグしたメソッドの名前に従って、returnTaxRate となります。
[コントロールが返す値] フィールドには、taxCalculation コントロールに対する returnTaxRate()
メソッドが返すパラメータのデータ型と名前、float taxRate
が表示されます。
この手順で、returnTaxRate ノードの設計と、分岐ノードの条件の評価結果が true のときにビジネス プロセスが実行するアクティビティの設計が完了します。デザイン ビューでは、ビジネス プロセスが以下の図のように表示されます。
Web サービス コントロールへの非同期呼び出しを追加した後に、開始ノードのアイコンが から
に変ります。前のアイコンはビジネス プロセスがステートレスであることを示し、後のアイコンはビジネス プロセスにステートがあることを示します。
これらのアイコンは、ビジネス プロセスの stateless プロパティの仕様を反映しています。stateless プロパティが true と定義されているか false と定義されているかを確認するには、開始ノード アイコン をクリックし、プロパティ エディタを表示します。ステートフル ビジネス プロセスとステートレス ビジネス プロセスについては、「ステートレス/ステートフル ビジネス プロセスの構築」を参照してください。プロパティをステートレスからステートフルに変更する理由については、「トランザクション境界」を参照してください。
注意 : | BEA Workshop に [プロパティ] ペインが表示されていない場合は、メニュー バーから [ウィンドウ![]() ![]() |
注意 : | この分岐ノードでこれ以上の設計作業を行う必要はありません。条件の評価結果が true の場合は、[Yes] パスに沿って実行パスが進み、税率が計算されます。条件の評価結果が false の場合は、消費税の計算が不要です。実行パスは [No] パスに沿って進み、値 0 が変数 taxRate に割り当てられます。前の節で taxRate 変数を設計したときには、taxRate がゼロに初期化されるように指定しました。 |
![]() ![]() ![]() |