Wenn Sie einen neuen Datentyp oder einen vorhandenen Datentyp mit einem neuen Aufzeichnungsverfahren erfassen möchten, müssen Sie einen neuen Recorder definieren.
Die einzige Aufgabe eines Recorders ist die Erfassung von Daten. Mit dem Recorder wird kein Client gestartet oder konfiguriert. Wenn Sie einen Client starten oder so konfigurieren müssen, dass er von einem Recorder aufgezeichnet werden kann, finden Sie entsprechende Informationen dazu unter Neuen Client definieren und unter Aufzeichnung eines Clients mit einem Recorder definieren.
So definieren Sie einen neuen Recorder:
- Deklarieren Sie in der Datei plugin.xml einen neuen Recordertyp. Verwenden Sie den Erweiterungspunkt com.ibm.rational.test.lt.recorder.core.recorder.
- Legen Sie fest, ob der Recorder lokal innerhalb der Arbeitsumgebung ausgeführt werden kann oder ob er über Fernzugriff in einer separaten Java Virtual Machine (JVM) ausgeführt werden muss.
- Definieren Sie einen Delegaten, bei dem es sich um die Implementierungsklasse des Recorders handelt. Dieser Delegate startet und stoppt den Recorder und zeichnet Daten auf.
- Wenn der Recorder remote angebunden ist, definieren Sie eine Implementierung eines fernen Startprogramms, die Details zu der JVM bereitstellt, in der der Delegat ausgeführt wird.
- Optional können Sie ein Prüfprogramm für Voraussetzungen definieren, mit dem eine grundlegende Prüfung vorgenommen wird, ob der Recorder auf dem aktuellen Computer ausgeführt werden kann.
- Deklarieren Sie, welche Recorderpakettypen vom Recorder ausgegeben werden.
Erfüllen Sie beim Implementieren der Schnittstelle IRecorderDelegate die folgenden Anforderungen:
- Über diese Schnittstelle wird der Recorder gestartet und gestoppt. Außerdem werden Benachrichtigungen über Ereignisse wie "Recorder gestartet", "Recorder gestoppt" und "Paket erfasst" gesendet. Sie müssen eine Implementierung dieser Schnittstelle bereitstellen. Optional kann ein Recorder das Anhalten und Fortsetzen unterstützen. Wenn der Recorder keine Operationen zum Anhalten und Fortsetzen unterstützt, stellen Sie sicher, dass die Implementierungen der Methoden leer sind.
- Die meisten Methoden sind asynchron. Mit anderen Worten: Das Framework erfordert keinen Abschluss der Operation, wenn die Methode zurückgegeben wird. Aus diesem Grund muss das Framework von einem Recorder-Delegaten benachrichtigt werden, wenn eine Operation abgeschlossen ist.
- Ein Recorder kann eine Konfiguration aufweisen. Die Konfiguration wird entweder mithilfe einer XML-Datei mit der Erweiterung ".recconfig" oder mit einem Assistenten erstellt. Wenn Sie ein Beispiel einer XML-Datei anzeigen möchten, öffnen Sie eine vorhandene Aufzeichnungssitzungsdatei und klicken Sie dann auf . Die Konfiguration ist in einem Objekt des Typs "RecorderConfiguration" gespeichert, bei dem es sich um eine Zuordnung von Zeichenfolgen zu verschiedenen Objekttypen handelt. Diese Konfiguration wird von einem Recorder-Delegaten in seiner Methode "initialize()" gelesen.
- Einem Recorder-Delegaten wird in seiner Methode "initialize()" ein Kontext gegeben. Dieser Kontext ermöglicht es dem Recorder, Benachrichtigungen über Ereignisse zu senden, Protokollnachrichten aufzuzeichnen und erfasste Pakete zu senden.
- Normalerweise erweitern Sie die Klasse "BaseRecorderDelegate", statt die Schnittstelle IRecorderDelegate direkt zu implementieren. Die abstrakte Basisklasse stellt ein grundlegendes Verhalten für die meisten Methoden bereit, sodass Sie nur die benötigten Methoden zu überschreiben brauchen.
- Ein Recorder muss die Methode "getContext().packetCaptured()" verwenden, um das Framework zu benachrichtigen, wenn Daten erfasst wurden.
- Wenn mit einem Recorder ein Paket erstellt wird, muss in das Paket eine Recorder-ID eingetragen werden. Die Recorder-ID wird vom Framework zugewiesen und kann mithilfe der Methode "getContext().getComponentUniqueId()" abgerufen werden.
- Wenn mit einem Recorder ein Paket erstellt wird, müssen in das Paket Zeitinformationen eingetragen werden. Die Zeitinformationen müssen in einer vom Framework definierten Einheit ausgedrückt werden. Die aktuelle Uhrzeit (ausgedrückt in den Einheiten des Frameworks) kann mit der Methode "getContext().currentTime()" abgerufen werden.
- Ein Recorder-Delegat kann Nachrichten an den Benutzer senden, indem er die Methode "sendUserMessage()" oder die Methode "getContext().sendMessage(new UserMessage(...))" aufruft, wenn er nicht die Klasse ""BaseRecorderDelegate" erweitert.
- Einem Recorder-Delegaten kann die Kommunikation mit externen Entitäten ermöglicht werden, indem dynamische Eigenschaften festgelegt oder abgerufen oder Nachrichten empfangen werden. Ein Recorder-Delegat ist nur dann nützlich, wenn Sie eine spetielle Benutzeroberfläche für den Recorder entwickeln oder wenn Sie einen Clientdekorator für den Recorder definieren.