SampleSubsystem.java コード・サンプル

これは、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;

/**
 * RPT エンジン・サブシステムのサンプル
 */

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);			// キューに何かが表示されるのを待つことを考慮する
	}

	/*
	 * アクションは、enqueue() の呼び出しを介してサービスのためにサブシステムに入ります。
	 * アクションは、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);
	}

	/*
	 * サブシステムに対する停止のメッセージ。
	 * 
	 * @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();				// エンジンのサブシステムが正常であることを通知する
			client = null;
			
			// 処理することがない場合は、作業を待つ
			updateJob("Idle");
			client = (SampleAction)sampleSubsystemQueue.dequeue(pingTime);

			// このサブシステムの処理は、アクションの属性に作用することになる
			if (client != null) {
				updateJob("Servicing " + client.getName());	// デバッグに有効
				
				client.setServiced();
				dispatch(client);		// サービス提供アクションがサブシステムから離れる
			}
		}
	}
}

フィードバック