Release 2018.03

Release 2017.12 and 2018.03 have been combined since features in the 2017.12 were to be updated after 2018.03 was already released.

In order to prevent issues trying to apply changes to NSF installations with different versions, the upgrade packages are designed to bring all installations to the same updated 2018.03 version.


Library Version
nsx-libraries 3.0.2
primeRadiant 2018.03.10
elements 2018.03.7
nsx-prime 2.6.5
elements-io 1.1.12
webStyles 2018.03.14

Upgrade using ‘upgrade zip’

The upgrade zip can be found on trantor as PR-upgrades/PR-201803/upgrade/

Starting point for the upgrade: primeRadiant and expanders from release 2017.10.

Preparation: stop the primeRadiant before running the upgrade script. Unzip the upgrade zip.

Upgrade: run (only) the script ‘upgrade_prime_radiant.bat’.

Configurations: start the primeRadiant and login. Navigate to menu ‘Software Configs’, select ‘NsfBase’ and click on row ‘NSF 3.0’.

Important: always check the source code that is located in your custom code ‘overlay’ folder(s). This ‘overlay’ source code may need to be changed according to new expander templates.

Click button ‘Update Prime Radiant’

All primeRadiant configurations up to release 2018.03 are imported, e.g. PrimeBase, NsfBase, ExpanderVersion PresentationSettings, DataOptionTypes, TaskOptionTypes, FlowOptionTypes, FieldOptiontypes, ValueFieldTypes, etc.

Click button ‘Update PR Settings’

All settings and options that can be selected for expansion of an application to an ‘application instance’, are imported.

These configuration settings are devided into 4 types: technical infrastructure settings, global options settings, business logic settings and presentation settings.

Click button ‘Import Base Components’

