Table of Contents

What is New in Dinamica EGO 8.3.0

(Changes compared to Dinamica EGO 8.0.0.)

The application has seen significant enhancements across several key areas, making it more powerful and user-friendly.

Submodel Expansion

The application introduces a new feature called submodel expansion, which is now the default behavior when running a model. This means that when a script is executed, submodels within the script are automatically expanded. However, this behavior can be disabled using command-line parameters or through the options panel. The submodel expansion feature is designed to be robust and handle various scenarios, including debugging and situations where multiple versions of the same submodel exist. The expansion process involves several steps: returning the group in which the submodel was expanded, managing port substitutions, allowing for cancellations, and transferring local submodels to the main script.

The submodel expansion process occurs within a `SkipAllOnError(false)` block, ensuring compatibility with executions performed without expansion. After the expansion, local submodels are removed from the script. The `SubmodelUtils::expandSubmodel()` function is central to this process, providing the group where the expansion occurs unless `DONT_EXPAND_SUBMODEL_AS_GROUP` is specified. Furthermore, submodels can be expanded as regular groups, and properties associated with the submodel are copied to the newly created group. Any exceptions that occur during the expansion are propagated to Java. The `ScriptRunner` now performs submodel expansion in its constructor.

A new property, `PARENT_FUNCTOR_ID_PROPERTY_NAME`, has been added to store the ID of the functor that represents the direct parent from which a functor was derived. A cache is used to store the definition of the functor corresponding to this property. The application also includes functionality to sanitize the occurrence of `PARENT_FUNCTOR_ID_PROPERTY_NAME`.

Distributed Computing

The application incorporates distributed computing capabilities through the Run Remotely functor, which enables scripts to be executed on remote agents. The distributed system includes a new `ConnectionInfo` type with an identifier field and a “Create Connection Info” functor. The system is designed to accept hostnames as network addresses. Upon login, it sends an identification JSON object. The system is capable of reporting errors, including those that originate from submodels, and identifies functors that are running remotely. The Run Remotely functor includes a fallback mechanism for network errors and utilizes a remoteid property to help with error propagation.

The Run Remotely functor sends egomlx scripts to agents, supporting the bundling of submodels, and includes submodels when copying scripts for remote execution. The ScriptRunner parses scripts on remote agents. The RunRemotely functor also supports external output connections. In the options dialog, there is now a “Remote Computing” tab, and distributed options have been moved to the “Execution” tab. The Run Remotely functor's ports for “coordinator identifier” and “network error behavior” are now part of advanced options, and its polling interval label has been adjusted for clarity. The application now has separate executables for the Agent and Coordinator, and both support cancellation. Agents operate on a separate thread and do not block on receive. Coordinator peer tables are sorted to list agents first. Agents can be configured for reconnection retries.

Script and Functor Handling

The application's handling of scripts and functors has been enhanced by including submodels in searches and utilizing a cache for equivalent functors. The `ScriptRunner` now includes parameters for submodel expansion and copy optimization and, as mentioned previously, it performs submodel expansion in its constructor. The application also ensures that content is preserved during copy operations, with properties being handled correctly. Furthermore, data transfers between ports are enhanced when copy optimization is turned off.

User Interface (UI) and User Experience (UX) Improvements

The application includes several UI and UX improvements:

Miscellaneous Improvements

(Summary generated using Google Notebook)