Para capturar um novo tipo de dado ou um tipo de dado existente com uma nova técnica de gravação, defina um novo gravador.
A única tarefa requerida para um gravador é capturar dados. O gravador não inicia ou configura um cliente. Se você precisar iniciar um cliente ou configurar um cliente para que ele possa ser gravado por um gravador, consulte Definindo um Novo Cliente e Definindo Como um Gravador Pode Registrar um Cliente.
Para definir um novo gravador:
- Declare um novo tipo de gravador no arquivo plugin.xml. Use o ponto de extensão com.ibm.rational.test.lt.recorder.core.recorder.
- Determine se o gravador pode ser executado localmente, dentro do ambiente de trabalho, ou remotamente, em uma Java virtual machine (JVM) separada.
- Defina um delegado, que é a classe de implementação do gravador.
O delegado inicia e para o gravador e captura dados.
- Se o gravador for remoto, defina uma implementação de ativador remoto que forneça detalhes sobre a JVM que executa o delegado.
- Opcionalmente, defina um validador de pré-requisito que execute a verificação básica na qual o gravador pode ser executado no computador atual.
- Declare quais tipos de pacotes de gravadores serão emitidos pelo gravador.
Siga estes requisitos para implementar a interface IRecorderDelegate:
- Essa interface inicia e para o gravador e fornece notificação sobre eventos como "gravador iniciado", "gravador interrompido" e "pacote capturado". Você deve fornecer uma implementação desta interface. Opcionalmente, um gravador pode suportar pausa e retomada. Se ele não suportar as operações de pausa e retomada, verifique se as implementações dos métodos estão vazias.
- A maioria dos métodos é assíncrona. Ou seja, a estrutura não requer que a operação seja concluída quando o método é retornado.
Por essa razão, um delegado de gravador deve notificar a estrutura quando uma operação for concluída.
- Um gravador pode ter uma configuração. A configuração é criada usando um arquivo XML com a extensão .recconfig ou usando um assistente. Para obter um exemplo de um arquivo XML, abra um arquivo da sessão de gravação existente e clique em . A configuração é armazenada em um objeto RecorderConfiguration, que é o mapa das sequências para vários tipos de objetos. Um delegado de gravador lê essa configuração em seu método initialize().
- Um contexto é fornecido ao delegado de gravador em seu método initialize().
Esse contexto permite que o gravador envie notificações de eventos, grave mensagens de log e envie pacotes capturados.
- Geralmente, você estende a classe BaseRecorderDelegate em vez de implementar diretamente a interface IRecorderDelegate. A classe base abstrata fornece um comportamento básico para a maioria dos métodos, para que você possa substituir apenas os necessários.
- Um gravador deve usar o método getContext().packetCaptured() para notificar a estrutura quando ela tiver dados capturados.
- Quando um gravador cria um pacote, esse pacote deve ser preenchido com um ID de gravador. O ID de gravador é atribuído pela estrutura e pode ser recuperado usando o método getContext().getComponentUniqueId().
- Quando um gravador cria um pacote, esse pacote deve ser preenchido com informações de tempo. As informações de tempo devem ser expressas em uma unidade definida pela estrutura. O tempo atual, expresso nas unidades da estrutura, pode ser recuperado usando o método getContext().currentTime().
- Um delegado de gravador poderá enviar mensagens para o usuário chamando o método sendUserMessage() ou o método getContext().sendMessage(new UserMessage(...)), se o delegado não estender a classe BaseRecorderDelegate.
- Um delegado de gravador pode ser ativado para se comunicar com entidades externas configurando ou recuperando propriedades dinâmicas ou recebendo mensagens. Um delegado de gravador será útil apenas se você desenvolver uma UI específica para o gravador ou se você definir um decorador de cliente para o gravador.