This change log lists the most relevant changes for past releases in reverse chronological order.
Version 5.17.1 (2024-06-19)
-
Bugs fixed:
-
Avoid `NullPointerException`s when rerouting vehicles that process transport orders containing drive order steps that don’t have a path.
-
Version 5.17 (2024-05-21)
-
Bugs fixed:
-
Avoid
ObjectUnknownException
by cleaning orders related to order sequences only once. -
Correctly claim resources for transport orders with multiple drive orders. This fixes an issue where allocating the first set of resources for the second drive order in a transport order would fail.
-
Allow persistence of plant models (to a file and to the kernel) with paths that contain both vehicle envelopes and peripheral operations.
-
-
Changes affecting developers:
-
Update Gradle wrapper to 8.7.
-
Version 5.16 (2024-05-09)
-
New features and enhancements:
-
Use more sensible defaults for newly created vehicles' recharge energy level threshold values.
-
Add proper support for recalculating the length of "2-Bezier", "3-Bezier" and "Poly-Path" paths to the Model Editor.
-
Add support for defining vehicle envelopes at points and paths to the Model Editor.
-
Make vehicle resource management configurable. For more details, see the documentation of the
KernelApplicationConfiguration.vehicleResourceManagementType
configuration entry. -
When computing a route / costs of a route not related to a transport order, it is now possible to define a set of resources (i.e., points, paths or locations) that should be avoided by vehicles.
-
Update web API specification and implementation to version 1.6.0:
-
The endpoint
POST /vehicles/{NAME}/routeComputationQuery
now also accepts an optional list of names of resources to avoid.
-
-
-
Bugs fixed:
-
When referencing paths via the
tcs:resourcesToAvoid
property in transport orders, don’t implicitly avoid their start and end points, as points can have multiple incoming and outgoing paths. -
Don’t create the same peripheral job a second time if the vehicle that triggered the job was rerouted before the job was completed.
-
-
Changes affecting developers:
-
Adjust the names of some methods in
VehicleProcessModel
andVehicleProcessModelTO
by removing the redundant "Vehicle" prefix.
-
Version 5.15 (2024-04-14)
-
New features and enhancements:
-
Improve performance of updates to the router’s routing topology by allowing it to be updated selectively. (The routing topology can now be updated only for paths that have actually changed.)
-
When computing a route for a transport order, it is now possible to define a set of resources (i.e., points, paths or locations) that should be avoided by vehicles processing the respective transport order. For this, a property with the key
tcs:resourcesToAvoid
can be set on a transport order to a comma-separated list of resource names.
-
Version 5.14 (2024-03-22)
-
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.
-
-
-
Bugs fixed:
-
Correctly read configuration entries in the
<KEY_1>=<VALUE_1>,…,<KEY_N>=<VALUE_N>
format when using gestalt as the configuration provider.
-
-
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.
-
Version 5.13 (2024-02-22)
-
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.
-
-
-
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.
-
-
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).
-
Version 5.12 (2023-12-15)
-
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
.
-
-
-
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.
-
Version 5.11 (2023-10-26)
-
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.
-
Version 5.10 (2023-09-23)
-
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.
-
Version 5.9 (2023-05-31)
-
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.
-
-
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.
-
Version 5.8.2 (2023-03-21)
-
Fixes:
-
Remove a duplicate key from the OpenAPI specification.
-
Version 5.8.1 (2023-02-27)
-
Fixes:
-
Properly set the date for 5.8 in the changelog.
-
Version 5.8 (2023-02-27)
-
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 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
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.
-
Version 5.7 (2022-12-22)
-
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.
-
-
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
.
-
Version 5.6 (2022-07-23)
-
New features:
-
Add explicit support for pausing vehicles, which would previously be implemented using messages sent to the vehicle drivers without being interpreted by the kernel. Vehicles now have a proper paused state, and
VehicleService
(and the Operations Desk application with it) provides an explicit way to modify it for each individual vehicle. -
Defer resource allocations for paused vehicles. This keeps vehicles that do not explicitly support pausing from receiving more movement commands, effectively stopping them after they have processed the commands received before pausing.
-
Reflect vehicles' paused states in the web API and provide an endpoint to modify them.
-
Reflect vehicles' paused states in the operations desk by shading paused vehicles.
-
-
Bugs fixed:
-
Fix a bug where adding peripheral operations to a (newly created) path would also affect other paths in a plant model.
-
Fix a bug with auto-attaching communication adapters to vehicles that have a preferred communication adapter configured. Only attach a preferred communication adapter to a vehicle, if the corresponding adapter factory can actually provide an adapter instance for it.
-
-
Other changes:
-
Update the demo model provided in the Model Editor application:
-
Add a new section to show the integration and use of peripheral devices. The demo model now contains a location that represents an exemplary fire door that vehicles have to interact with when traversing the new section.
-
Update the demo model to use the latest model format (v0.0.4).
-
-
Update Spark to 2.9.4.
-
Update Jackson to 2.13.3.
-
Update AssertJ to 3.23.1.
-
Update Mockito to 4.6.1.
-
Version 5.5 (2022-04-26)
-
New features:
-
Inform
EdgeEvaluator
implementations about beginning and end of routing graph creation to allow them to optimize computations, e.g. by caching data that does not change while building the graph.
-
-
Other changes:
-
Add documentation for peripheral devices and peripheral operations. Also enable the respective GUI components by default now that there is documentation.
-
In the Operations Desk application’s dialog for creating peripheral jobs, offer locations attached to a peripheral driver only.
-
Replace old references to the Plant Overview application in the developer’s and user’s guides with references to the Model Editor and/or Operations Desk applications.
-
Remove the statistics kernel extension and plugin panel. They have been moved to the example integration project.
-
Update SLF4J to 1.7.36.
-
Update Guice to 5.1.0.
-
Update Jakarta XML Bind API to 2.3.3.
-
Update JAXB Runtime to 2.3.6.
-
Update Jackson to 2.13.2 (and its data-binding package to 2.13.2.2).
-
Update Sulky ULID to 8.3.0.
-
Update JGraphT to 1.5.1.
-
Update cfg4j to 4.4.1.
-
Update JSR305 to 3.0.2.
-
Update JUnit to 5.8.2.
-
Update AssertJ to 3.22.0.
-
Update Swagger UI to 3.52.5.
-
Update the Gradle wrapper to 6.9.2.
-
Update Stats Gradle Plugin to 0.2.2.
-
Update License Gradle Plugin to 0.14.0.
-
Version 5.4 (2022-02-25)
-
New features:
-
Enable vehicle drivers to inspect the whole transport order before accepting it, not just the respective sequence of destination operations.
-
Reflect the currently claimed and allocated resources in a vehicle’s state.
-
Show the currently claimed and allocated resources for a selected vehicle in the properties panel in the Operations Desk application.
-
Show all properties of a path’s peripheral operations in a table instead of listing only the location and operation names.
-
Update web API specification and implementation to version 1.1.0:
-
Add claimed and allocated resources to the vehicle state and vehicle status message specification.
-
Add the precise position to the vehicle state message specification.
-
When creating transport orders, allow clients to provide incomplete transport order names, i.e. have the kernel complete/generate the names.
-
Add an endpoint for explicitly triggering dispatcher runs.
-
-
-
Other changes:
-
Skip the user confirmation for exiting the Kernel Control Center application.
-
In the File menu, improve the names of the entries for uploading a model to the kernel and downloading it from the kernel.
-
Update Jackson to 2.13.0.
-
Update Spark to 2.9.3.
-
Version 5.3 (2021-09-28)
-
New features:
-
Properly specify and implement claim semantics in the
Scheduler
interface, allowing custom scheduling strategies to take vehicles' planned future resource allocations into account. -
Introduce
VehicleCommAdapter.canAcceptNextCommand()
, which can be used to (statically or dynamically) influence the amount of movement commands a comm adapter receives from itsVehicleController
.
-
-
Bugs fixed:
-
Execute virtual vehicle simulation using the kernel executor to avoid potential deadlocks.
-
Restore single-step mode for virtual vehicles.
-
Fix immediate withdrawal of transport orders.
-
When the Kernel application is started, initialize its components (e.g. dispatcher, router, scheduler) using the kernel executor, especially to avoid scheduling issues with plant models that are loaded with application start up.
-
Fix the order sequence details panel which would not load due to some wrong paths to a resource bundle.
-
Fix an issue where the Operations Desk was not in sync with the Kernel when using very large models.
-
Fix an issue where cutting and pasting elements in the Model Editor would create multiple elements with the same name.
-
-
Other changes:
-
Switch to publishing artifacts via the Maven Central artifact repository. (Previously, artifacts used to be published to JCenter, an artifact repository that has been discontinued.)
-
Update the license information: All components, including the Model Editor and Operations Desk applications, are now licensed under the terms of the MIT license.
-
When a vehicle is waiting for resources to be allocated (e.g. because resources are occupied/blocked by another vehicle), allow it to be rerouted from its current position. (Previously, rerouting was done from the point for which the vehicle was waiting, which could lead to unnecessary waiting times.)
-
When a vehicle is rerouted while it is waiting for peripheral interactions to be finished, properly reroute the vehicle from the peripheral’s position.
-
When loading plant models with the Model Editor and Operations Desk applications, show more fine-grained steps in the corresponding progress bars.
-
In the Operations Desk, sort transport orders and peripheral jobs in the respective tables in descending order according to their creation time.
-
Reduce the time it takes the Operations Desk to process vehicle updates.
-
Update Gradle wrapper to 6.8.3.
-
Update JUnit 4 to 4.13.2.
-
Update JUnit 5 to 5.7.2.
-
Update Hamcrest to 2.2.
-
Version 5.2 (2021-03-29)
-
New features:
-
For plant model elements' tooltip texts in the Operations Desk, sort properties lexicographically and colorize vehicles' states.
-
Version 5.1 (2021-03-24)
-
Bugs fixed:
-
Made names generated for transport orders to be (really) lexicographically sortable.
-
-
New features:
-
Add a
QueryService
to the kernel that can be used to execute generic/custom queries via registeredQueryResponder
instances. -
Add support for creating plant models with multiple layers.
-
Add experimental support for peripheral devices, with device interactions triggered by vehicles travelling along paths. (Note that this is not really documented, yet, and that experimental means that developers using any parts of it are on their own, for now.)
-
Add a new version of the XML Schema definition for the openTCS plant model.
-
Allow the scheduler to be triggered explicitly via
Scheduler.reschedule()
. -
Show properties in model elements' tooltips.
-
-
Other changes:
-
Split the Plant Overview application in two separate applications: The Model Editor provides model creation and manipulation functionality, while the Operations Desk is used for interacting with a plant while it is in operation.
-
Split the Operations Desk’s pause button into a pause and a resume button.
-
Remove support for groups. (Layers can now be used to group plant model components.)
-
Allow project-specific edge evaluators and routing group mappings to be used.
-
Version 4.20 (2020-12-18)
-
Fixes:
-
Default
Scheduler
: Properly handle requests for same-direction blocks for some edge cases. -
Default
Scheduler
: Really free all resources when taking a vehicle out of the driving course.
-
-
Other changes:
-
Plant Overview: Improve performance for vehicle state updates.
-
Version 4.19 (2020-07-02)
-
New features:
-
As with paths, locations can now be locked via the Plant Overview application to prevent them from being used by vehicles.
-
Version 5.0 (2020-06-05)
-
Remove deprecated code.
-
Remove the TCP host interface kernel extension.
-
Remove the kernel application’s GUI.
-
-
TCSObject
and its subclasses are now immutable and do no longer implement theCloneable
interface. -
Remove the JDOM dependency.
-
In
BasicCommunicationAdapter
, use an injectedExecutorService
(e.g. the kernel executor) instead of starting a separate thread for every vehicle driver instance. -
Add a new and cleaned up version of the XML Schema definition for the openTCS plant model and add new bindings.
-
Update project to Java 13.
-
Update Mockito to 2.28.2.
Version 4.18 (2020-04-09)
-
New features:
-
Provide the route to be travelled to vehicle drivers with every movement order, for cases in which vehicles require some information about it.
-
Allow supplementary configuration sources to be registered via service loader.
-
Allow a configuration reload interval to be set via a system property.
-
-
Other changes:
-
Improve performance of loading a plant model file into the kernel.
-
Rename transport order category to transport order type.
-
Update Spark to 2.9.1.
-
Version 4.17 (2019-12-10)
-
Bugs fixed:
-
In the Plant Overview application’s "Continuous load" plugin panel, it is now possible to properly remove/delete entries in the drive order and property tables.
-
Changing the loopback driver’s state through its panel in the Kernel Control Center application now works in all cases.
-
-
Other changes:
-
When using the Kernel’s RMI interface with SSL enabled, avoid side effects on other components using SSL.
-
Version 4.16.1 (2019-10-30)
-
Bugs fixed:
-
Fix creating links between points and locations in the Plant Overview application.
-
Version 4.16 (2019-10-22)
-
New features:
-
Optionally have names for transport orders and order sequences generated by the kernel. Use ULIDs for these generated names by default, to have lexicographically sortable names.
-
Add a
publishEvent()
method to theKernelServicePortal
interface that RMI-Clients can use to publish events on the Kernel application’s event bus. -
Enable the Kernel Control Center application to set positions for all simulating vehicle drivers, not only the loopback driver.
-
-
Bugs fixed:
-
Paths that have the same start and end components are now displayed properly in the Plant Overview.
-
In the Plant Overview’s continuous load panel, transport order definitions can now be saved to and restored from XML files again. (Note that in the course of fixing this issue, the XML files' structure was improved. Since the feature had been broken for a while and is not part of a public API, backwards compatibility was not maintained for this. As a result, transport order definition files from old versions of openTCS cannot be restored.)
-
Make using the "try it out" buttons in the OpenAPI documentation possible by setting CORS headers in the web API’s responses.
-
Version 4.15 (2019-05-02)
-
New features:
-
Add history entries for transport orders being deferred or resumed as well as assigned to or reserved for vehicles in the dispatching process. This makes it easier to find out e.g. why a transport order wasn’t assigned to a vehicle, yet. It also implicitly deprecates transport orders' rejection entries, as history entries provide the same functionality, but for more use cases.
-
Expect applications' locales to be set via BCP 47 language tags, making the configuration more flexible and independent from the source code.
-
Extend the default router to be able to extract explicitly given routing costs from path properties, too.
-
-
Bugs fixed:
-
In case no load or unload operation is defined for a virtual vehicle, use a default value to avoid exceptions.
-
Do not (wrongly) set a vehicle’s processing state to
IDLE
whenever its integration level is set toTO_BE_UTILIZED
. -
Avoid potential deadlocks related to using the Plant Overview’s resource allocation panel.
-
-
Other changes:
-
Disable the Kernel application’s integrated control center GUI by default. It can still be re-enabled via the Kernel configuration, but it has been deprecated for several openTCS releases now and will be removed with the openTCS 5.
-
Move all language files for the applications' internationalization to a common hierarchy, remove unused/left-over entries and apply a proper naming pattern to the remaining ones to improve maintainability. (The language files for the Kernel application’s integrated control center GUI are excluded from this, as that GUI will be removed with openTCS 5.)
-
Remove support for the Plant Overview application’s old model file format (file name extension
.opentcs
). The old format has been deprecated since openTCS 4.8 in favour of a unified file format (file name extension.xml
) shared by Kernel and Plant Overview. Users who still have model files in the old format may want to save them in the current format before updating. -
Remove the menu item to trigger the kernel’s dispatching process from the Plant Overview’s main menu. The dispatcher is triggered automatically (and, for special cases in integration projects, periodically), so manual triggering does not need to be involved.
-
Version 4.14 (2019-03-22)
-
Bugs fixed:
-
With the
defaultdispatcher.reparkVehiclesToHigherPriorityPositions
configuration enabled: Prevent a vehicle from being re-parked to positions that have the same priority as the vehicle’s current parking position. -
Fix a bug where charging vehicles don’t execute transport orders after they have reached the "sufficiently recharged" state.
-
-
Other changes:
-
The Kernel application does no longer persist
Color
andViewBookmark
elements of the visual layout. (For some time now, these elements could no longer be created with the PlantOverview application and were ignored when a model was loaded, anyway.)
-
Version 4.13.1 (2019-02-25)
-
Bugs fixed:
-
Fix a bug with the loopback communication adapter that prevents resources from being properly released when the "loopback:initialPosition" property is set on vehicles.
-
Version 4.13 (2019-02-18)
-
New features:
-
Introduce an event history for transport orders that can be filled with arbitrary event data.
-
Introduce
"*"
as a wildcard in a vehicle’s processable categories to allow processing of transport orders in any category. -
The Plant Overview’s vehicle panel now also shows the current destination of each vehicle.
-
-
Bugs fixed:
-
With the
defaultdispatcher.rerouteTrigger
configuration entry set toDRIVE_ORDER_FINISHED
, ensure that the rerouting is only applied to the vehicle that has actually finished a drive order. -
For vehicles selected in the Plant Overview, re-allow changing their integration levels via the context menu to either "to be utilized" or "to be respected" if any of them is currently processing a transport order, too.
-
-
Other changes:
-
Remove the included integration project generator and document usage of the example integration project, instead.
-
Update the web API specification to OpenAPI 3.
-
Update Gradle to 4.10.3.
-
Update Checkstyle to 8.16.
-
Update JUnit to 5.3.2.
-
Update Guice to 4.2.2.
-
Version 4.12 (2018-12-20)
-
New features:
-
Introduce optional priorities for parking positions. With these, vehicles are parked at the one with the highest priority. Optionally, vehicles already parking may be reparked to unoccupied positions with higher priorities.
-
Provide additional energy levels for vehicles to influence when recharging may be stopped.
-
Make the Plant Overview’s naming schemes for plant model elements configurable.
-
In the Plant Overview, allow multiple vehicles to be selected for changing the integration level or withdrawing transport orders.
-
-
Bugs fixed:
-
Prevent a movement order from being sent to a vehicle a second time after the vehicle got rerouted while waiting for resource allocation.
-
Version 4.11 (2018-12-04)
-
New features:
-
Introduce a type property for blocks. A block’s type now determines the rules for entering it:
-
Single vehicle only: The resources aggregated in this block can only be used by a single vehicle at the same time.
-
Same direction only: The resources aggregated in this block can be used by multiple vehicles, but only if they enter the block in the same direction.
-
-
-
Bugs fixed:
-
Properly set a point’s layout coordinates when it is placed exactly on an axis in the Plant Overview.
-
Properly select the correct/clicked-on tree entry in the Plant Overview’s blocks tree view when the same element is a member of more than one block.
-
Prevent the Kernel application from freezing when loading some larger plant models.
-
-
Other changes:
-
Require the user to confirm immediate withdrawals of transport orders in the plant overview, as they have some implications that may lead to collisions or deadlocks in certain situations.
-
Improve input validation of unit-based properties for plant model elements.
-
Remove the Kernel Control Center’s function to reset the position of a vehicle. Users should now set the vehicle’s integration level to
TO_BE_IGNORED
, instead. -
Allow the loopback driver to be disabled completely.
-
Minor improvements to the configuration interface API.
-
Mark all
AdapterCommand
implementations in the base API as deprecated. These commands' functionality is specific to the respective communication adapter and should be implemented and used there.
-
Version 4.10 (2018-08-07)
-
New features:
-
Introduce an explicit integration level property for vehicles that expresses to what degree a vehicle should be integrated into the system. (Setting the integration level to
TO_BE_UTILIZED
replaces the manual dispatching that was previously used to integrate a vehicle.) -
Allow recomputing of a vehicle’s route after finishing a drive order or on topology changes.
-
Allow vehicle themes to define not only the graphics used, but also the content and style of vehicle labels in the Plant Overview.
-
Enable the web API to optionally use HTTPS.
-
Allow an optional set of properties for meta information to be stored in a model, and use it to store the model file’s last-modified time stamp in it.
-
-
Bugs fixed:
-
Prevent moving of model elements in the Plant Overview when in mode OPERATING.
-
Prevent creation of groups in the Plant Overview when in mode OPERATING.
-
Properly handle renaming of paths and path names that do not follow the default naming pattern in the Plant Overview.
-
Multiple minor fixes for the integration project generator.
-
-
Other changes:
-
When using the Plant Overview or Kernel Control Center with SSL-encrypted RMI, verification of the server certificate is now mandatory.
-
Adjust the default docking frames layout in the Plant Overview for mode OPERATING a bit to make better use of wide-screen displays.
-
Include web API documentation generated by Swagger in the distribution.
-
Version 4.9.1 (2018-04-26)
-
Bugs fixed:
-
Include the
buildSrc/
directory in the source distribution. -
Properly display vehicle routes after adding driving course views in the Plant Overview.
-
Properly disconnect the plant overview from the kernel when switching to modelling mode.
-
Version 4.9 (2018-04-16)
-
Bugs fixed:
-
Fix jumping mouse cursor when dragging/moving model elements in the Plant Overview in some cases.
-
-
New features:
-
Allow the kernel to work headless, i.e. without a GUI. Introduce a separate Kernel Control Center application that provides the same functionality and can be attached to the kernel as a client.
-
Provide a single-threaded executor for sequential processing of tasks in the kernel, which helps avoiding locking and visibility issues. Use this executor for most tasks, especially the ones manipulating kernel state, that were previously executed concurrently.
-
Introduce a web API (HTTP + JSON), intended to replace the proprietary TCP/IP host interface, which is now deprecated.
-
Introduce an API for pluggable model import and export implementations in the Plant Overview.
-
-
Other changes:
-
Split the Kernel interface into aspect-specific service interfaces.
-
Provide a (more) simple event API, including an event bus implementation as a replacement for the previously used MBassador and event hub.
-
Overhaul the default dispatcher implementation to improve maintainability and extensibility.
-
Allow suggestions for property values in the Plant Overview to depend on the key.
-
Improve API and deprecate classes and methods in lots of places.
-
Improve default formatting of log output for better readability.
-
Version 4.8.4 (2018-02-12)
-
Bugs fixed:
-
Fix erroneous behaviour for renaming of points when points are block members in the plant model.
-
Version 4.8.3 (2018-01-24)
-
Bugs fixed:
-
Fix processing of XML messages received via the TCP-based host interface.
-
Version 4.8.2 (2017-12-15)
-
Bugs fixed:
-
Properly store links between locations and points in the unified XML file format when the link was drawn from the location instead of from the point.
-
Version 4.8.1 (2017-12-05)
-
Bugs fixed:
-
Ensure that marshalling and unmarshalling of XML data always uses UTF-8. This fixes problems with plant models containing special characters (like German umlauts) e.g. in element names.
-
Version 4.8 (2017-11-28)
-
Bugs fixed:
-
Properly copy model coordinates to layout coordinates in the plant overview without invalidating the model.
-
Adjust erroneous behaviour in the load generator plugin panel and properly update its GUI elements depending on its state.
-
-
New features:
-
Add a category property to transport orders and order sequences and a set of processable categories to vehicles, allowing a finer-grained selection of processable orders.
-
Prepare proper encryption for RMI connections.
-
-
Other changes:
-
Use the unified (i.e. the kernel’s) XML file format to load and save plant models in the plant overview by default. (The plant overview’s previous default file format is still supported for both loading and saving. Support for the old format will eventually be removed in a future version, though, so users are advised to switch to the new format.)
-
Remove some unmaintained features from the loopback adapter and its GUI.
-
Version 4.7 (2017-10-11)
-
Bugs fixed:
-
Ensure that scheduler modules are properly terminated.
-
-
New features:
-
Allow the colors used for vehicles' routes be defined in the plant model.
-
Have the default dispatcher periodically check for idle vehicles that could be dispatched. This picks up vehicles that have not been in a dispatchable state when dispatching them was previously tried.
-
Version 4.6 (2017-09-25)
-
Bugs fixed:
-
Don’t mark a drive order as finished if the transport order it belongs to was withdrawn.
-
Properly update the vehicles' states in the kernel control center’s vehicle list.
-
When creating locations, properly attach links to the respective points, too.
-
When renaming a point in the plant overview, properly update blocks containing paths starting or ending at this point.
-
Avoid NPE when the transport order referenced in a
Vehicle
instance does not exist in the kernel any more.
-
-
New features:
-
Allow the kernel’s RMI port to be set via configuration.
-
Allow preferred parking positions and recharge locations to be set as properties on
Vehicle
instances. -
In XML status channel messages, add a reference to a vehicle’s transport order, and vice versa.
-
Allow the kernel’s order cleanup task to be adjusted via predicates that approve cleanup of transport orders and order sequences.
-
-
Other changes:
-
Deprecate
VehicleCommAdapter.State
. It’s not really used anywhere, and the enum elements are fuzzy/incomplete, anyway.
-
Version 4.5 (2017-08-10)
-
Switched to a plain JGraphT-based implementation of Dijkstra’s algorithm for routing.
-
Deprecated static routes. All routes are supposed to be computed by the router implementation. (Both the kernel and the plant overview will still be able to load models containing static routes. The button for creating new static routes in the plant overview has been removed, however.)
-
Introduced caching for configuration entries read via binding interfaces.
-
Prepared immutability for plant model and transport order objects within the kernel.
-
Deprecated dummy references to objects as well as the superfluous ID attribute in
TCSObject
. -
Made JHotDraw and Docking Frames libraries available as Maven artifacts so they do not have to be kept in the sources distribution.
-
Updated Mockito to 2.8.47.
Version 4.4 (2017-07-17)
-
Fixed a performance issue with building routing tables in the default router caused by excessive calling of methods on a configuration binding interface.
-
Introduced a method to explicitly trigger routing topology updates via the
Kernel
interface instead of explicitly updating it whenever a path was locked/unlocked to avoid redundant computations. -
Improved behaviour with scaling the course model in the plant overview.
-
Added a mechanism to provide project-specific suggestions for keys and values when editing object properties in the plant overview.
-
Added GUI components to set vehicle properties from the loopback driver’s panel.
-
Deprecated explicit event filters, which make the code more verbose without adding any value.
-
Some small bugfixes and improvements.
Version 4.3 (2017-06-30)
-
Introduced configuration based on binding interfaces and cfg4j to provide implementations for these, and deprecated the previously used configuration classes. Implications and side effects:
-
Made documentation of configuration entries (for users) easy via annotations.
-
Switched configuration files from XML to properties.
-
Switched to read-only configuration.
-
-
Improved maintainability and reusability of the default dispatcher implementation.
-
Updated Gradle wrapper to 3.5.
-
Many small bugfixes and improvements.
Version 4.2 (2017-05-29)
-
Simplify the kernel API by using transfer objects to create plant models and transport orders. Expect plant models to be transferred as a whole instead of updating existing model elements with multiple calls.
-
Actually make use of modules in the default scheduler: A scheduler module can be used to influence the allocation process of resources to vehicles (e.g. to wait for infrastructure feedback before letting a vehicle pass a path).
-
A location type’s (default) symbol can now be overwritten by a location to display an empty symbol.
-
Fix a bug where a large plant model could be loaded multiple times when loaded from the kernel into the plant overview.
Version 4.1 (2017-04-20)
-
Added functionality for reading and writing the kernel’s plant model file format to the plant overview client.
-
Added bezier paths with three control points to the plant overview client.
-
Added a panel to observe resource allocations to the plant overview client.
-
Added a dialog requiring user confirmation before changing the driver associated with a vehicle to prevent accidental changes.
-
Improved performance for transferring model data from the plant overview client to the kernel.
-
Improved selection of colors used for marking vehicles' routes in the plant overview client.
-
Improved performance of routing table computation by computing only one table shared by all vehicles by default. (Computation of separate tables for vehicles is optionally possible.)
-
Many small bugfixes and improvements to code and documentation.
Version 4.0.1 (2017-02-25)
-
Fix a potential deadlock in the default scheduler.
Version 4.0 (2017-02-11)
-
Split the base library into a base API, an injection API and a library with commonly used utility classes to reduce the load of transitive dependencies for API users.
-
Heavily cleaned up the APIs, including some backwards-incompatible changes (mainly renaming and removing previously deprecated elements). Notable examples:
-
Moved vehicle communication adapter base classes to
org.opentcs.drivers.vehicle
and named them more appropriately. -
Removed TCP/IP communication implementation from
org.opentcs.util.communication.tcp
and a few more utility classes. Maintaining these is out of the openTCS project’s scope.
-
-
Greatly improved extension and customization capabilities for both the kernel and plant overview applications by applying dependency injection in more places.
-
Communication adapters may now participate with dependency injection.
-
Default kernel strategies may now easily be overridden.
-
-
Simplified the default
Scheduler
implementation. -
Switched logging to SLF4J.
-
Improved project documentation for both users and developers and migrated to Asciidoctor for easier maintenance.
-
Updated Guice to 4.1.0.
-
Updated Guava to 19.0.
-
Updated JDOM to 2.0.6.
-
Updated Gradle to 2.13.
-
Many small bugfixes and improvements.
Version 3.2 (2016-01-19)
-
Switched to Gradle as the build management system for improved dependency management and release process. This introduces cleanly separate subprojects for base library, basic strategies library, kernel application, plant overview application and documentation. It also adds clean separation of application code and Guice configuration.
-
Added an event bus-backed event hub implementation for the kernel to distribute events sent by e.g. communication adapters and make it possible to forward them to kernel clients. Also add method
publishEvent()
toBasicCommunicationAdapter
to allow communication adapters to use it. -
Adjusted the dispatcher’s and kernel’s methods for withdrawing transport orders to explicitly state whether the order should be withdrawn regularly or aborted immediately, which makes them deterministic for the caller.
-
Moved code for handling transport order states/activations from the kernel to the dispatcher implementation for better separation of concerns.
-
Improved the use of dependency injection via Guice in the kernel to make the code more modular.
-
Added annotation
@ScheduledApiChange
for marking scheduled incompatible API changes. -
Updated library Guava to 18.0.
-
Many small fixes and improvements.
Version 3.1.1 (2015-05-06)
-
Fix a crash in the plant overview client that occured when the user tried to add a drive order to a transport order.
Version 3.1 (2015-03-23)
-
Fix the encoding of model files written by the plant overview client.
-
Fix a problem with renaming points that resulted in broken model files.
-
Fix a crash that happened when trying to open a context menu on a vehicle in modelling mode.
-
Properly set the scale factor when loading a model from a file.
-
Avoid a crash when trying to create a transport order with a model that does not contain any locations/transport order destinations.
-
Fix direction indicators of paths not being displayed properly after loading a model from a file.
-
Fix outdated documentation in a couple of places.
Version 3.0 (2014-11-25)
-
The plant overview client can now be used for offline modelling, i.e. without requiring a permanent connection to the kernel.
-
To further reflect these changes, the plant overview client now maintains its operating mode independently from the kernel’s state. If the user sets the mode of the plant overview client to
OPERATING
while the kernel is in modelling mode, an empty model will be displayed and the actual model will be loaded as soon as the connected kernel switches back to operating mode. Furthermore, this allows to modify the driving course model in the plant overview client while the kernel remains in operating mode. See the manual for more information. -
The management of course model files was moved to the plant overview client. As of this version, the kernel stores only a single driving course model which can be persisted by selecting the corresponding menu item in the graphical user interface of the plant overview client. Changes made to the model in the plant overview client must be explicitly transferred to the kernel. To migrate all of your existing models to this new version, please refer to the manual.
-
Changes made to the Kernel API:
-
Method
Set<String> getModelNames()
was changed toString getModelName()
, as from now on there exists only one model at a time. -
Method
loadModel(String modelName)
no longer requires/accepts a parameter. -
Method
saveModel(String modelName, boolean overwrite)
no longer accepts theboolean
parameter and overwrites the model automatically. -
Method
removeModel(String rmName)
no longer requires/accepts a parameter. -
Methods
createLayout(byte[] layoutData)
andsetLayoutData(TCSObjectReference<Layout> ref, byte[] newData)
have been removed along with classLayout
.
-
-
Updated library Google Guava to 17.0.
-
Updated library JAXB to 2.2.7.
-
Updated project to Java 8.
Version 2.7.1 (2014-06-30)
-
Fixed a potential crash with switching to plant operation mode when the model contained static routes.
Version 2.7 (2014-06-25)
-
Updated library Docking Frames to 1.1.2p11.
-
Added library Google Guava 16.0.1 for better code readability via small utility methods.
-
Added position coordinates to locations.
-
Added synchronization of model and layout coordinates for points and locations.
-
Fixed reconstruction of routing tables when locking/unlocking paths in plant operation mode.
-
Reimplemented the former Dijkstra-based routing table construction, now providing one based on breadth-first search and an alternative based on depth-first search, and use pluggable routing cost functions.
-
Implemented a proper life cycle for plant overview plugin panels.
-
Modified model management to not allow model names to differ in the case of their spelling only to prevent inconsistencies on Windows systems.
-
Replaced the reference on a Location in a MovementCommand with the Location itself to provide more information to the vehicle driver.
-
Made more wide-spread use of dependency injection via Guice and refactored, cleaned up and simplified source code in many places, primarily in the plant overview client.
-
Many small bugfixes and improvements.
Version 2.6.1 (2014-03-14)
-
Properly color the route for vehicles that have just been created and not loaded from an existing plant model.
-
Fix loading plant models created by older versions of openTCS that contained certain path liner types.
-
Properly set point types as read from the plant model in the plant overview client.
-
Do not provide a clickable graphical figure in the plant overview client for vehicles that should actually be invisible.
Version 2.6 (2014-02-28)
-
Updated library Docking Frames to 1.1.2p10e.
-
Updated library JDOM to 2.0.5.
-
Updated library JFreeChart to 1.0.17, including an update of JCommon to 1.0.21.
-
Updated library JUnit to 4.11, including the addition of Hamcrest 1.3.
-
Updated DocBook style sheets to 1.78.1.
-
Added library Google Guice 3.0 for dependency injection and thus better modularity.
-
Added library Mockito 1.9.5 to simplify and improve the included unit tests.
-
Downgraded the Saxon XSL processor to version 6.5.5, as more recent versions seem to have deficiencies with DocBook to FO transformations.
-
Merged the experimental generic client application into the plant overview client, which can now be extended with plugin-like panels providing custom functionality.
-
Added plugin panels for load generation and statistics reports into the plant overview client.
-
Improved the undo/redo functionality of the plant overview client in modelling mode.
-
Temporarily disabled the copy-and-paste functionality of the plant overview client in modelling mode until some major usability issues have been sorted out.
-
Improved editing of multiple driving course elements at the same time.
-
Temporarily disabled the possibility to add background graphics until this works more reliably.
-
Unified look-and-feel and fonts in the kernel control center and the plant overview client and removed the selection menu for different Swing look-and-feels from the kernel control center.
-
Improved localization of the plant overview client.
-
Removed the kernel’s explicit "simulation" mode, which was never fully implemented or used and provided practically no advantages over the normal mode of operation, in which vehicles can be simulated using the loopback driver.
-
Fixed/improved GUI layout in multiple places of the kernel control center.
-
Many bugfixes and improvements to code and documentation.
Version 2.5 (2013-12-18)
-
Added library Docking Frames 1.1.2-P8c.
-
Made some panels in the plant overview client (un)dockable.
-
Added a panel with an overview of all vehicles and their respective states to the plant overview client.
-
Added a pause button to the plant overview client to pause/stop all active vehicles at once.
-
Introduced pluggable themes to customize the appearance of locations and vehicles in the plant overview.
-
Added generic grouping of driving course elements, primarily to support visualization in the plant overview.
-
Translated the user manual to English.
-
Many small bugfixes and improvements to both the code and the documentation.
Version 2.4.2 (2013-07-29)
-
Updated the XML Schema definitions for the host interface.
Version 2.4.1 (2013-05-30)
-
Updated the visualization client, including many bug fixes, usability improvements and internationalization (English and German language).
-
Properly included a vehicle’s length when persisting/materializing a course model.
-
Removed an erroneous JAXB annotation that led to an exception when trying to persist load generator input data in the generic client.
-
Changed the startup scripts/batch files to look for extension JARs in
lib/openTCS-extensions/
instead oflib/
.
Version 2.4 (2013-02-07)
-
Updated JDOM to 2.0.4.
-
Updated JHotDraw to 7.6.
-
Updated Checkstyle to 5.6.
-
Integrated Saxon 9.4 and Apache FOP 1.1 into the build for processing the DocBook manual.
-
Major overhaul of the visualization client, including: Integration of both modes (modelling and visualization) into a single application, preparation for proper localization and integration of the course layout information into model data structures, making it easier to create complete models including course layout via the kernel API. (This basically allows to implement other clients that can create new models or import/convert existing models from other applications.) Using models containing "old" layout data is still supported but deprecated.
-
Changed license of the visualization client to LGPL.
-
Improved support for vehicle energy management: For each vehicle, a specific charging operation may be specified (default: “CHARGE”), which will be used by the dispatcher to automatically create orders to recharge the vehicle’s energy source.
-
Improved strategies for selecting parking positions and charging locations.
-
Changed initial processing state of a vehicle to
UNAVAILABLE
, preventing immediate dispatching of vehicles on startup. -
Improved kernel methods for withdrawing orders from vehicles and allow setting a vehicle’s processing state to
UNAVAILABLE
to prevent it being dispatched again immediately. -
Added kernel method dispatchVehicle() to allow vehicles in state
UNAVAILABLE
to be dispatched again. -
(Re-)Added 'dispensable' flag to class TransportOrder to indicate that an order may be withdrawn automatically by the dispatcher. (Primarily used to make parking orders abortable.)
-
Improved handling of order sequences.
-
Added a simple, preliminary implementation of data collection for statistics based on event data in
org.opentcs.util.statistics
. -
Removed class
VehicleType
and all references to it completely. All information about the vehicles themselves is stored in Vehicle, now, simplifying the code in whichVehicleType
was used. -
Added
Vehicle.State.UNAVAILABLE
for vehicles that are not in an ERROR state but currently remotely usable, either. (Examples: manual or semi-automatic modes) -
Added methods
Kernel.sendCommAdapterMessage()
andCommunicationAdapter.processMessage()
to allow clients to send generic messages to communication adapters associated with vehicles. -
Removed methods
stop()
,pause()
andresume()
from communication adapter interface as they had not served any purpose for long time. -
Removed kernel method
getInfoText()
, for which thequery()
method has served as a replacement for a while, now. -
Properly propagate exceptions to clients connected via the RMI proxy.
-
Small bug fixes and improvements to code and documentation.
Version 2.3 (2012-09-17)
-
Moved sources of the generic client into the main project’s source tree.
-
Updated JFreeChart to 1.0.14.
-
Use JFreeChart for drawing the velocity graph of a communication adapter.
-
Instead of emitting an event only after the kernel’s state changed, emit an additional one before the state transition.
-
Implemented org.opentcs.data.order.OrderSequence for processes spanning more than one transport order that should be processed by a single vehicle.
-
Added a set of properties to DriveOrder.Destination and MovementCommand, allowing an order/command to carry additional information for a communication adapter or vehicle, if necessary.
-
(Re-)Added
State.CHARGING
and mergedState.DRIVING
andState.OPERATING
intoState.EXECUTING
inorg.opentcs.data.model.Vehicle
. -
Added a settable threshold for critical and good energy levels of a vehicle.
-
Added a vehicle specific charging operation to Vehicle, settable by the communication adapter.
-
Recompute routing tables when (un)locking a path.
-
Remove
org.opentcs.data.model.Path.Action
, which wasn’t really used anywhere and doesn’t provide any benefit over a Path’s properties. -
Remove a lot of deprecated methods in the kernel interface.
-
Replace the existing dispatcher with one that is aware of order sequences and vehicles' energy levels and automatically creates orders to recharge vehicles.
-
Deprecated and largely removed references to
org.opentcs.data.model.VehicleType
, simplifying some code. -
Bug fix in
KernelStateOperating.activateTransportOrder()
: Use our own references to the transport order, not the one we received as a parameter, as that causes problems if the order has been renamed but a reference with the old name is being used by the calling client. -
Moved classes to packages properly separated by functionality, and removed a few utility classes that were not used and didn’t provide much. (This effectively means the API provided by the base JAR changed. Fixing any resulting broken imports should be the only thing required to use the new version.)
Version 2.2 (2012-07-10)
-
Published as free open source software (license: the MIT license, see
LICENSE.txt
) - Requires Java 1.7 -
Update JDOM to 2.0.2.
-
Integrated kernel and driver GUI into a single application.
-
Basic support for energy management
-
Support for dynamic load handling devices reported by vehicles/vehicle drivers to the kernel
-
Simplified integration of vehicle drivers: Vehicle drivers in the class path are found automatically using
java.util.ServiceLoader
. -
Automatic backup copies (in
$KERNEL/data/backups/
) when saving models -
Switched from properties to XML for configuration files
-
Simplified and more consistent kernel API
-
Many small bug fixes and adjustments of the included strategies