BPEL デザイナー開発者ガイド: BPEL プロセスのテストとデバッグ
執筆:
Bob May
、管理:
Irina Filippova
2007 年 12 月
目次
BPEL デザイナー開発者ガイド
BPEL プロセスのテスト
配備したビジネスプロセスのテストは、BPEL サービスエンジンランタイムへ SOAP メッセージを送信するリモートパートナーサービスとして機能するテストケースの使用を含みます。
簡単に言えば、相互作用のプロセスは次のようになります。BPEL サービスエンジン実行環境が SOAP メッセージを受け取って BPEL プロセスのインスタンスを作成し、インスタンスの実行を開始します。BPEL プロセスは、多数の稼働中のインスタンスを持つことができます。BPEL サービスエンジン実行環境は、メッセージを受信し、相互関係を使用して受信メッセージを適切なプロセスインスタンスへルーティングします。まだインスタンスが存在していない場合は、新しいインスタンスが作成されます。
配備したビジネスプロセスアプリケーションをテスト実行するためには、BPEL サービスエンジン実行環境へ SOAP メッセージを送信するリモートパートナーサービスとして機能するようにテストケースを構成します。
テストケースの作成と実行
テスト結果を得るためには、次のことを行う必要があります。
テストケースを追加して、BPEL 操作に結合します 。
テストプロパティーを設定します 。
テスト入力をカスタマイズします 。
テストケースを実行します 。
ここで説明する手順はすべて、次のことが行われていることが前提です。
テストケースの追加/結合
テストケースを追加して、BPEL 操作に結合するには、次の手順に従います。
IDE の「プロジェクト」ウィンドウで、複合アプリケーションプロジェクトを開き、そのプロジェクトの「テスト」フォルダを表示します。
「テスト」を右クリックし、ポップアップメニューから「新規テストケース」を選択します。
「新規テストケース」ウィザードが起動します。
「テストケース名を入力」ステップで、テストケースの名前を入力して「次へ」をクリックします。
「WSDL ドキュメントの選択」ステップで、BPEL モジュールプロジェクトを開き、テストする操作を含む .wsdl ファイルを選択して、「次へ」をクリックします。
次のステップで、テストする操作を選択し、「完了」をクリックします。
プロジェクトツリーの「テスト」の下に、Input.xml および Output.xml の 2 つのファイルを含む、大文字の「T」という新しいフォルダが作成されます。
注: 「ファイル」ウィンドウ内のテストケースを見ると、Concurrent.properties が 3 番目のファイルとして表示されています。
テストプロパティーの設定
テストプロパティーを設定するには、次の手順に従います。
「プロジェクト」ウィンドウで、複合アプリケーションプロジェクトのノードの下にあるテストケースのノードを右クリックし、ポップアップメニューから「プロパティー」を選択します。
テストケースの次のプロパティーを設定します。
説明 : 文字列
ユーザー入力の項目。テスト内容について入力します。
宛先 : URL (.wsdl ファイルの <soap:address location="THIS"> タグから)
テストする Web サービスの場所を指定します。
SoapAction (デフォルト: 空白)
入力ファイル (読み取り専用。システムによって生成)
入力ファイルの名前です。このファイルには、テストケースの入力データが含まれます。
出力ファイル (読み取り専用。システムによって生成)
出力ファイルの名前です。このファイルには、テストケースの出力データが含まれます。
並行スレッド : 整数。デフォルト = 1
各スレッドは、複数回テストケースを起動できます (次のプロパティーを参照)。したがって、conc=2 および inv=3 の場合、テストケースは 6 回実行されます (2 スレッド、それぞれ 3 回実行)。
スレッド当たり呼び出し : 整数。デフォルト = 1
スレッドごとのテストケースの実行回数です。
テストのタイムアウト (秒) : 整数。デフォルト = 30
各スレッドが終了しなければならない時間です。指定した時間で終了しない場合は、例外がスローされます。
スループット計算 : boolean
チェックボックスが選択されている場合は、スループット統計が計算されます。例: テストで 2 つのスレッドとスレッドごとに 3 回の呼び出しを指定し、テストがそのスレッドの 6 回の呼び出しで 15 秒かかるとすると、統計ではそれぞれ平均 2.5 秒と報告されます。
比較の種類 : 次のオプションを含むドロップダウンリストです。
identical: 出力および実際の出力を文字のストリームとして扱います。
binary: 出力および実際の出力をバイトのストリームとして扱います。
equals: 出力および実際の出力を XML ドキュメントとして扱います。
機能の状態 : 次のオプションを含むドロップダウンリストです。
progress: 実際の結果に関わらず、完了したテストを「success」として記録します。
done: テストの実際の結果を記録します。
テスト入力のカスタマイズ
テスト入力をカスタマイズするには、次の手順に従います。
「プロジェクト」ウィンドウで、「テスト」ノードを展開し、特定のテストケースのノードを展開します。
Input.xml を右クリックし、「編集」をクリックします。
必要に応じて内容を修正します。たとえば、<value>?string?</value> という部分で ?string? 内をクリックし、任意の長さの文字列に置き換えます。ただし、このような文字列には、XML セマンティクスを使用しないかぎり、< (小なり記号) または & (アンパサンド) を含めないでください。
終了したら、「保存」をクリックします。
Output.xml を右クリックし、「編集」をクリックして、ファイルの内容を確認します。
ファイル内が空白である。これは、テストが実行されたときに特別な処理をトリガする、特別な状態です。
テストを実行するたびに、現在の出力が Output.xml の内容と比較されます。検出された相違点は、テストケースフォルダ内の Actual_yymmddhhmmss .xml ファイルに保存されます。ただし、Output.xml が空で始まる特殊なケースでは、出力は Output.xml に書き込まれます。
2 回目以降の実行では、 Output.xml は空ではないので、内容が保持されます。つまり、前回の出力内容が、新しい結果で上書きされることはありません。
テスターの実行
単一のテストケースを実行するには、次の手順に従います。
「プロジェクト」ウィンドウで複合アプリケーションプロジェクトの下の「テスト」を展開し、特定のテストケースのノードを右クリックして「実行」を選択します。
プロジェクトのすべてのテストケースを実行するには、次の手順に従います。
複合アプリケーションプロジェクトを右クリックし、ポップアップメニューから「プロジェクトをテスト」を選択します。
テストケースの結果の確認
1 度目の実行では、失敗したと正しく記録されます。これが起こるのは、作成された出力が (空の) Output.xml ファイルと一致せず、ファイルの空の内容が最初の実行の出力に置き換えられるからです。
テスト結果は、「JUnit テスト結果」ウィンドウに表示されます。このウィンドウは、テストケースを実行すると自動的に開きます。
入力を変更せずにテストを再度実行すると、2 度目以降の実行では成功が記録されます。これは、出力内容が Output.xml の内容と一致するからです。
Input.xml の値を変更し、テストを再実行すると、設定したプロパティーに応じて次のような結果になります。
「機能の状態」プロパティーを「progress」に設定した場合は、不一致が発生しても、テストが成功したとみなされます。
「機能の状態」プロパティーを「done」に設定した場合は、テストは失敗したとみなされます。
テストケースのノードを右クリックし、ポップアップメニューで「相違」をクリックすると、最後の出力と Output.xml の内容の相違が表示されます。
ページの先頭へ
BPEL プロセスのデバッグ
BPEL プロセスのデバッグは、主に Java アプリケーションのデバッグの場合と同じ一般的な原則に従います。BPEL プロセスをデバッグするには、ソースコード内にブレークポイントを設定し、デバッグセッション内でプロセスを 1 ステップずつ実行します。BPEL デバッガでは、BPEL プロセスの実行が視覚的に表示され、変数を確認または変更したり、実行される式の結果を監視したり、フォルトのブレークポイントを使用してフォルトがスローされる前の変数の状態を監視したりできます。
BPEL プロセスのデバッグ手順
BPEL プロセスのデバッグの主な手順は、次のとおりです。
GlassFish アプリケーションサーバーが起動していることを確認します。
テストケースを作成します。
サンプルプロセスの場合、テストケースは自動的に作成されます。新規プロジェクトの場合は、少なくとも 1 つのテストケースを作成します。
BPEL プロセスのファイルをソースビューまたはデザインビューで開きます。
コード内または図上でブレークポイントを設定します。必要に応じて、プロセス内の XPath 式のウォッチポイントを追加するか、フォルトのブレークポイントを追加します。
デバッグセッションを開始します。デバッグセッションの開始を確認するために、「BPEL デバッガコンソール」ウィンドウを監視します。
デバッグセッション中に、1 つまたは複数のテストケースを実行します。
デザインビュー内の図または「BPEL プロセス実行」ウィンドウで BPEL プロセスの実行を検分します。また「BPEL プロセスのインスタンス」ウィンドウで BPEL プロセスの実行中のインスタンスを検分します。
インスタンスがブレークポイントで停止したときは、コードまたは図でステップ実行、「BPEL 変数」ウィンドウで変数の値を検査、または「ウォッチポイント」ウィンドウで XPath 式の値を観察します。
デバッグセッションを終了する.
BPEL デバッグセッションの開始と終了
デバッグセッションは、BPEL デバッガをBPEL サービスエンジンに接続すると開始されます。BPEL サービスエンジンに対して一度に実行できるデバッグセッションは 1 つだけです。
BPEL デバッグセッションが開始されたあと、プロセスインスタンスを 1 ステップずつ実行し、BPEL 変数と XPath 式の値を「 BPEL 変数 」ウィンドウと「 ウォッチポイント 」ウィンドウで調べることができます。デバッガセッション中の BPEL プロセスの実行は、デザインビューの図の中で監視できます。現在の実行位置が進むにつれて、実行されるアクティビティーが図の中で強調表示されます。「BPEL プロセス実行」ウィンドウにも、BPEL プロセスの実行が表示されます。
デバッグ環境を準備するには、次の手順に従います。
「サービス」ウィンドウで、GlassFish V2 アプリケーションサーバーが起動していることを確認します。Application Server にサブノードがあり、緑色の三角が付いていれば、Application Server は動作しています。
サーバーが起動していない場合は、右クリックしてポップアップメニューから「起動」を選択します。アプリケーションサーバーの起動方法については、BPEL サービスエンジン の節を参照してください。
BPEL プロセスの中に ブレークポイント を設定します。
ソースビューでブレークポイントを設定するには、ブレークポイントを設定する行の横をクリックします。
図でブレークポイントを設定するには、デザインビューに切り替えて、要素を右クリックし、ポップアップメニューから「ブレークポイントを切り替え」を選択します。ブレークポイントを持つ要素の上には、赤い四角が表示されます。
「ブレークポイントを切り替え」ホップアップメニューコマンドは、ナビゲータの BPEL 論理ビュー内の要素についても使用できます。ブレークポイントが設定されている要素は、ナビゲータで小さな赤い四角が表示されます (この例では ReceiveItinerary)。
任意で、XPath 式を監視するウォッチポイントを追加できます。ウォッチポイントを追加するには、監視する XPath 式をコピーし、メインメニューから「実行」>「ウォッチポイントを追加」を選択して、「ウォッチポイント式」フィールドに式をペーストします。「了解」をクリックします。
注: コードには存在しないがデバッグの観点から意味を持つ XPath 式を追加することもできます。
BPEL エンジン上でデバッグセッションを開始するには、次の手順に従います。
「プロジェクト」ウィンドウでデバッグする複合アプリケーションプロジェクトを右クリックし、ポップアップメニューから「プロジェクトをデバッグ (BPEL)」を選択します。
IDE によって BPEL サービスエンジン上にデバッグセッションが確立されます。確認のために、「BPEL デバッガコンソール」ウィンドウを監視してください。接続が完了するまでに、多少時間がかかる場合があります。正常に完了すると、「セッション」ウィンドウに新しいセッションが表示され、「BPEL デバッガコンソール」に次のメッセージが表示されます。
11:35:17 Connecting to localhost:3343
11:36:19 Debug session started
「プロジェクトをデバッグ (BPEL)」コマンドでは、次のアクションが実行されます。
BPEL サービスエンジンでのデバッグが有効になります (BPEL サービスエンジンの DebugEnabled プロパティーが true に設定されます)。
複合アプリケーションプロジェクトと、このプロジェクトに追加された JBI モジュールがすべて構築されます。
複合アプリケーションプロジェクトが BPEL サービスエンジンに配備されます。
BPEL デバッガを BPEL サービスエンジンに接続してデバッグセッションが開始されます。
したがって、デバッグセッションを開始したら、確実に BPEL プロセスの最新バージョンが BPEL サービスエンジンに配備されます。
これで、テストケースを実行し、BPEL プロセスが停止するかブレークポイントに到達するまで実行を監視できます。プロセスが進むと、現在のコンテキストが図と「BPEL プロセス実行」ウィンドウに表示されます。
Java デバッグセッションを同時に実行している場合など、複数のデバッグセッションがあるときに現在のセッションを変更するには、「セッション」ウィンドウでそのセッションの名前をダブルクリックします。または、現在のセッションにするセッションを右クリックし、「現在に設定」を選択します。そのセッションが現在のセッションになり、「BPEL プロセスのインスタンス」ウィンドウ、「ウォッチポイント」ウィンドウ、および「BPEL 変数」ウィンドウが更新され、新しい現在のセッションに関連したデータが表示されます。
デバッグセッションを終了するには、「セッション」ウィンドウで、停止するセッションのポップアップメニューを開いて「完了」を選択するか、ツールバーで「デバッガセッションを終了」を選択します。デバッグセッションが終了したことを示すメッセージが「BPEL デバッガコンソール」に表示されます。
すべてのデバッグセッションを終了するには、「セッション」ウィンドウで、任意のセッションを右クリックして「すべてを完了」を選択します。
ブレークポイントを使用した BPEL プロセスのデバッグ
ブレークポイントは、ソースコード内のその位置でプロセスの実行を中断するようデバッガに指示するのに使用します。BPEL プロセスがブレークポイントに達すると、BPEL プロセスが中断され、変数の値の検査やコードのステップ実行などのデバッグ操作を実行できます。
現在 IDE 内で設定されているすべてのブレークポイントを表示および編成するには、「ウィンドウ」>「デバッグ」>「BPEL」>「ブレークポイント」(Alt-Shift-5) を選択して「ブレークポイント」ウィンドウを開きます。
ブレークポイントに到達したプロセスインスタンスをデバッグするには、次の手順に従います。
プロセスインスタンスの実行が中断されたあと、「実行」メニューまたはツールバーで次のコマンドを選択します。
継続 (Ctrl-F5)。 次のブレークポイントに到達するまで、またはインスタンスが完了するまで、現在のプロセスインスタンスを実行します。インスタンスの状態は、「実行中」に変化します。
ステップイン (F7)。 次の BPEL アクティビティーまでステップ実行します。ステップ実行すると、現在の行インジケータが前進し、現在の位置が図上に強調表示され、「BPEL デバッガ」ウィンドウの内容が現在の位置に応じて変更されます。ステップ実行は、BPEL 言語の「アクティビティー」の細分度でのみサポートされ、それより細かい細分度ではサポートされません。
カーソルまで実行 (F4)。 「ナビゲータ」ウィンドウ (BPEL 論理ビュー) または図の中 (デザインビュー) で選択されている位置まで、またはソースビュー内でのカーソル位置まで BPEL プロセスを実行します。カーソル位置まで到達したら、プロセスインスタンスは一時停止します。
BPEL ソースコードからブレークポイントを削除するには、ブレークポイントがある行にカーソルを置いて「実行」>「ブレークポイントを切り替え」を選択するか、ブレークポイントがある行の左余白をクリックします。または、図で、ブレークポイントを持つ要素を右クリックして、ポップアップメニューから「ブレークポイントを切り替え」を選択します。
BPEL プロセスの実行の監視
実行中のプロセスがブレークポイントに到達すると、デザインビューでデバッガの現在位置が強調表示され、BPEL アクティビティーの状態を色で区別します。プロセスが進むと、実行の進捗を反映して、図の中でアクティビティーの色やアイコンが更新されます。
図の中では次の表記が使用されます。
緑色 (グロー)。アクティビティーに設定されているブレークポイントに到達しました。
グレー (グレー表示)。アクティビティーは実行されたことがありません。
緑色の三角形。アクティビティーは実行中です。
青色の三角形。アクティビティーは正常に終了しました。
BPEL プロセスの現在のインスタンスの実行は、「BPEL プロセス実行」ウィンドウでも監視できます (次の節を参照)。
BPEL デバッガウィンドウ
デバッグセッションが開始されると、IDE 編集領域の下にデバッガウィンドウが表示されます。「セッション」、「BPEL プロセスのインスタンス」、「BPEL 変数」、「BPEL プロセス実行」の各ウィンドウには、現在のデバッグセクションで実行されている BPEL プロセスに関連する情報が表示されます。
デバッガウィンドウが表示されない場合は、「ウィンドウ」>「デバッグ」>「BPEL」>「 ウィンドウ名 」を選択します (たとえば、「ウィンドウ」>「デバッグ」>「BPEL」>「BPEL 変数」)。
「ブレークポイント」ウィンドウと「ウォッチポイント」ウィンドウは、標準的な IDE デバッガウィンドウです。これらのウィンドウにはそれぞれ、IDE に設定されているすべてのブレークポイントおよびウォッチポイントが表示されます。
「セッション」ウィンドウ
「セッション」ウィンドウには、Java と BPEL のデバッグセッションも含め、開かれているすべてのデバッグセッションが一覧表示されます。BPEL サービスエンジンの場合、開始できるセッションは 1 つだけです。ただし、「セッション」ウィンドウには、Java セッションなどのほかの開かれているデバッグセッションも表示されます。開かれているセッションのうち、1 つだけが現在のセッションであり、それは太字で示されます。「BPEL プロセスのインスタンス」、「BPEL プロセス実行」、「BPEL 変数」などのほかのデバッガウィンドウには、現在のデバッグセッションに関連するデータだけが表示されます。
ポップアップメニューで選択可能なセッションに、次のアクションを実行できます。
現在に設定。 選択したセッションを現在のセッションにします。
完了。 選択したセッションを終了します。
すべてを完了。 すべてのデバッグセッションを終了します。
「BPEL プロセスのインスタンス」ウィンドウ
「BPEL プロセスのインスタンス」ウィンドウには、現在のデバッグセッション内の BPEL サービスエンジン上で実行されているすべての BPEL プロセスインスタンスが一覧表示されます。
各プロセスインスタンスで表示される情報には、インスタンス名、一意のインスタンス ID、およびその状態が含まれています。プロセスインスタンスの状態は、次のいずれかです。
実行中。 インスタンスは、BPEL サービスエンジン上で現在実行されています。
一時停止中。 インスタンスは何らかの理由で一時停止中です。たとえば、プロセスインスタンスがブレークポイントに到達した可能性があります。
不明。 インスタンスの状態は不明です。
プロセスインスタンスのポップアップメニューには次のコマンドがあります。
現在に設定 。選択しているプロセスインスタンスが現在のインスタンスになります。BPEL デバッガのほかのウィンドウ内のデータが、この設定に応じて変更されます。
再開 . 中断していたプロセスインスタンスが再開します。
終了 。選択しているプロセスインスタンスが終了します。
「BPEL 変数」ウィンドウ
「BPEL 変数」ウィンドウには、現在のプロセスインスタンスと現在の位置に関する BPEL 変数とその値が一覧表示されます。現在の位置は、現在のプロセスインスタンスが中断された場所です。現在のプロセスインスタンスを変更すると、「BPEL 変数」ウィンドウ内のレコードが更新され、新しいプロセスインスタンスと新しい現在位置の変数が反映されます。
ローカル変数の構造は、ツリー表示されます。各変数について表示される情報は、変数名と値です。
「BPEL 変数」ウィンドウでは次の操作を実行できます。
変数の構造を表示する。変数の構造を表示するには、ツリー内で変数のノードを展開します。
変数の値を表示および編集する。変数の値を編集するには、省略符号ボタン (...) をクリックし、エディタウィンドウで新しい値を入力します。
「ウォッチポイント」ウィンドウ
「ウォッチポイント」ウィンドウには、監視する XPath 式の一覧が表示されます。デバッグセッションの前か実行中に、ウォッチポイントを明示的に追加します。「ウォッチポイント」ウィンドウには、式とその値が表示されます。式の値は、プロセスのロジックに応じて、プロセスが進むにつれて変更される場合があります。
「BPEL プロセス実行」ウィンドウ
「BPEL プロセス実行」ウィンドウには、BPEL デバッガでの現在の BPEL プロセスインスタンスの実行の進捗がグラフィカルに表示されます。現在のプロセスインスタンスを変更すると、「BPEL プロセス実行」ウィンドウ内のプロセスツリーが更新され、新しいプロセスインスタンスの状態と新しい現在位置が反映されます。
「BPEL プロセス実行」ウィンドウでは、次の色で BPEL アクティビティーの状態が示されます。
緑。アクティビティーは現在実行中です。
グレー。アクティビティーは実行されたことがありません。
黒。アクティビティーは実行されました。
注: 「BPEL プロセス実行」ウィンドウでは、BPEL プロセス実行の進捗の検分だけが可能です。このウィンドウで何らかの処理を行うことはできません。
BPEL デバッガコンソールのメッセージ
BPEL デバッガコンソールには、次のメッセージが表示されることがあります。
<ホスト>:<ポート> に接続しています
デバッガが BPEL サービスエンジンに接続しようとしています。
デバッグセッションが開始しました
デバッガが BPEL サービスエンジンに正常に接続し、デバッグセッションが開始されました。
デバッグセッションを開始できません : <ホスト>:<ポート> に接続できません : 接続がタイムアウトしました: 接続
このメッセージが表示された場合は、次のことを確認します。
GlassFish V2 アプリケーションサーバーが起動している。
BPEL サービスエンジンが起動している。
BPEL サービスエンジンの「DebugEnabled」プロパティーが「 true 」に設定されている。
ホスト名が、ユーザーが接続している GlassFish V2 アプリケーションサーバーを実行しているマシンのホスト名になっている (デフォルトでは localhost )。
ポートの値が、ユーザーが接続している BPEL サービスエンジンの「DebugPort」プロパティーと同じになっている (デフォルトでは 3343 )。
デバッグセッションを開始できません : すでに <ホスト>:<ポート> に接続しています
この特定のサービスエンジンに接続した実行中のデバッグセッションがすでにあります。
デバッグセッションは終了しました : ターゲットから接続解除されました。
デバッガがサーバーとの接続を失いました。サーバーが動作していて、ネットワークが稼動していることを確認します。
接続を終了
デバッグセッションの接続中にデバッグセッションを明示的に終了しました。
デバッグセッションは終了しました
デバッグセッションの実行中にデバッグセッションを明示的に終了しました。
ページの先頭へ