Releases: openTCS/opentcs
Releases · openTCS/opentcs
Release 5.14
- New features and enhancements:
- The creation of ambiguous peripheral jobs (by kernel clients or via the web API) that have the
completionRequired
flag set totrue
is now prevented. (In those cases it is unclear what should happen to the job'srelatedTransportOrder
(if any) in case the job fails.) - Add a watchdog task to the kernel which periodically monitors the state of blocks in the plant model and publishes a user notification in case a block is occupied by more than one vehicle. (Such a situation is usually caused by manually moving vehicles around and leads to deadlock situations.)
- Update web API specification and implementation to version 1.5.0:
- When retrieving vehicle information via the web API, include the vehicle's orientation angle.
- The creation of ambiguous peripheral jobs (by kernel clients or via the web API) that have the
- Bugs fixed:
- Correctly read configuration entries in the
<KEY_1>=<VALUE_1>,...,<KEY_N>=<VALUE_N>
format when using gestalt as the configuration provider.
- Correctly read configuration entries in the
- Changes affecting developers:
- Provide related
TransportOrder
andDriveOrder
objects as part of everyMovementCommand
. This way, vehicle drivers can easily look up a movement command's context without having to explicitly fetch the data via a kernel service call. - Update Mockito to 5.11.0.
- Update ApprovalTests to 23.0.0.
- Update Jackson to 2.17.0.
- Update Gradle license report plugin to 2.6.
- Provide related
Release 5.13
- New features and enhancements:
- Improve handling of failed peripheral jobs (where the completion required flag is set to
true
) associated with a transport order and withdraw the respective transport order in such cases. - Properly implement simulation of a recharging operation in the virtual vehicle driver.
- Add an alternative implementation for reading application configuration from properties files using the gestalt library. This implementation is intended to replace the one using the cfg4j library and is now used by default by the openTCS Kernel, Kernel Control Center, Model Editor and Operations Desk applications.
(Note that, until openTCS 6, the cgf4j implementation can still be used by setting a system property.
For more details, refer to the developer's guide.) - Improve resource management on vehicle movement: When a vehicle moves to a new position without having been ordered to move anywhere, allocating and freeing resources is now properly handled.
- Update web API specification and implementation to version 1.4.0:
- Add an endpoint for triggering updates of the routing topology.
- Improve handling of failed peripheral jobs (where the completion required flag is set to
- Bugs fixed:
- Immediately assigning a transport order to a vehicle in the Operations Desk application now works correctly.
- The loopback adapter now properly resumes operation when switching from single step mode to automatic mode.
- Properly set layout coordinates when creating a location on the x or y axis.
- Changes affecting developers:
- Deprecate
MovementCommand.isWithoutOperation()
and introduceMovementCommand.hasEmptyOperation()
as a replacement. - Keep track of a vehicle's drive order route progress in the corresponding transport order the vehicle is processing. Deprecate
Vehicle.getRouteProgressIndex()
because tracking this in the transport order is more consistent. (Progress in the drive orders list is also tracked in the transport order.) - Update JUnit to 5.10.2.
- Update JUnit platform launcher to 1.10.2.
- Update ApprovalTests to 22.3.3.
- Update Mockito to 5.10.0.
- Update AssertJ to 3.25.3.
- Update Jackson to 2.16.1.
- Update JAXB Runtime to 2.3.9.
- Update Gradle wrapper to 8.6.
- Deprecate
- Other changes:
- Move/Rename a couple of kernel configuration entries:
kernelapp.rerouteOnRoutingTopologyUpdate
replacesdefaultdispatcher.rerouteOnTopologyChanges
.kernelapp.rerouteOnDriveOrderFinished
replacesdefaultdispatcher.rerouteOnDriveOrderFinished
.
- Eliminate use of Java's
SecurityManager
from the code. It hasn't been necessary for quite a while, and does not exist any more with Java 21. - The default strategies for parking and (re)charging vehicles now create transport orders only for vehicles that are actually allowed to process them (according to the respective vehicle's allowed order types).
- Move/Rename a couple of kernel configuration entries:
Release 5.12
- New features and enhancements:
- In the Operations Desk application, show the vehicle that is allocating a resource in the tooltips of points, paths and locations.
- In the Operations Desk application, only offer locations as transport order destinations that are actually linked to at least one point and that have allowed operations.
- In the Operations Desk application, if a vehicle's transport order is withdrawn regularly (i.e. while allowing the vehicle to finish its movements), only the allocated resources in front of the vehicle are highlighted in grey, while the allocated resources behind the vehicle remain highlighted in the vehicle's route color.
- As with transport orders, the event history of order sequences is now also filled with relevant event data.
- Bugs fixed:
- The load generator plugin now avoids unsuitable locations when generating orders. For example, locations without a link are considered unsuitable, which usually includes locations representing peripheral devices.
- When retrieving a plant model's visual layout via the web API, its properties are now also provided properly. Previously, a visual layout's properties would always be empty.
- Changes affecting developers:
- Revamp management of
MovementCommand
queues inBasicVehicleCommAdapter
.- Deprecate methods in
VehicleCommAdapter
related to a communication adapter's command queues and introduce new methods with more descriptive names as a replacement. - Simplify constructor of
BasicVehicleCommAdapter
.
- Deprecate methods in
- Revamp management of
- Other changes:
- For transport orders created by the default strategies for parking and (re)charging vehicles, corresponding transport order types of "Park" and "Charge" are now set.
Release 5.11
- New features and enhancements:
- Add support for vehicle envelopes. In an openTCS plant model, envelopes can now be defined for points and paths a vehicle occupies or traverses. For vehicles, an envelope key can be defined to indicate which envelopes defined at points and paths should be considered for the respective vehicle. This way, it is now possible to prevent vehicles from allocating physical areas intersecting with areas already allocated by other vehicles. (Note that the Model Editor application does not provide any means to set envelopes, yet. At this point, envelopes can only be input programmatically, i.e. via the Java or web API.)
- Update web API specification and implementation to version 1.3.0:
- Add new endpoints for updating the locked state of paths and locations.
- Extend the endpoints for creating and retrieving plant models with respect to the newly added support for vehicle envelopes.
- Add a new endpoint for updating a vehicle's envelope key.
- Bugs fixed:
- When updating the vehicle's prospective next position, actually consider its future movement commands.
- Actually use a vehicle's preferred recharge location if it is defined.
- When rerouting vehicles, properly consider that movement commands are not created for report points along a vehicle's route.
- Changes affecting developers:
- Allow communication adapters to request transport order withdrawals and integration level updates via
VehicleProcessModel
. - Update Gradle wrapper to 8.4.
- Update Jackson to 2.15.3.
- Update Mockito to 5.6.0.
- Update ApprovalTests to 22.2.0.
- Update Checkstyle to 10.12.4.
- Allow communication adapters to request transport order withdrawals and integration level updates via
Release 5.10
- New features and enhancements:
- Visualize a vehicle's currently allocated resources and the claimed resource of its current drive order in the Operations Desk instead of just the route of its current drive order.
- User notifications are now shown in a table in the Operations Desk.
- Make peripheral adapters selectable in the Kernel Control Center.
- Allow setting the intended vehicle on a transport order through the transport order service or the web API as long as the transport order has not been assigned to a vehicle, yet.
- Add support for immediate assignment of a transport order to its intended vehicle through the dispatcher service. For more details, see the new "Immediate transport order assignment" section in the user's guide.
- Add support for route computation to the router service.
- Update web API specification and implementation to version 1.2.0:
- Add support for specifying and retrieving complete plant models via the web API.
- Keep web API running across kernel mode changes, e.g. when uploading a new plant model.
- Add a new endpoint for immediate assignment of transport orders to their intended vehicles.
- Add a new endpoint for querying routes / route costs.
- Remove the kernel messages panel from the Operations Desk; it has been superseded by the user notifications tab.
- Add a configuration entry for enabling/disabling forced withdrawals from the Operations Desk.
- Add a menu item for recalculating the lengths of paths (for now, simply based on the Euclidean distance between the start and end point) to the Model Editor.
- Show peripheral jobs that a vehicle must wait for before it can continue in the vehicle's tooltip.
- In the User's Guide, document for every configuration entry when changes to it are applied by the respective application.
- Bugs fixed:
- Properly check validity of destination operations when creating transport orders.
- Improve legibility of some text elements in the Model Editor and Operations Desk applications that would not be legible on some systems (e.g. Ubuntu 20.04).
- Ensure the Model Editor application is still operable when resetting the window arrangement while a model element is selected.
- When a peripheral job is reported as finished or failed via
PeripheralJobCallback
, ensure that it is properly marked as such, which was previously not the case in some situations. - Avoid a NullPointerException when resetting a vehicle's position while it is in integration level
TO_BE_NOTICED
. - Ensure that order reservations for vehicles are properly cleared in case a vehicle's integration level is changed to anything other than
TO_BE_UTILIZED
. - Show a vehicle's destination in the vehicles panel in the Operations Desk application in cases where the vehicle is processing a transport order with a destination location.
- Show the correct title in the order sequence details panel in the Operations Desk application.
- Properly handle resources for withdrawn orders, fixing an issue where a vehicle would still wait for a pending resource allocation with the transport order remaining in state
WITHDRAWN
. - Properly handle situations in which vehicles are rerouted more than once during a single drive order, fixing an issue where routes would otherwise not be considered continuous.
- Actually accept priority key
DEADLINE_AT_RISK_FIRST
in the default dispatcher's configuration entries.
- Changes affecting developers:
- Removed documentation for server side web API errors (code 500).
- Introduce data structure
Pose
in the Java API, and use it to replace and deprecate the previously separate position and orientation angle members inPoint
andPointCreationTO
. - Integrate Gradle license report plugin.
- Update Gradle wrapper to 8.3.
- Update Jackson to 2.15.2.
- Update JAXB Runtime to 2.3.8.
- Update JGraphT to 1.5.2.
- Update JUnit to 5.10.0.
- Update Mockito to 5.5.0.
- Update ApprovalTests to 19.0.0.
- Update Checkstyle to 10.12.3.
- Update JaCoCo log plugin to 3.1.0.
- Other changes:
- The peripheral jobs panel in the Operations Desk application will now always be shown. The option to enable or disable it via the configuration file has been removed.
- Rename peripheral operation execution trigger
BEFORE_MOVEMENT
toAFTER_ALLOCATION
, as this name reflects better when the operation is actually triggered. The previous name is deprecated but may still be used; it will implicitly be converted to the new name. - Sync points' layout and model coordinates in the demo plant model.
- Adjust resource management and let a vehicle claim and allocate the destination location(s) of its transport order in addition to points and paths along its route.
Release 5.9
- New features:
- Make use of the vehicle's length for resources management:
- When releasing resources after a vehicle has completed a movement command, consider the vehicle's length to decide which resources are actually not required any more.
- Allow vehicle drivers to update the vehicle's length.
- Have the loopback vehicle driver update the virtual vehicle's length when it performs load/unload operations, and make the length for both cases configurable.
- Add support for working with order sequences via the web API.
- Add support for updating and retrieving a vehicle's allowed order types via the web API.
- Add support for managing peripherals via the web API:
- A peripheral's driver can be attached and enabled/disabled.
- A peripheral driver's attachment information can be retreived.
- Peripheral jobs assigned to a specific peripheral device can be withdrawn.
- The dispatcher for peripheral jobs can be triggered via an additional route.
- Provide information about available communication adapters for peripheral devices in the Java API.
- Add a detail panel for peripheral jobs to the Operations Desk.
- Add property and history information to the order sequence detail panel in the Operations Desk.
- Make use of the vehicle's length for resources management:
- Bugs fixed:
- When publishing new user notifications and the number of notifications exceeds the kernel's capacity, keep the youngest ones, not the oldest ones.
- Other changes:
- Update Gradle wrapper to 7.6.1.
- Update License Gradle Plugin to 0.16.1.
- Update Gradle Swagger Generator Plugin to 2.19.2.
- Update JUnit 5 to 5.9.3.
- Update ApprovalTests to 18.6.0.
- Deprecate
SchedulerService.fetchSchedulerAllocations()
, as allocations are now part of theVehicle
class. - Deprecate utility class
Enums
, as its methods can easily be implemented with Java streams these days. - Display properties of plant model elements, transport orders and peripheral jobs in the Model Editor and Operations Desk applications in lexicographically sorted order.
Release 5.8.2
- Fixes:
- Remove a duplicate key from the OpenAPI specification.
Release 5.8.1
- Fixes:
- Properly set the date for 5.8 in the changelog.
Release 5.8
- New features:
- Add support for explicitly triggering rerouting of single vehicles, including optional forced rerouting from a vehicle's current position even if it was not routed to that position by openTCS.
- Add support for withdrawing/aborting peripheral jobs:
- Peripheral jobs not related to a transport order can be withdrawn via the API.
- Peripheral jobs that are related to a transport order will implicitly be aborted when the respective transport order is forcibly withdrawn.
- Add
PlantModelService.getPlantModel()
, which returns a representation of the complete plant model. - Extend web API:
- The following properties of transport orders can be specified/retrieved: dispensability, peripheral reservation token, wrapping sequence, type.
- The dispatcher can be triggered via new endpoints:
POST /transportOrders/dispatcher/trigger
andPOST /vehicles/dispatcher/trigger
. The oldPOST /dispatcher/trigger
is now deprecated. - Vehicle drivers can be enabled/disabled.
- Information about a vehicle's available and currently attached drivers can be retrieved.
- The currently attached driver of a vehicle can be changed.
- Add support for adding additional peripheral job views in the Operations Desk application via the btn:[View] menu.
- Bugs fixed:
- Fix a bug where regularly withdrawing a transport order with peripheral jobs from a vehicle could prevent the withdrawal from being completed.
- Fix a bug where forcibly withdrawing a transport order from a vehicle that is waiting for a peripheral job to finish would prevent any further commands (e.g. for new transport orders) to be sent to the vehicle.
- Fix resource management for cases in which a vehicle's transport order was withdrawn while the vehicle was waiting for a resource allocation.
- Fix resource management / order processing for cases in which the plant model contains report points.
- Fix a bug where the btn:[menu:View[Reset window arrangement]] option in the Operations Desk application would not restore the peripheral job view.
- Fix a bug in the
GET /events
web API endpoint where the type of individual events would not be included in the response. - Fix a bug where peripheral jobs in a final state (
FINISHED
orFAILED
) would never be removed from the internal pool. - Fix a ClassCastException in the Operations Desk application that could happen when a vehicle figure was updated.
- Fix a misnomer in the web API specification: There is no category in a transport order, it's called a type.
- Other changes:
- Update JAXB Runtime to 2.3.7.
- Update Jackson to 2.14.2.
- Update JUnit 5 to 5.9.2.
- Update AssertJ to 3.24.2.
- Update Mockito to 4.11.0.
- Update Gradle wrapper to 6.9.3.
- Update Checkstyle to 10.7.0.
Release 5.7
- Bugs fixed:
- In the web API, set the content type for a reply to
GET /vehicles/{NAME}
toapplication/json
as specified. - When creating peripheral jobs, copy all attributes of the respective peripheral operation, and set the related vehicle and transport order attributes, too.
- In the web API, set the content type for a reply to
- Other changes:
- Avoid redundant property updates from vehicle drivers.
- Avoid using webfonts / Google Fonts API in Asciidoctor documentation.
- Add support for working with peripheral jobs to the web API.
- Split the kernel application's
defaultdispatcher.rerouteTrigger
configuration entry into two separate entries:defaultdispatcher.rerouteOnTopologyChanges
anddefaultdispatcher.rerouteOnDriveOrderFinished
.