Éste es un ejemplo de SampleSubsystem.java.
SampleSubsystem.java
package customcode;
import com.ibm.rational.test.lt.kernel.action.IKAction;
import com.ibm.rational.test.lt.kernel.engine.impl.Queue;
import com.ibm.rational.test.lt.kernel.impl.KSubsystem;
/**
* Subsistema del motor RPT de muestra
*/
public class SampleSubsystem extends KSubsystem {
private Queue sampleSubsystemQueue;
private boolean stopRequested = false;
private SampleAction client;
public SampleSubsystem(String name) {
super(name);
sampleSubsystemQueue = new Queue();
sampleSubsystemQueue.setBlocking(true); // Permite esperar a que aparezca algo en la cola
}
/*
* Las acciones entran en el subsistema para prestar el servicio a través de una llamada a enqueue().
* Una acción puede obtener una referencia al subsistema mediante el método
* IKAction getSubsystem().
*
* @see com.ibm.rational.test.lt.kernel.IKSubsystem#enqueue(com.ibm.rational.test.lt.kernel.action.IKAction)
*/
public void enqueue(IKAction action) {
sampleSubsystemQueue.enqueue(action);
}
/*
* Mensaje al subsistema para que se detenga.
*
* @see com.ibm.rational.test.lt.kernel.IKSubsystem#shutdown()
*/
public void shutdown() {
stopRequested = true;
}
/*
* @see java.lang.Thread#run()
*/
public void run() {
while(!stopRequested) {
ringIn(); // Informa de que el subsistema del motor está en buen estado
client = null;
// Si no hay nada que hacer, espera trabajo
updateJob("Idle");
client = (SampleAction)sampleSubsystemQueue.dequeue(pingTime);
// El trabajo de este subsistema será estar en contacto con un atributo de la acción
if (client != null) {
updateJob("Servicing " + client.getName()); // Bueno para depurar
client.setServiced();
dispatch(client); // La acción proporcionada abandona el subsistema
}
}
}
}