Ejemplo de código SampleSubsystem.java

É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
			}
		}
	}
}

Comentarios