![]() |
Advanced Modelling FeaturesCondQueue
The Condition Class |
|
|
When using a condition queue to synchronise processes, a model designer has to specifiy the condition a process is waiting for. DESMO-J expects the model designer to derive a subclass from its abstract desmoj.core.simulator.Condition<E extends Entity> class and implement the abstract method check(E e). In our case, a subclass of Condition<Truck> is created, where methode check(Truck t) compares the current ship in the harbour (stored in the model's currentShipInPort attribute) with the myShip attribute of the given truck process:
public class ShipArrivedCondition extends Condition<Truck> {
/**
* Constructs a new ShipArrivedCondition.
* @param owner the model this condition belongs to
* @param name this condition's name
* @param showInTrace flag to indicate if this condition shall produce
* output for the trace
*/
public ShipArrivedCondition(desmoj.core.simulator.Model owner,
String name, boolean showInTrace) {
super(owner, name, showInTrace);
}
/** test routine that will be call from the condition queue to check whether
* the condition is met for the given entity (truck).
*/
public boolean check(Truck t) {
// is the current ship in port the ship this truck is waiting for?
return ((CondQueueExample)getModel()).currentShipInPort == t.myShip;
}
}
|
||
| http://desmoj.sourceforge.net/tutorial/advanced/condqueue5.html |