Every time a workpiece arrives at one of the entries of a shifting table, the switch agent sends the corresponding workpiece agent a request asking it where to move the workpiece. The workpiece agent answers with the name of the goal machine and the shifting table tries to move the workpiece on the shortest path possible to this goal machine.
To do so, the switch agent first determines the exit for the shortest path. The shifting table has for each exit a list of machines which can be reached via this exit (on the shortest path). The shifting table then determines whether this preferred exit is free and, if so, moves the workpiece onto it, or chooses another exit.
The shifting table immediately moves the workpiece once it has received the name of the goal machine from the workpiece. If the desired exit is free, the switch agent sends it there immediately. If the desired exit is not free, it either chooses an exit leading to the forward conveyor or to the backward conveyor and moves the workpiece there immediately. In case that the desired exit is not free, the workpiece is thus sent in another direction. This is uncritical since the transportation system is designed such that a workpiece can move from any point to any other point. A workpiece sent in the wrong direction will thus turn around at the next shifting table and move back to its actual goal. There is only one situation which is critical, namely when the desired goal is the machine adjacent to the shifting table because the machine may run out of supply if too many workpiece are rejected. However, as discussed in the section on the transportation system, if the exit to the adjacent machine is not free, then the supply conveyor is fully occupied and the machine has a local buffer of at least two workpieces. If the processing time for each workpiece is at least 30 seconds, then there is enough time for the workpiece to circle around the machine and to move to the machine as soon as the first workpiece on the supply conveyor has been moved into the machine.
This only leaves the problem that a workpiece may circle around a machine forever, if, every time the machine has consumed another workpiece, the free space is occupied by another workpiece which reaches the shifting table faster than the circling workpiece. To avoid this, each workpiece tells the switch agent how often it has already been rejected by the shifting table (since it left the last machine). Whenever two workpieces (with the same goal) arrive (nearly) at the same time at a shifting table, the switch agent then moves the workpiece with the highest "rejection rate" first. Theoretically, this does not prevent starvation of the workpieces, but practically this solves the problem.
If the workpiece agent is down or for some other reason the shifting table does not receive an answer from the workpiece agent, for the same reasons as discussed above, the switch agent sends the workpiece in either the forward or backward direction (depending on which exit is free). If the workpiece agent is down too long, of course, this may cause a workpiece to starve and a machine to run out of supply.