The latest version ( of the models and custom code of the base components are imported into the primeRadiant.

As this release contains a lot of improvements in the workflow component, this new import needs to be done for this 18.03 release.

Upgrade using ‘full zip’

The full zip (already) contains all latest versions, settings & configurations of the 2018.03 upgrade. The full zip can be found on trantor as PR-upgrades/PR-201803/full/PR-2018.03.7_exp3.

Important: always check the source code that is located in your custom code ‘overlay’ folder(s). This ‘overlay’ source code may need to be changed according to new expander templates.

Workflow database schema upgrade

In order to get the workflow component working for the 18.03 release, a number of database schema changes are needed.

Two new data elements are introduced for multi-node support: EngineNode and EngineNodeService.

EngineNode contains - next to id and name - the following fields: status (String), hostname (String), master (Boolean), lastActive (DateLong), activeSince (DateTime).

EngineNodeService has - next to id and name - the fields status (String), engineNode (DataRef), engineService (DataRef), lastRunAt (DateLong), nextRun (DateLong).

The following fields need to be added to the StateTask, EngineService and Workflow data elements:

Workflow: sequencingStrategy (String) - this field can contain the values ‘default’ and ‘greedy’ (See Sequencing)

StateTask: maxConcurrentTasks (Integer) and timeout (Long) (See Parallelization)

EngineService: maximumNumberOfNodes (Integer)

Changes & Improvements

OLTP: workflow improvements

The goal of this release was to improve the performance of the workflow engines. This solution improves the engines in multiple layers:

Transactional tasks

TaskElements have been extended with a ‘transactionType’ field. (See Task Transaction Type)

Parallel execution of tasks

StateTasks now have a field ‘maxConcurrentTasks’ to define the maximum parallelization of a task. (See Parallelization)

Sequential execution of tasks

Tasks can be executed in sequence so that each instance processed by an engine will reach its final end state as soon as possible. (See Sequencing)

Automatic startup of engines

If the project is expanded for JEE 6 or higher, all engines will started automatically. (See Engine startup)

Automatic recovery of interrupted workflows

If an application is shut down while a task was being executed, the processed instance may hang in an interim state. If the project is expanded for JEE 6 or higher, an automatiic process will attempt to recover those instances. (See Interrupt recovery)

Workflow Execution in multi-node environments

In order to allow multiple nodes to work efficiently on the same dataset, they require a way to claim a certain subset of the data as a work set. This is implemented with claims. (See Claims)

JEE versions

JEE version in technical infrastructure

The technical infrastructure setting can be configured with JEE version to compile against JEE6 or JEE7. It is also possible to provide the version with the JEE_VERSION env variable.

ejb3.0, ejb3.1 folders in ext

Depending on the JEE version, the ejb3.0 or ejb3.1 ext folder will be added to the logic layer of each component. This can be used to implement JEE version specific implementations. E.g. if a bean uses features only available in ejb 3.1.

Context to replace direct UserContext references

The previous interface of the Agent classes had a factory method based on the UserContext:

InvoiceLocalAgent invoiceAgent = InvoiceLocalAgent.getInvoiceAgent(userContext);

This means, however, that any context added to the ParameterContext is lost. To solve this, the agents now have a factory method based on the Context class:

Context context = targetParameter.getContext();
// ...
InvoiceLocalAgent invoiceAgent = InvoiceLocalAgent.getInvoiceAgent(context);

To make the transition easier, all factory methods based on the UserContext have been deprecated.

Maven builds

The pom.xml files for maven have been extended with features aimed to decrease the build time of large projects.

generate artifact label

A new option (generateArtifactLabel) has been added to the globalOptionSettings configuration that will add an extra tag to the component version in the maven config files.

This tag contains references to the settings used to expand the component. This way, the jar artifacts generated during the build will have unique names related to the chosen settings.

This makes it possible to upload component jars to a remote repository for a combination of expansion settings.

build profiles

In order to improve the build time, some profiles have been added to the maven builds.

CSV import and export

Option: CSV import

A data-option includeCsvImport has been added. This will generate a number of methods and classes to upload, parse and store the content of a CSV file as instances of the target data element.

Option: CSV export

Also, a data-option includeCsvExport has been added. This will generate a number of methods and classes to generate and download a CSV file based on the instances of a data element.

note: there is an issue with a dependency not being added for expanders 3.2.1-, see the article for more information

Security patches

The following issues with security have been fixed:

Issue YNS ticket Resolution
Multiple issues with sessions YNS-324 Resolved
Dependencies on vulnerable libraries YNS-354 Updated versions and allow configuration of versions with yaml file
Session does not expire when redirected to (re)login page YNS-345 Resolved
Missing anti-caching headers YNS-348 Resolved
Content-Type is text/plain for json YNS-349 Set content-type to application/json;UTF-8 for all json requests
JsessionId is not refreshed after login YNS-343 Websphere specific (requires solution with specific expanders)

Prime Radiant

claim elements

An extra button has been added to the dataElements tab on the component page to create a new claim element. This creates a dataElement with option isClaimElement and the correct fields. It is also possible to add claims to all flows in a component with the ‘Generate Claims’ button under ‘Perform Tasks’.

Automated functions

generated finders

Finders for claims and finder for the uniqueKey option are now generated and completed automatically.

issues with waterfalls

  1. Fixed issues with deep waterfall models
  2. Removed limit on recursiveness through better loop detection algorithm


The following settings have been added to the globalOptionSettings:

  • generateArtifactLabel Adds a tag to the version of the component pom.xml files to include expansion information
  • useCsrfProtection Replaces the environment variable for expansion. It adds extra security to prevent replay attacks on requests to the backend (see Cross-site request forgery).
  • enforceHttpMethod Replaces the environment variable for expansion. It makes policy on https methods more strict for security reasons.

Other changes

‘Resources’ anchor in component metadata

The ComponentMetaData has received an extra configuration method to build ‘ResourceDef’s’. The can be used for registering beans that do not belong to standard elements.

E.g. developers have added a custom bean ‘MessageObserverBean’ that needs to be available through jndi. They can add the MessageObserverBean as a ResourceDef in teh ComponentMetaData.

additional id’s and classes on html templates

Extra id’s and css classes have been added to templates to make it easier for testers to find the right elements. The article on front-end testing provides a small example of their uses.

It is also possible to insert additional id’s in element tables with the option insertTableIds when using expanders version

enforceHttpMethod, useCsrfProtection and generateArtifactLabel options

See globalOptionSettings.

noClientLayer, noViewLayer, noControlLayer, noProxyLayer, noLogicLayer

Several no_Layer options have been implemented on both component level and dataElement level.

The implementation is still rough, so removing random layers from components might lead to uncompilable projects.


If environment variable NO_PROVISION_FILES is set to TRUE, provision files will not be generated. This may speed up expansion time.

Provision files are scripts generated to provision the database of an application through RMI. However, they are not always used.

redundant ANT scripts

ANT files are no longer generated for Maven. A bug in the expanders caused some build scripts for ANT to be generated under Maven in previous versions.

Application info

A tooltip is generated in expanded projects that provides some information on the project. This includes expander settings, expansion-time information and some statistics on customizations.

The information is stored in a properties file under the application shared folder. There is an anchors where developers can add additional information.

The component option hideComponentMetaInfo prevents info about a component being added to

If the tooltip is unwanted, it is possible to overwrite the ‘scripts-after.jspf’ file in the layoutStyle or with an overlay.


Assets component in EJBPolicy=Local

In previous versions, the assets component could not be compiled if expanded with the settings EJBPolicy=Local. This was due to missing harvest files for some local interfaces.