Better control with data tables and material handling

Simplify data management and gain control over your simulation models
Data tables

The Haskoning Witness 28 release brings a set of practical improvements to Data Tables and Material Handling.

These updates focus on two things:

  • Making Data Tables easier to work with in real models
  • Giving you more visibility and control over how items move through material handling systems

Data Tables: More Flexible and Easier to Use

Data Tables are often at the centre of model logic, but using them for working model information, such as job lists, has not always been straightforward. This release adds a set of functions that make common tasks much simpler.

Working with Rows

You can now manage rows without looping through them and managing them yourself:

  • DTInsertRow() – Add a new row where you need it
  • DTDeleteRowNum() (& Str and Name) – Delete rows based on filters

This makes it easier to keep tables clean and up to date during a run, without extra workarounds.

Referencing Columns by Name

Instead of relying on column positions, you can now use:

  • DTColumn() – Access fields by column name

This makes models easier to read and less fragile if table structures change.

You can also insert column names of indexes into Rules, Actions or Expressions more directly using Insert Field from the Element Tree (like Insert with Prompt) – just right click your Data Table. This helps when building or modifying tables dynamically.

Insert Field from Element Tree by name or number
Insert Field from Element Tree by name or number

Experimenter Support

Data Tables also now work with the Experimenter, making it easier to:

  • Load and adjust input data
  • Run variations without creating lots of variables
Experimenter Data Table support

There are two options here when you add a parameter to an experiment

  • "Import from DataTable"
  • "Link to DataTable"

The 'Import from DataTable' and 'Link to DataTable' parameters only behave differently if the experiment is saved, closed, the data in the Data Table is altered in the model, and the experiment is re-opened. The difference is that, for an Import parameter, the snapshot of data taken at the time of the creation of the parameter will be retained as part of the experiment file and used as the baseline data; but for a Link parameter, a new snapshot of data will be taken each time that Experimenter is opened, and each snapshot will be used as the baseline data as long as Experimenter remains open, and that data will not be retained as part of the experiment file.

Hence, an Import parameter would be more useful if the current state of the Data Table is a good set of data that you would like to be used every time that you run the experiment; whereas a Link parameter would be more useful if the baseline data of the Data Table is likely to change, and you would like the updates included in different runs of the experiment.

Material Handling Improvements

Material handling support has also been extended in Witness 28, especially around conveyors, tracks, and logging.

Actions on Output

You can now trigger logic when items leave key elements:

  • Tracks – Actions on output from tracks
  • Conveyors – Actions on output from conveyors

This gives you more control at handover points, where decisions often need to be made.

Journey Logging

A major addition in this release is improved Journey Logging.

You can now track how Parts move through Conveyors, including front‑edge and rear‑edge events, extending existing Path, Track, and Vehicle logging to show not just where items are, but how they reached there.

Setting Up Logging

New functions make this easier to control from Actions code:

  • SetJourneyLogging() – Turn logging on or off
  • SetJourneyLogFile() – Choose where logs are written
Journey logging in Model Options

UNCALL Enhancements

With Tracks and Vehicles systems using the inbuilt CALL and VSEARCH operations, once a vehicle had been assigned to a job it was not possible to re-assign it. Now we have the UNCALL action. You can free up all vehicles to be re-assigned:

UNCALL VehicleName, ALL

Or be more specific:

UNCALL VehicleName, LoadTrack, UnloadTrack, Priority, AttributeName, Expression

This lets you cancel or adjust calls based on more detailed conditions, rather than relying on broad rules.

Why This Matters

These updates focus on everyday modelling problems:

  • Keeping Data Tables manageable
  • Making logic easier to follow
  • Understanding how items move through a system
  • Controlling behaviour at key decision points

They don’t change how you build models at a high level, but they remove a lot of friction when working on real-world scenarios.

The improvements to Material Handling and Data Tables in Witness 28 are all about clarity and control.

You can work with data more directly, respond to events more precisely, and understand movement through your system in more detail.

If your models rely heavily on tables or complex handling logic, these changes should make day-to-day work noticeably easier.

Ben Lomax Thorpe - Commercial Director - Simulation

Ben LomaxThorpe

Commercial Director - Simulation