All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opentcs.components.kernel.Dispatcher Maven / Gradle / Ivy

There is a newer version: 6.2.0
Show newest version
/**
 * Copyright (c) The openTCS Authors.
 *
 * This program is free software and subject to the MIT license. (For details,
 * see the licensing information (LICENSE.txt) you should have received with
 * this copy of the software.)
 */
package org.opentcs.components.kernel;

import jakarta.annotation.Nonnull;
import org.opentcs.components.Lifecycle;
import org.opentcs.components.kernel.dipatching.TransportOrderAssignmentException;
import org.opentcs.data.model.Vehicle;
import org.opentcs.data.order.ReroutingType;
import org.opentcs.data.order.TransportOrder;

/**
 * This interface declares the methods a dispatcher module for the openTCS
 * kernel must implement.
 * 

* A dispatcher manages the distribution of transport orders among the vehicles * in a system. It is basically event-driven, where an event can be a new * transport order being introduced into the system or a vehicle becoming * available for processing existing orders. *

*/ public interface Dispatcher extends Lifecycle { /** * The key of a parking position property defining its priority. *

* Whether and in what way this is respected for assigning a parking position to a vehicle is * implementation-specific. *

*/ String PROPKEY_PARKING_POSITION_PRIORITY = "tcs:parkingPositionPriority"; /** * The key of a vehicle property defining the name of the vehicle's assigned parking position. *

* Whether and in what way this is respected for selecting a parking position is * implementation-specific. *

*/ String PROPKEY_ASSIGNED_PARKING_POSITION = "tcs:assignedParkingPosition"; /** * The key of a vehicle property defining the name of the vehicle's preferred parking position. *

* Whether and in what way this is respected for selecting a parking position is * implementation-specific. *

*/ String PROPKEY_PREFERRED_PARKING_POSITION = "tcs:preferredParkingPosition"; /** * The key of a vehicle property defining the name of the vehicle's assigned recharge location. *

* Whether and in what way this is respected for selecting a recharge location is * implementation-specific. *

*/ String PROPKEY_ASSIGNED_RECHARGE_LOCATION = "tcs:assignedRechargeLocation"; /** * The key of a vehicle property defining the name of the vehicle's preferred recharge location. *

* Whether and in what way this is respected for selecting a recharge location is * implementation-specific. *

*/ String PROPKEY_PREFERRED_RECHARGE_LOCATION = "tcs:preferredRechargeLocation"; /** * Notifies the dispatcher that it should start the dispatching process. *

* This method is supposed to be called only from the kernel executor thread. *

*/ void dispatch(); /** * Notifies the dispatcher that the given transport order is to be withdrawn/aborted. *

* This method is supposed to be called only from the kernel executor thread. *

* * @param order The transport order to be withdrawn/aborted. * @param immediateAbort Whether the order should be aborted immediately instead of withdrawn. */ void withdrawOrder( @Nonnull TransportOrder order, boolean immediateAbort ); /** * Notifies the dispatcher that any order a given vehicle might be processing is to be withdrawn. *

* This method is supposed to be called only from the kernel executor thread. *

* * @param vehicle The vehicle whose order is withdrawn. * @param immediateAbort Whether the vehicle's order should be aborted immediately instead of * withdrawn. */ void withdrawOrder( @Nonnull Vehicle vehicle, boolean immediateAbort ); /** * Notifies the dispatcher of a request to reroute the given vehicle considering the given * rerouting type. *

* This method is supposed to be called only from the kernel executor thread. *

* * @param vehicle The vehicle to be rerouted. * @param reroutingType The type of the requested rerouting. */ void reroute( @Nonnull Vehicle vehicle, @Nonnull ReroutingType reroutingType ); /** * Notifies the dispatcher to reroute all vehicles considering the given rerouting type. *

* This method is supposed to be called only from the kernel executor thread. *

* * @param reroutingType The type of the requested rerouting. */ void rerouteAll( @Nonnull ReroutingType reroutingType ); /** * Notifies the dispatcher that it should assign the given transport order (to its intended * vehicle) now. *

* This method is supposed to be called only from the kernel executor thread. *

* * @param transportOrder The transport order to be assigned. * @throws TransportOrderAssignmentException If the given transport order could not be assigned * to its intended vehicle. */ void assignNow( @Nonnull TransportOrder transportOrder ) throws TransportOrderAssignmentException; }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy