Commit 2ef82c02 authored by rosemaryng's avatar rosemaryng
Browse files

[Clean up] Debugged Response time / residence time calculation + refactor multiple classes

parent ea7230dc
......@@ -415,10 +415,6 @@ public class Queue extends InputSection {
//If the queue is infinite, the job is put into the queue and an ack is sent
//----REDIRECTION BEHAVIOUR----------//
System.out.println(isRetrialJob ? "----Retrial Job---" : "----Job-----");
if (job.getId() == 623388) {
System.out.println("debug");
}
if (redirectionON) {
NetNode source = message.getSource();
if (!myRegion.belongsToRegion(source)) {
......@@ -505,7 +501,6 @@ public class Queue extends InputSection {
}
} else { // Queue is full. Now we use an additional queue or drop.
// if the job has been sent by the owner node of this queue section
System.out.println("Full");
if (isMyOwnerNode(message.getSource()) && !dropStrategies[jobClass].equals(FINITE_RETRIAL)) { // job sent by the node itself (corner case) -- should always be successful
send(NetEvent.EVENT_ACK, job, 0.0, message.getSourceSection(), message.getSource()); // send acknowledgement to itself
addJobToBuffer(job, message, BufferType.WAITING_REQUESTS);
......
......@@ -162,13 +162,11 @@ public class Server extends ServiceSection {
}
job.setServiceArrivalTime(this.getTime());
jobInServiceMessage = sendMe(job, serviceTime);
System.out.println("serviceTime: " + serviceTime);
} else {
job.setIsPreemptedJob(false);
job.setServiceArrivalTime(this.getTime());
jobInServiceMessage = sendMe(job, job.getServiceTime());
System.out.println("serviceTime Else: " + job.getServiceTime());
}
if (preemption) {
......@@ -185,7 +183,6 @@ public class Server extends ServiceSection {
// this ack again when computation is finished)
sendBackward(NetEvent.EVENT_ACK, message.getJob(), 0.0);
}
// getOwnerNode().getJobInfoList().updateWaitingTime(job, getTime());
} else {
//server is busy
return MSG_NOT_PROCESSED;
......
......@@ -67,9 +67,6 @@ public class GlobalJobInfoList {
private double lastModifyNumber;
private double[] lastModifyNumberPerClass;
private double lastModifyRetrialOrbitNumber;
private double[] lastModifyRetrialOrbitNumberPerClass;
private int jobs;
private int[] jobsPerClass;
......@@ -88,14 +85,8 @@ public class GlobalJobInfoList {
private InverseMeasure balkingRate;
private InverseMeasure[] balkingRatePerClass;
private InverseMeasure retrialRate;
private InverseMeasure[] retrialRatePerClass;
// private Measure retrialOrbitJobNum;
// private Measure[] retrialOrbitJobNumPerClass;
private Measure waitingTime;
private Measure[] waitingTimePerClass;
private InverseMeasure retrialAttemptsRate;
private InverseMeasure[] retrialAttemptsRatePerClass;
private InverseMeasure throughput;
private InverseMeasure[] throughputPerClass;
......@@ -146,8 +137,7 @@ public class GlobalJobInfoList {
lastJobRetrialTimePerClass = new double[classNum];
lastModifyNumber = 0.0;
lastModifyNumberPerClass = new double[classNum];
lastModifyRetrialOrbitNumber = 0.0;
lastModifyRetrialOrbitNumberPerClass = new double[classNum];
jobs = 0;
jobsPerClass = new int[classNum];
......@@ -159,12 +149,9 @@ public class GlobalJobInfoList {
dropRatePerClass = null;
renegingRate = null;
renegingRatePerClass = null;
retrialRate = null;
retrialRatePerClass = null;
// retrialOrbitJobNum = null;
// retrialOrbitJobNumPerClass = null;
waitingTime = null;
waitingTimePerClass = null;
retrialAttemptsRate = null;
retrialAttemptsRatePerClass = null;
throughput = null;
throughputPerClass = null;
systemPower = null;
......@@ -286,7 +273,7 @@ public class GlobalJobInfoList {
* @param job identifier of reneged job
*/
public void retryJob(Job job) {
updateRetrialRate(job);
updateRetrialAttemptsRate(job);
lastModifyNumberPerClass[job.getJobClass().getId()] = lastModifyNumber = getTime();
lastJobRetrialTimePerClass[job.getJobClass().getId()] = lastJobRetrialTime = getTime();
}
......@@ -437,14 +424,14 @@ public class GlobalJobInfoList {
* @param jobClass specified job class. If null measure will be job independent.
* @param Measure reference to a Measure object.
*/
public void analyzeRetrialRate(JobClass jobClass, Measure Measure) {
public void analyzeRetrialAttemptsRate(JobClass jobClass, Measure Measure) {
if (jobClass != null) {
if (retrialRatePerClass == null) {
retrialRatePerClass = new InverseMeasure[classNum];
if (retrialAttemptsRatePerClass == null) {
retrialAttemptsRatePerClass = new InverseMeasure[classNum];
}
retrialRatePerClass[jobClass.getId()] = (InverseMeasure) Measure;
retrialAttemptsRatePerClass[jobClass.getId()] = (InverseMeasure) Measure;
} else {
retrialRate = (InverseMeasure) Measure;
retrialAttemptsRate = (InverseMeasure) Measure;
}
}
......@@ -556,19 +543,19 @@ public class GlobalJobInfoList {
}
/**
* Updates System Retrial Rate measures.
* Updates System Retrial Attempts Rate measures.
* @param job current job
*/
private void updateRetrialRate(Job job) {
if (retrialRatePerClass != null) {
private void updateRetrialAttemptsRate(Job job) {
if (retrialAttemptsRatePerClass != null) {
int index = job.getJobClass().getId();
Measure m = retrialRatePerClass[index];
Measure m = retrialAttemptsRatePerClass[index];
if (m != null) {
m.update(getTime() - lastJobRetrialTimePerClass[index], 1.0);
}
}
if (retrialRate != null) {
retrialRate.update(getTime() - lastJobRetrialTime, 1.0);
if (retrialAttemptsRate != null) {
retrialAttemptsRate.update(getTime() - lastJobRetrialTime, 1.0);
}
}
......
......@@ -328,11 +328,11 @@ public interface JobInfoList {
public abstract void analyzeBalkingRate(JobClass jobClass, InverseMeasure measurement);
/**
* Analyzes the retrial rate for the specified job class.
* Analyzes the retrial attempts rate for the specified job class.
* @param jobClass Specified job class. If null, analysis will be job class independent.
* @param measurement Reference to the associated inverse measure.
*/
public abstract void analyzeRetrialRate(JobClass jobClass, InverseMeasure measurement);
public abstract void analyzeRetrialAttemptsRate(JobClass jobClass, InverseMeasure measurement);
/**
* Analyzes the retrial orbit size for the specified job class.
......
......@@ -82,8 +82,8 @@ public class LinkedJobInfoList implements JobInfoList {
protected double lastJobBalkingTimePerClass[];
protected double lastJobRetrialTime;
protected double lastJobRetrialTimePerClass[];
protected double lastJobRetrialAttemptTime;
protected double lastJobRetrialAttemptTimePerClass[];
protected double lastRetrialOrbitModifyTime;
protected double lastRetrialOrbitModifyTimePerClass[];
......@@ -137,9 +137,9 @@ public class LinkedJobInfoList implements JobInfoList {
protected InverseMeasure balkingRatePerClass[];
// add rates for retrial
protected InverseMeasure retrialRate;
protected InverseMeasure retrialAttemptsRate;
protected InverseMeasure retrialRatePerClass[];
protected InverseMeasure retrialAttemptsRatePerClass[];
protected Measure waitingTime;
protected Measure waitingTimePerClass[];
......@@ -187,7 +187,7 @@ public class LinkedJobInfoList implements JobInfoList {
lastJobDropTimePerClass = new double[numberOfJobClasses];
lastJobRenegingTimePerClass = new double[numberOfJobClasses];
lastJobBalkingTimePerClass = new double[numberOfJobClasses];
lastJobRetrialTimePerClass = new double[numberOfJobClasses];
lastJobRetrialAttemptTimePerClass = new double[numberOfJobClasses];
totalSojournTimePerClass = new double[numberOfJobClasses];
lastJobSojournTimePerClass = new double[numberOfJobClasses];
lastRetrialOrbitModifyTimePerClass = new double[numberOfJobClasses];
......@@ -339,15 +339,15 @@ public class LinkedJobInfoList implements JobInfoList {
/* (non-Javadoc)
* @see jmt.engine.QueueNet.JobInfoList#getLastJobDropTime()
*/
public double getLastJobRetrialTime() {
return lastJobRetrialTime;
public double getLastJobRetrialAttemptTime() {
return lastJobRetrialAttemptTime;
}
/* (non-Javadoc)
* @see jmt.engine.QueueNet.JobInfoList#getLastJobDropTimePerClass(jmt.engine.QueueNet.JobClass)
*/
public double getLastJobRetrialTimePerClass(JobClass jobClass) {
return lastJobRetrialTimePerClass[jobClass.getId()];
return lastJobRetrialAttemptTimePerClass[jobClass.getId()];
}
/* (non-Javadoc)
......@@ -791,14 +791,14 @@ public class LinkedJobInfoList implements JobInfoList {
}
@Override
public void analyzeRetrialRate(JobClass jobClass, InverseMeasure measurement) {
public void analyzeRetrialAttemptsRate(JobClass jobClass, InverseMeasure measurement) {
if (jobClass != null) {
if (retrialRatePerClass == null) {
retrialRatePerClass = new InverseMeasure[numberOfJobClasses];
if (retrialAttemptsRatePerClass == null) {
retrialAttemptsRatePerClass = new InverseMeasure[numberOfJobClasses];
}
retrialRatePerClass[jobClass.getId()] = measurement;
retrialAttemptsRatePerClass[jobClass.getId()] = measurement;
} else {
retrialRate = measurement;
retrialAttemptsRate = measurement;
}
}
......@@ -888,14 +888,11 @@ public class LinkedJobInfoList implements JobInfoList {
Measure m = responseTimePerClass[c];
if (m != null) {
m.update(getTime() - jobInfo.getEnteringTime(), 1.0);
// System.out.println("Response Time: " + (getTime() - jobInfo.getEnteringTime()));
}
}
if (responseTime != null) {
responseTime.update(getTime() - jobInfo.getEnteringTime(), 1.0);
// System.out.println("Response Time: " + (getTime() - jobInfo.getEnteringTime()));
}
}
......@@ -913,11 +910,6 @@ public class LinkedJobInfoList implements JobInfoList {
residenceTime.updateSampleJob(jobInfo.getJob());
residenceTime.update(getTime() - jobInfo.getEnteringTime(), 1.0);
}
if(residenceTimePerClass != null || residenceTime != null) {
System.out.println("Residence time: " + (getTime() - jobInfo.getEnteringTime()));
}
}
protected void updateUtilization(JobInfo jobInfo) {
......@@ -1013,20 +1005,17 @@ public class LinkedJobInfoList implements JobInfoList {
}
}
protected void updateRetrialRate(JobInfo jobInfo) {
if (retrialRatePerClass != null) {
protected void updateRetrialAttemptsRate(JobInfo jobInfo) {
if (retrialAttemptsRatePerClass != null) {
JobClass jobClass = jobInfo.getJob().getJobClass();
int c = jobClass.getId();
Measure m = retrialRatePerClass[c];
Measure m = retrialAttemptsRatePerClass[c];
if (m != null) {
m.update(getTime() - getLastJobRetrialTimePerClass(jobClass), 1.0);
// System.out.println(getTime() - getLastJobRetrialTimePerClass(jobClass));
}
}
if (retrialRate != null) {
retrialRate.update(getTime() - getLastJobRetrialTime(), 1.0);
// System.out.println(getTime() - getLastJobRetrialTime());
if (retrialAttemptsRate != null) {
retrialAttemptsRate.update(getTime() - getLastJobRetrialAttemptTime(), 1.0);
}
}
......@@ -1176,12 +1165,12 @@ public class LinkedJobInfoList implements JobInfoList {
*/
public void retryJob(JobInfo jobInfo) {
int c = jobInfo.getJob().getJobClass().getId();
updateRetrialRate(jobInfo);
updateRetrialAttemptsRate(jobInfo);
if (findJob(jobInfo.getJob()) == null) {
list.add(jobInfo);
}
lastJobRetrialTime = getTime();
lastJobRetrialTimePerClass[c] = getTime();
lastJobRetrialAttemptTime = getTime();
lastJobRetrialAttemptTimePerClass[c] = getTime();
}
/* (non-Javadoc)
......
......@@ -354,7 +354,7 @@ public class NetNode extends SimEntity {
jobsList.analyzeBalkingRate(jobClass, (InverseMeasure) measurement);
break;
case SimConstants.LIST_RETRIAL_RATE:
jobsList.analyzeRetrialRate(jobClass, (InverseMeasure) measurement);
jobsList.analyzeRetrialAttemptsRate(jobClass, (InverseMeasure) measurement);
break;
case SimConstants.LIST_RETRIAL_ORBIT_SIZE:
jobsList.analyzeRetrialOrbitSize(jobClass, measurement);
......@@ -652,8 +652,6 @@ public class NetNode extends SimEntity {
}
if (event == NetEvent.EVENT_RETRIAL) {
removeJobFromNodeJobsListOnly((Job) data, event);
// System.out.println("Remove job from NodeJobsList after signaling retrial?: " + removeJobFromNodeJobsList((Job) data));
}
//
......
......@@ -215,6 +215,7 @@ public abstract class NodeSection {
return ownerNode.getJobClasses();
}
//TODO suggestion: extract methods to util class --> avoid duplicated methods across different files
/**
* Gets an integer type property of this node. Note that the first 256
* identifiers are reserved by NodeSection class.
......@@ -305,7 +306,6 @@ public abstract class NodeSection {
* Gets a parameter type property of this node. Note that the first 256
* identifiers are reserved by NodeSection class.
* @param id Property identifier.
* @param jobClass jobClass.
* @return Property value.
* @throws NetException if the requested property is not available.
*/
......@@ -316,22 +316,6 @@ public abstract class NodeSection {
}
}
/**
* Gets a parameter type property of this node depending on a specified job
* class. Note that the first 256 identifiers are reserved by NodeSection
* class.
* @param id Property identifier.
* @param jobClass jobClass.
* @return Property value.
* @throws NetException if the requested property is not available.
*/
public Parameter getParameter(int id, JobClass jobClass) throws NetException {
switch (id) {
default:
throw new NetException(this, EXCEPTION_PROPERTY_NOT_AVAILABLE, "required property is not available.");
}
}
/**
* Gets an object type property of this node. Note that the first 256
* identifiers are reserved by NodeSection class.
......@@ -346,22 +330,6 @@ public abstract class NodeSection {
}
}
/**
* Gets an object type property of this node depending on a specified job
* class. Note that the first 256 identifiers are reserved by NodeSection
* class.
* @param id Property identifier.
* @param jobClass the jobClass which property refers to.
* @return Property value.
* @throws NetException if the requested property is not available.
*/
public Object getObject(int id, JobClass jobClass) throws NetException {
switch (id) {
default:
throw new NetException(this, EXCEPTION_PROPERTY_NOT_AVAILABLE, "required property is not available.");
}
}
/**
* Checks if a property of this node is enabled. Note that the first 256
* identifiers are reserved by NodeSection class.
......@@ -376,22 +344,6 @@ public abstract class NodeSection {
}
}
/**
* Checks if a property of this node is enabled depending on a specified job
* class. Note that the first 256 identifiers are reserved by NodeSection
* class.
* @param id Property identifier.
* @param jobClass jobClass.
* @return Property value.
* @throws NetException if the requested property is not available.
*/
public boolean isEnabled(int id, JobClass jobClass) throws NetException {
switch (id) {
default:
throw new NetException(this, EXCEPTION_PROPERTY_NOT_AVAILABLE, "required property is not available.");
}
}
/**
* This method should be overridden to implement a specific NetMessage
* processor.
......
......@@ -101,11 +101,11 @@ public interface SimConstants {
/** Measure identifier: reneging rate of the node */
public static final int BALKING_RATE = 22;
/** Measure identifier: retrial rate of the node */
public static final int RETRIAL_RATE = 30;
/** Measure identifier: retrial attempts rate of the node */
public static final int RETRIAL_ATTEMPTS_RATE = 30;
/** Measure identifier: retrial rate of the system */
public static final int SYSTEM_RETRIAL_RATE = 31;
/** Measure identifier: retrial attempts rate of the system */
public static final int SYSTEM_RETRIAL_ATTEMPTS_RATE = 31;
/** Measure identifier: number of jobs in the retrial orbit of the node */
public static final int RETRIAL_ORBIT_SIZE = 33;
......@@ -141,7 +141,7 @@ public interface SimConstants {
/** Measure identifier: reneging rate of the list */
public static final int LIST_BALKING_RATE = 29;
/** Measure identifier: retrial rate of the list */
/** Measure identifier: retrial attempts rate of the list */
public static final int LIST_RETRIAL_RATE = 32;
/** Measure identifier: number of jobs in the retrial orbit in the list */
......
......@@ -54,7 +54,7 @@ public abstract class EngineUtils {
return SimulationDefinition.MEASURE_RR;
case SimConstants.BALKING_RATE:
return SimulationDefinition.MEASURE_BR;
case SimConstants.RETRIAL_RATE:
case SimConstants.RETRIAL_ATTEMPTS_RATE:
return SimulationDefinition.MEASURE_R;
case SimConstants.RETRIAL_ORBIT_SIZE:
return SimulationDefinition.MEASURE_RS;
......@@ -72,7 +72,7 @@ public abstract class EngineUtils {
return SimulationDefinition.MEASURE_S_RR;
case SimConstants.SYSTEM_BALKING_RATE:
return SimulationDefinition.MEASURE_S_BR;
case SimConstants.SYSTEM_RETRIAL_RATE:
case SimConstants.SYSTEM_RETRIAL_ATTEMPTS_RATE:
return SimulationDefinition.MEASURE_S_R;
case SimConstants.SYSTEM_POWER:
return SimulationDefinition.MEASURE_S_P;
......@@ -121,7 +121,7 @@ public abstract class EngineUtils {
} else if (type.equals(SimulationDefinition.MEASURE_BR)) {
return SimConstants.BALKING_RATE;
} else if (type.equals(SimulationDefinition.MEASURE_R)) {
return SimConstants.RETRIAL_RATE;
return SimConstants.RETRIAL_ATTEMPTS_RATE;
} else if (type.equals(SimulationDefinition.MEASURE_RS)) {
return SimConstants.RETRIAL_ORBIT_SIZE;
} else if (type.equals(SimulationDefinition.MEASURE_WT)) {
......@@ -143,7 +143,7 @@ public abstract class EngineUtils {
} else if (type.equals(SimulationDefinition.MEASURE_S_P)) {
return SimConstants.SYSTEM_POWER;
} else if (type.equals(SimulationDefinition.MEASURE_S_R)) {
return SimConstants.SYSTEM_RETRIAL_RATE;
return SimConstants.SYSTEM_RETRIAL_ATTEMPTS_RATE;
} else if (type.equals(SimulationDefinition.MEASURE_RP_PER_SINK)) {
return SimConstants.RESPONSE_TIME_PER_SINK;
} else if (type.equals(SimulationDefinition.MEASURE_X_PER_SINK)) {
......@@ -174,13 +174,13 @@ public abstract class EngineUtils {
|| measureType == SimConstants.DROP_RATE
|| measureType == SimConstants.RENEGING_RATE
|| measureType == SimConstants.BALKING_RATE
|| measureType == SimConstants.RETRIAL_RATE
|| measureType == SimConstants.RETRIAL_ATTEMPTS_RATE
|| measureType == SimConstants.SYSTEM_THROUGHPUT
|| measureType == SimConstants.SYSTEM_DROP_RATE
|| measureType == SimConstants.SYSTEM_RENEGING_RATE
|| measureType == SimConstants.SYSTEM_BALKING_RATE
|| measureType == SimConstants.SYSTEM_POWER
|| measureType == SimConstants.SYSTEM_RETRIAL_RATE
|| measureType == SimConstants.SYSTEM_RETRIAL_ATTEMPTS_RATE
|| measureType == SimConstants.THROUGHPUT_PER_SINK
|| measureType == SimConstants.FIRING_THROUGHPUT
;
......
......@@ -523,7 +523,7 @@ public class Simulation {
case SimConstants.BALKING_RATE:
netNodes[nodePosition].analyze(SimConstants.LIST_BALKING_RATE, jClass, ms.getMeasure());
break;
case SimConstants.RETRIAL_RATE:
case SimConstants.RETRIAL_ATTEMPTS_RATE:
netNodes[nodePosition].analyze(SimConstants.LIST_RETRIAL_RATE, jClass, ms.getMeasure());
break;
case SimConstants.RETRIAL_ORBIT_SIZE:
......@@ -582,15 +582,9 @@ public class Simulation {
case SimConstants.SYSTEM_POWER:
network.getJobInfoList().analyzeSystemPower(jClass, ms.getMeasure());
break;
case SimConstants.SYSTEM_RETRIAL_RATE:
network.getJobInfoList().analyzeRetrialRate(jClass, ms.getMeasure());
case SimConstants.SYSTEM_RETRIAL_ATTEMPTS_RATE:
network.getJobInfoList().analyzeRetrialAttemptsRate(jClass, ms.getMeasure());
break;
// case SimConstants.SYSTEM_NUMBER_OF_JOBS_IN_RETRIAL_ORBIT:
// network.getJobInfoList().ana(jClass, ms.getMeasure());
// break;
// case SimConstants.SYSTEM_RETRIAL_RATE:
// network.getJobInfoList().analyzeRetrialRate(jClass, ms.getMeasure());
// break;
}
}
}
......
......@@ -45,7 +45,6 @@ import jmt.gui.common.CommonConstants;
import jmt.gui.common.Defaults;
import jmt.gui.common.classSwitchUtilities.ClassSwitchRow;
import jmt.gui.common.definitions.parametric.ParametricAnalysisDefinition;
import jmt.gui.common.distributions.Exponential;
import jmt.gui.common.forkStrategies.ClassSwitchFork;
import jmt.gui.common.forkStrategies.CombFork;
import jmt.gui.common.forkStrategies.ForkStrategy;
......@@ -1437,39 +1436,6 @@ public class CommonModel implements CommonConstants, ClassDefinition, StationDef
}
}
/**
* Sets retrial rate associated with given station queue section if capacity is finite.
* @param stationKey: search key for station.
* @param classKey: search key for class.
* @param retrialRate: the retrial time distribution for each job
*/
@Override
public void setRetrialRate(Object stationKey, Object classKey, Double retrialRate) {
StationClassData scd = (StationClassData) stationDetailsBDM.get(classKey, stationKey);
if (scd == null) {
return;
}
if (scd.retrialRate == null || !scd.retrialRate.equals(retrialRate)) {
scd.retrialRate = retrialRate;
save = true;
}
}
/**
* Returns retrial rate associated with given station queue section if capacity is finite.
* @param stationKey: search key for station.
* @param classKey: search key for class.
* @return a Double -- the retrial rate
*/
@Override
public Double getRetrialRate(Object stationKey, Object classKey) {
StationClassData scd = (StationClassData) stationDetailsBDM.get(classKey, stationKey);
if (scd == null) {
return null;
}
return scd.retrialRate == null ? 0.5 : scd.retrialRate;
}
@Override
public void setRetrialDistribution(Object stationKey, Object classKey, Object distribution) {
......@@ -3928,7 +3894,6 @@ public class CommonModel implements CommonConstants, ClassDefinition, StationDef
public ClassSwitchRow classSwitchProb;
private ImpatienceType impatienceType;
private ImpatienceParameter impatienceParameter;
public Double retrialRate;
public Object retrialDistribution;
......
......@@ -206,10 +206,10 @@ public interface MeasureDefinition {
public int[] getBalkingRateMeasures();
/**
* Returns an array with the measureIndex of every retrial rate measure
* Returns an array with the measureIndex of every retrial attempts rate measure
* @return an array with measures' index
*/
public int[] getRetrialRateMeasures();
public int[] getRetrialAttemptsRateMeasures();
/**
* Returns an array with the measureIndex of every retrial orbit size measure
......@@ -273,10 +273,10 @@ public interface MeasureDefinition {
public int[] getSystemPowerMeasures();
/**
* Returns an array with the measureIndex of every system retrial rate measure
* Returns an array with the measureIndex of every system retrial attempts rate measure
* @return an array with measures' index
*/
public int[] getSystemRetrialRateMeasures();
public int[] getSystemRetrialAttemptsRateMeasures();
/**
* Returns an array with the measureIndex of every response time per sink measure
......
......@@ -31,7 +31,6 @@ import jmt.gui.common.distributions.Exponential;
import jmt.gui.common.routingStrategies.ProbabilityRouting;
import jmt.gui.common.routingStrategies.RandomRouting;
import jmt.gui.common.routingStrategies.RoutingStrategy;
import jmt.gui.common.routingStrategies.DisabledRouting;
import jmt.gui.common.serviceStrategies.DisabledStrategy;
import jmt.gui.common.serviceStrategies.LDStrategy;