新しい種類のデータを収集する場合、または既存の種類のデータを新しい記録手法によって収集する場合には、新規レコーダーを定義します。
レコーダーに要求される唯一の作業はデータの収集です。レコーダーがクライアントを開始したり構成したりすることはありません。クライアントを開始したり、レコーダーで記録できるようにクライアントを構成したりする必要がある場合には、『新規クライアントの定義』および『レコーダーによるクライアントの記録方法の定義』を参照してください。
新規レコーダーを定義するには、以下のようにします。
- plugin.xml で新規レコーダー・タイプを宣言します。com.ibm.rational.test.lt.recorder.core.recorder 拡張ポイントを使用してください。
- レコーダーについて、ワークベンチ内でローカルに実行可能であるのか、別の Java 仮想マシン (JVM) 内でリモート実行する必要があるのかを決定します。
- レコーダーの実装クラスである代行を定義します。
代行はレコーダーを開始および停止し、データを収集します。
- リモート・レコーダーの場合には、代行を実行する JVM についての詳細を提供するリモート・ランチャーの実装を定義します。
- オプションで、レコーダーを現在のコンピューター上で実行できるかどうかの基本的な検査を実行する前提条件バリデーターを定義します。
- レコーダーによってどのタイプのレコーダー・パケットが出力されるかを宣言します。
IRecorderDelegate インターフェースを実装するための以下の要件に従います。
- このインターフェースは、レコーダーを開始および停止し、「レコーダー開始済み」、「レコーダー停止済み」、および「パケット収集済み」などのイベント通知を提供します。
このインターフェースの実装を提供する必要があります。
オプションで、レコーダーは一時停止および再開をサポートすることができます。
レコーダーが一時停止操作および再開操作をサポートしていない場合は、それらのメソッドの実装が空になるようにしてください。
- 大部分のメソッドは非同期です。
言い換えると、フレームワークでは、メソッドが戻る際に操作が完了している必要はありません。
そのため、レコーダー代行は、操作が完了したらフレームワークに通知する必要があります。
- レコーダーは構成を持つことができます。
構成は、XML ファイル (拡張子は .recconfig) またはウィザードを使用して作成されます。
XML ファイルの例については、既存の記録セッション・ファイルを開き、とクリックしてください。
構成は RecorderConfiguration オブジェクト内に格納されます。このオブジェクトは、ストリングを各種タイプのオブジェクトにマップしたものです。
レコーダー代行は、その initialize() メソッドの中でこの構成を読み取ります。
- レコーダー代行には、その initialize() メソッドの中でコンテキストが与えられます。
このコンテキストにより、レコーダーはイベントの通知を送信したり、ログ・メッセージを記録したり、収集したパケットを送信したりできます。
- 通常は、IRecorderDelegate インターフェースを直接実装するのではなく、BaseRecorderDelegate クラスを拡張します。基底抽象クラスには大部分のメソッドの基本的な振る舞いが用意されているため、ユーザーは必要なもののみをオーバーライドすれば済みます。
- レコーダーは、getContext().packetCaptured() メソッドを使用して、いつデータを収集したかをフレームワークに通知する必要があります。
- レコーダーがパケットを構成する際、パケットにレコーダー ID を埋め込む必要があります。
レコーダー ID は、フレームワークによって属性が設定され、getContext().getComponentUniqueId() メソッドを使用して取得できます。
- レコーダーがパケットを構成する際、パケットに時刻情報を埋め込む必要があります。
時刻情報は、フレームワークが規定する単位で表す必要があります。getContext().currentTime() メソッドを使用することで、フレームワークの単位で表された現在時刻を取得できます。
- BaseRecorderDelegate クラスを拡張していないレコーダー代行の場合は、sendUserMessage() メソッドまたは getContext().sendMessage(new UserMessage(...)) メソッドを呼び出すことによって、ユーザーにメッセージを送信できます。
- レコーダー代行は、動的プロパティーを設定または取得するか、メッセージを受信することによって、外部エンティティーと通信できるようになります。
レコーダー代行が役に立つのは、レコーダーの特定の UI を作成する場合、またはレコーダーのクライアント・デコレーターを定義する場合のみです。