|
プロセス コントロールは、Java/RMI を使用して同じドメイン内の他のビジネス プロセスに要求を送信したり、そのビジネス プロセスから応答を受信したりするために使用されます。このシナリオは、親ビジネス プロセスからサブプロセスを呼び出すという、プロセス コントロールの一般的な使用例を示しています。
チュートリアルのこのパートでは、前のパートで作成したビジネス プロセスの設計を変更して、前に使用した税計算 Web サービスの代わりに、ビジネス プロセスで提供される税計算サービスを使用するようにします。これを行うには、まず税計算ビジネス プロセスからプロセス コントロールを作成します。その後で、コントロール ノードを変更して、ノードが Web サービス コントロールを介して税計算 Web サービスと通信するのではなく、新しいプロセス コントロールを介して税計算ビジネス プロセスと通信するようにします。
RequestQuote.java を開きます。
プロジェクトですでに使用可能なコントロールのインスタンスが、[データ パレット] ビューの [コントロール] フォルダ内に表示されます。
[コントロールの挿入 - プロセス] ダイアログ ボックスが表示されます。
taxCalcProcess を入力し、[次へ] をクリックします。TaxCalculationProcess と入力し、[次へ] をクリックします。 /Tutorial_Process_Application_Web/src/requestquote.services/TaxCalcProcess.java を選択します。
この Java ファイルは、RFQ の消費税を計算する単純なビジネス プロセスです。
TaxCalcProcess.java (requestTaxRate) の開始メソッドが [開始メソッド] フィールドに表示されます。
プロセス コントロール (TaxCalcControl.java) が作成され、[パッケージ・エクスプローラー] ビューに表示されます。コントロールのインスタンス (taxCalcProcess) が [データ パレット] に追加されます。[データ パレット] ビュー内の [コントロール] 領域は、以下の図のように表示されます。
コントロール] フォルダ下の [taxCalcProcess] の横にある [+] をクリックして、コントロールのメソッドのリストを展開します。 RequestQuote.java プロセスの [requestTaxRate] ノード上にドロップします。
このコントロール ノードは、すでにコントロール メソッドに関連付けられています。このコントロール メソッドを置換しますか ?
[requestTaxRate] ノードは、関連付けられているコントロールのタイプを反映するように変更されます。ノードは以下のように変更されます。
taxCalcProcess] が選択され、[メソッド] フィールドで以下のメソッドが選択されていることを確認します。void requestTaxRate (QuoteRequestDocument quoteRequest)
デフォルトで [変数の割り当て] オプションが選択され、[コントロールが予期する値] フィールドには QuoteRequestDocument quoteRequest と表示されて、税計算プロセスで必要なメッセージのフォーマットと型が示されます。
| 注意 : | 税計算プロセスでは、XML 型のメッセージ QuoteRequestDocument が必要です。これは、クライアントから RequestQuote.java プロセスに送られる XML メッセージが割り当てられている requestXML 変数と同じ型になります。「手順 4 : Web サービスの呼び出し」で税計算 Web サービスにデータを送信するシナリオとは異なり、このノードではトランスフォーメーションが不要です。変数の直接割り当てを作成できます。 |
この手順で、ビジネス プロセスを変更して、税計算 Web サービスの代わりに税計算ビジネス プロセスを呼び出すようにする処理が完了します。
taxCalcProcess] の横にある [+] をクリックして、コントロールのメソッドのリストを展開します。RequestQuote.java プロセスの [returnTaxRate] ノード上にドロップします。
このコントロール ノードは、すでにコントロール メソッドに関連付けられています。このコントロール メソッドを置換しますか ?
[returnTaxRate] ノードが、関連付けられているコントロールのタイプを反映するように変更されます。
void returnTaxRate(float salesTaxRate)
デフォルトで [変数の割り当て] オプションが選択され、[コントロールが返す値] フィールドには float salesTaxRate と表示されて、税計算プロセスから返されるパラメータの型と名前が示されます。
taxRate (float)] を選択します。
この手順で、コールバック ハンドラを変更し、メッセージを税計算 Web サービスからではなく、税計算ビジネス プロセスから受け取るようにする処理が完了します。
この時点で前のパートでビジネス プロセスをテストしたのと同じ方法で、別のビジネス プロセスへの非同期呼び出しをもつビジネス プロセスを実行およびテストすることができます。「手順 5 : ビジネス プロセスの実行」の手順 1 ~ 7 を実行します。
[テスト フォーム] ページで操作を開始すると、[メッセージ ログ] の内容が更新されて、税計算ビジネス プロセスへの呼び出しと税計算ビジネス プロセスからの応答の概要が表示されます。
![[メッセージ ログ]](wwimages/taxcalculation_test2.gif)
ビジネス プロセスのメソッドに対応する [メッセージ ログ] のエントリは次のとおりです。
quoteRequest メソッド。taxCalcProcess.requestTaxRate。ここでは、requestXML 変数に格納されている XML ドキュメント全体がサブプロセスに渡される点に注目します。これは、ビジネス プロセスが税計算 Web サービスを呼び出す場合に、state フィールドのみが Web サービスに渡される点と異なります。taxCalcProcess.returnTaxRate。Web サービスの戻り値と同じである、Web サービス SOAP エンベロープに返される税率の代わりに、プロセス コントロールは、float 値 (0.08) をそのまま返します。
|