Cloud Software Group, Inc. EBX®
TIBCO EBX® Documentation

5.9.3

5.9 service packs

5.9.3 released on March 25, 2019 for:

5.9.0 fix B released on January 21, 2019 for:

5.9.0 fix A released on December 10, 2018 for:

5.9.0 released on October 26, 2018.

Overview of 5.9.0

Some of the most notable features offered by this release are:

Concerning supported environments, this release brings some notable changes that are documented in the section Changes on supported environments.

Attention

Before proceeding with the upgrade of an existing environment, ensure that you have carefully read the Version upgrade section.

User experience

New Skin

/5.9.0-NewSkin.png

Modal pop-up window (1)

Modal pop-up windows have been removed from most EBX® screens. Instead, the requested content overlaps the workspace and a breadcrumb allows the user to return to the previous content.

Translucent bottom bar (2)

The new bottom bar displayed for forms is now translucent. This allows the end-user to become more aware that the page can be scrolled.

More technical details below.

Hierarchical views

Action buttons of hierarchy nodes are now displayed to the left of each node (no longer to the right).

Tabs with home icon

On a record form, when tabs are enabled in the data model definition of the table, the main tab used to be displayed with a home icon. This icon is no longer displayed (the 'Main tab label' is still displayed; by default, this label is 'Main').

As a consequence, the existing Java methods setHomeIconDisplayed have been marked as deprecated, see Backward compatibility for more information.

Dataset tree structure

The displayed record is still displayed below the current table but is no longer displayed with a selected style.

Filter icon and filter pane

The magnifying glass icon for filtering has been replaced with a funnel icon /5.9.0-Funnel.png. Actions that remove all filters or quickly apply a given filter have been moved to the filter pane.

Find in hierarchy

A new search pane 'Find in hierarchy' is now available for hierarchical views.

As opposed to filtering, it allows the user to position the members whose label matches the search criteria while keeping the hierarchy displayed. The matched member is highlighted and opened, i.e. its first-level children are displayed. Two buttons (next and previous) are provided to find the following or the previous member matching the search criteria.

This implementation is explicitly announced as a beta version since it contains some limitations, particularly:

Using filters defined in associations

When creating an associated record directly from an association, the filters defined in the data model are now evaluated. Applied filters include the one defined by the association and those defined by the foreign key(s) involved in the association. As a consequence, it is now forbidden to create an associated record that does not comply with these filters.

The feature includes the possibility to customize the message displayed to the end-user when attempting to create an associated record that does not comply with the defined filters. If the filter is defined by the association, a new message property is available, see association filter for more information; for a filter defined on a foreign key, the existing validation message is reused.

These filters are also evaluated when displaying the list of records that can be associated directly from an association (however, in the case of an association over a link table, the filter defined by the foreign key to the source table is ignored).

User interface advanced customization

This release offers new capabilities to customize the user interface through additional configuration or Java programming.

User services and record forms

It is now possible to use custom user services to replace default model-driven record forms. Regarding UIForm, it allows implementing more advanced user interfaces.

See UserServiceRecordFormFactory for more information.

Enriched context for record creation

When a record is being created from a foreign key field or from an association, the Java API now provides information about the source record. This new information is available in table triggers and in the new access rule for create.

For more information, see NewRecordContext and the two interfaces extending it.

New properties for toolbar actions

It is now possible to define if the service is to be launched in the current context or in a web component. In the latter case, it is possible to specify values for the declared parameters of the service as well as the characteristics of the modal containing the service.

These options are available both in the Data Modeling Assistant and via the Java API.

Note

In order to be available as a Web Component in a toolbar action, a service must be declared as such. See WebComponentDeclarationContext.setAvailableAsToolbarAction.

Layout capabilities

With New Skin, an inner white border is always displayed on all workspaces. For developers who exceptionally want to have full width and height components (as the grid edit), a new method isPaddingEnabled() has been added to UIFormPane, UserServicePane and UserServiceRawPane.

Along with full height, the bottom bar is now translucent; the JavaScript function obtained through UIJavaScriptWriter.addJS_addResizeWorkspaceListener gives a second parameter to the JavaScript listener in order to not take into account the bottom bar height. Developers can now size their components to display to the back of the bottom bar.

Perspectives configuration

Perspective activation and menu items include a new "allowed device" property.

This property allows to specify devices that can display the perspective or menu item. Currently only two devices are supported: "EBX® Web Application" and "EBX® GO".

For more information, see Perspective creation and Child perspective menu.

Note

This feature will be supported in the next version of EBX® GO that is expected in a few months.

Selecting a perspective and a perspective action

A new attribute has been added to perspective actions: the action unique name. This new optional attribute is used by new Java API to select a perspective action. Also, methods to select a perspective have been added.

Web component API: UIHttpManagerComponent.selectPerspective and UIHttpManagerComponent.selectPerspectiveAction.

UIResourceLocator: UIResourceLocator.getURLForPerspectiveSelection and UIResourceLocator.getURLForPerspectiveSelection.

UIJavaScriptWriter: UIJavaScriptWriter.addJS_switchToPerspectiveAction.

Security on exit redirection

It is now possible to restrict the URL used to redirect the end-user at the end of a Web Component session (as a reminder, this redirection can be specified either by means of the Web Component redirect parameter, or through the 'Exit policy' in the user interface configuration). In the 'Administration' section, by selecting 'User interface configuration > Advanced perspective', then the 'Exit policy' form, it is possible to specify the list of authorized domains and whether HTTPS is mandatory for each domain.

For more information, see Exit policy (deprecated).

New parameters for servlet URL

Two new parameters (ebx.servlet.http.ui.path and ebx.servlet.https.ui.path) are added to ebx.properties in order to allow the customization of the UI servlet path in the URL.

If they are not specified, they default to "ebx-ui/". See URLs computing for more information.

Permissions

New access rules applied during record creation

In order to bypass the existing AccessRule limitation which prevents dissociating a record creation from a column display, a new kind of access rule has been added. Once set on a record node, such a rule will be evaluated each time a record is created, in addition to any other AccessRule that might also be set on this node.

For more information, see AccessRuleForCreate.

Permission evaluation in the perspective menu

When displaying the perspective menu, permissions are now evaluated before adding any action of the "service" type. As a consequence, services that are not allowed for the user will no longer be displayed.

Also, to identify this new context in the service permission rules, the new toolbar location ToolbarLocation.PERSPECTIVE_MENU has been added.

Workflow

Workflow diagrams

/5.9.0-WorkflowExample.png

In order to help modelers have a clear view of the workflow model they are designing, a BPMN-like workflow diagram is now available.

From the hierarchical view toolbar, it can be accessed by clicking on the button with the following icon: /5.9.0-WorkflowDiagram.png.

Some features of this view:

This view is a service with limited edition abilities: it is only possible to modify existing steps, and links still need to be modified through the hierarchical view.

See Editing the workflow diagram for more information.

Workflow inbox counter

The workflow inbox counter is now refreshed asynchronously, even when no action has been launched. Two parameters have been added to the configuration of workflows under the section 'Temporal tasks' to configure this behavior.

See Workflow inbox counter configuration for more information.

Comment history on a process instance

Since it is more intuitive to have the possibility to read previous comments before leaving one, it is now possible to see all the comments of a workflow directly from the user task.

/5.9.0-WorkflowComments.png

Workflow miscellaneous

Clear history of selected workflows

In the workflow history table view, one can now remove the history of workflows that have been manually selected. To complete the cleaning, a dataspace purge will have to be executed.

See Backward compatibility for more information regarding the new procedure for deleting history data.

Add a new scheduled task

The new SchedulerMarkDataspaceHistoryForPurge task marks the history of a given dataspace for purge, if it is older than the specified number of days.

Duplicate a step

In the workflow modeling, one can now duplicate a step that was previously defined. To facilitate reuse, the new step is created without parents. It can then be relinked to another existing step.

New built-in script to remove a record or a list of records

It is now possible to use a built-in script task to delete records, provided that the following properties are specified: the dataspace, dataset and XPath which identify the record(s).

New Java API to retrieve process instances from a publication name

When a workflow model is updated and republished with the same publication name, it was not possible to retrieve the workflows that were launched beforehand (the publication name is reset to be reused). To retrieve workflows from their launching publication name (the publication name with which they are launched), including the ones whose publication is no longer active, two new methods have been added to the Java API: WorkflowEngine.getProcessInstanceKeys and WorkflowEngine.getProcessInstanceKeysFromHistory.

New java API to retrieve the original publication name from a published process

A new method has been added in order to retrieve the original publication name: PublishedProcess.getOriginalPublicationName

New columns added to facilitate sorting and filtering on publication names

The publication structure has changed and the original publication name is now stored in the 'Publication table'. Two new columns have been added for both WorkItems and Process administration tables and also all the tables in Data workflows section:

  • Launching publication name

  • Publication date

By default, they are hidden on the different views of the Workflow section (Inbox/Active workflows/Work items/Completed workflows) but these columns are available for custom views.

Improved publication labels

The initial publication name is now stored and can be displayed even if the publication has been disabled or unpublished.

  • if the publication is availablePUBLICATION_LABEL + "[" + PUBLICATION_NAME + "]" or PUBLICATION_NAME if label is not defined

  • if the publication is unavailablePUBLICATION_LABEL + "[" + PUBLICATION_NAME + ":" + PUBLICATION_DATE + "]" or PUBLICATION_NAME + ":" + PUBLICATION_DATE if label is not defined

Improved process labels

Legacy display of process labels also contains the publication name: the publication name is saved and thus displayed all the time. The template is as follows:

  • if the publication is availablePUBLICATION_NAME + "#" + PROCESS_ID

  • if the publication is unavailablePUBLICATION_NAME + "#" + PROCESS_ID + ":" + PUBLICATION_DATE

Data validation

Validation rules on null values

It is now possible to define constraints on null values using the validation rule editor in the Data Model Assistant. See validation rules for more information.

Non-blocking validation rules

It is now possible to specify the behavior of a validation rule defined on fields, when a user submits a form with validation errors. That is, it is now possible to indicate whether an input that would violate a validation rule will be rejected or not when submitting a form. See validation rules for more information.

Validation settings

A new class has been added to specify the settings when validating a dataset, a table or a record. This new class includes new properties that allow to specify:

See ValidationSpec for more information.

Disabling validation for mass update

It is now possible to disable the incremental validation of a dataset during the execution of a procedure. The use of this new feature may be useful when performing mass modifications during a procedure. That is, disabling incremental validation prevents the validation of each update performed during a procedure and it can then lead to important performance improvements during mass updates.

See ProcedureContext.disableDatasetValidation for more information.

Resetting validation reports

New methods have been added to the Java API to reset the validation report of a dataset, a table or of the datasets contained in a dataspace.

See Adaptation.resetValidationReport, AdaptationTable.resetValidationReport and AdaptationHome.resetValidationReports for more information.

Dynamic validation messages on foreign key filters

It is now possible to specify dynamic validation messages on programmatic filters defined over foreign key constraints.

See TableRefFilter.getValidationMessage for more information.

Validation messages threshold

A new method has been added to indicate if a validation report item is related to a constraint that has reached the threshold defined by the property ebx.validation.constraints.messages.threshold in the EBX® main configuration file (ebx.properties).

See ValidationReportItem.isValidationMessageThresholdItem for more information.

Data services

REST Toolkit

It is now possible to develop custom REST API using JAX-RS 2.1 annotations. A REST service operation is implemented by a Java method. The JSON media type is supported for the body content by using the Java API for JSON Binding (JSON-B) that can automatically map JSON to a Java type; for example a Data Transfer Object (DTO). Other media types are available, please refer to the documentation for more details. Extended components have been added to use the EBX® API:

See REST Toolkit for more information.

Built-in RESTful services

The built-in RESTful services have been improved on the following topics:

Data operations

Improves the JSON meta data value type for osd:email, osd:html, xs:Name, osd:password and osd:text by using a dedicated value type. The data value representation does not change for all operations.

See Content of simple type for more information.

Paginated access

The pagination context has been updated to improve API performance. The URL for the nextPage has been modified, and the backward compatibility has been ensured.

The pageSize parameter value upper bound limit has been removed (equivalent to the SOAP operations).

See Table parameters for more information.

Authentication

When Basic authentication is activated and an authentication fails, it is now possible to deactivate the interaction by adding a header to the request.

See Request header X-Requested-With for more information.

Token authentication

When using the EBX® default directory, the token creation prompts the user to change their password. The password change can be done through the new Change password operation.

The token authentication method is now always supported and the EBX® property ebx.dataservices.rest.auth.token.activate is no longer supported.

See DirectoryDefault

Check

The request header 'Content-Type' is checked.

See Content-Type header request for more information.

Logging

Some REST operation logs have been migrated to a more appropriate new main logging category, identified by the ebx.log4j.category.log.restServices property key. See Configuring the EBX® logs for more information.

Performance

Data services

The REST select table operations have been improved for the pagination.

Permissions

Permissions on user services have been added to the session cache scope. They provide enhanced responsiveness, especially on use cases where a lot of services are to be displayed.

This cache operates as before: it only takes user-defined permission rules into account, not programmatic rules (which are not cached since they are contextual and dynamic); and its life cycle depends on the context as described hereafter:

Attention

When modifying permissions in a procedure context (by importing an EBX® archive or merging a dataspace programmatically), the session cache must be cleared using Session.clearCache. Otherwise, these modifications will not be reflected until the end of the procedure.

Data modeling

Primary key evolutions

The data model publication process has been enhanced to detect modifications performed on primary key definitions in semantic tables. That is, a warning about the modifications performed on primary key definitions is now displayed when publishing a data model in the Data Model Assistant. Details of these modifications are displayed as well.

For more information about data model evolutions, see Data model evolutions.

Location of Java sources

In the Data Model Assistant, it is now possible to define several locations for the Java sources to be used in a data model.

See Data model properties for more information.

Introspection API

Persistence and databases

New supported database

SAP HANA® has been added as one of the supported database engines. Standard, enterprise, and express editions are supported for versions 2.0 and above.

Inter-database migration

It is now possible to fully migrate a repository from one database to another. The migration is automatic (it does not require technical intervention on the target database, aside from its global setup).

For more information, see Inter-database migration.

History anonymization

A new Java interface is available to anonymize a set of records in the history, according to a specified functional key.

For more information, see RepositoryAnonymizer.

Renaming a column in the database

For mapped tables, it is now possible to programmatically rename a database column. The typical use case is when a schema type change creates a new column with an automatically suffixed name, such as 'name00'. While renaming was already possible through the UI, this new API allows automating the name change over several environments or many tables.

For more information, see DatabaseMapping.

Miscellaneous

Other useful Java API

Getting the dataset reference

The new method Adaptation.getDatasetReference allows getting the AdaptationReference of a dataset.

System session on module registration

The new method ModuleContextOnRepositoryStartup.createSystemUserSession allows obtaining a new EBX® system session during the module startup.

Setting additional parameters to a Web Component

The new method UIHttpManagerComponent.setAdditionalParameter sets an additional specific parameter to the Web Component.

WebListener annotation

An EBX® module can now also be registered using the @WebListener annotation from Servlet 3.0. The requirements are the following: the annotated class must be placed in the EBX® module, it must extend ModuleRegistrationListener and the servlet 3.0 annotation scanning must be activated on the application server.

See Module registration for more information.

D3 advanced setup

To perform the advanced setup of a D3 replica node, a new Java interface ModuleRegistrationAdvancedD3, is available.

For example, when several inter-dependent broadcast dataspaces are used, implementing this interface allows to create the required D3 delivery dataspaces on the replica nodes.

Embedded third-party libraries

EBX® is packaged with its own third-party libraries with some new additions in this release. This simplifies the Java Runtime Environment 9 and above, and improves the application server installation.

Activation

The activation (JSR-925) library is embedded.

Annotations

The common annotations API (JSR-250) library is embedded.

JAX-RS

The CXF and JAX-RS API (JSR-370) libraries are embedded.

JSON

The Johnzon, JSON Processing API (JSR-374) and JSON Binding API (JSR-367) libraries are embedded.

XML

The Bcel, JAXB (JSR-222), SAAJ (JSR-67), Xalan, Xerces and Stax2 (JSR-173) libraries are embedded.

The JVM option should be removed: --add-modules java.xml.ws.

Attention

Some of those third-party libraries may cause conflicts when deployed aside from ebx.jar or included into custom web applications. See Embedded third-party libraries for more information.

Version upgrade

In addition to the information provided in this release note, the document 5.9 Java API changes provides an exhaustive list of the Java API changes provided with this release.

Changes on supported environments

The chapter Supported environments has been updated to reflect the necessary upgrades detailed below.

Browser support

Microsoft Internet Explorer 8 and 9 are no longer supported.

For Mozilla Firefox, the support of ESR 52 has shifted to ESR 60.

JVM support

Java Runtime Environment requirement is now JRE 8 or higher.

Oracle support

Oracle 10g is no longer supported. Minimum supported version of Oracle is now 11g.

PostgreSQL support

Minimum supported version of PostgreSQL is now 9.4.

Backward compatibility

New behavior on server startup

To ensure that the EBX® repository is always consistent with the deployed EBX® modules on which it depends, the repository initialization process now waits endlessly for the registration of the expected modules.

If an expected module is not deployed for any reason, it now must be declared as such in the new property ebx.module.undeployedModules. Please note that the kernel logging category indicates which modules are awaited.

See Declaring modules as undeployed for more information.

A final consequence is that the previous property ebx.module.timeInSecondsForModuleRegistration is now ignored.

EBX® as a Web Component and iframes

In some circumstances, EBX® may add an internal iframe or object. This means that when using EBX® as a Web Component in iframes, custom JavaScript code relying on child/parent relationships may break after EBX® is upgraded.

To avoid this, it is recommended to:

use ebx_getContainerWindow().parent instead of window.parent,

use webComponentIFrame​.contentWindow​.ebx_ContentWindow() instead of webComponentIFrame.contentWindow.

For more information, see the documentation for methods ebx_getContainerWindow() and ebx_ContentWindow().

For the same reason, a UIService called as a Web Component in javascript (XHR) will no longer work. Such hack may have been used to implement the upload service. Instead, it is highly recommended to use UserService or REST service API.

Color settings

The New Skin design also involves a redesign of the colors used to customize the user interface. Some color parameters have been deleted since they were no longer used. The colors used on tables have been reset to their default value so that users can enjoy the new design before customizing it.

See Colors and themes for more information.

No raw HTML in a workspace title

The workspace title no longer allows raw HTML: a text containing HTML tags is now escaped. This includes text generated by classes implementing the interface UILabelRenderer.

In some cases, such as hierarchy views and the display of hierarchy nodes by implementing UILabelRendererForHierarchy, HTML is still tolerated. To distinguish between these cases accepting HTML and the others, a new method UILabelRendererContext.isHTMLForbidden has been added.

Java methods to set a home icon

With the New Skin graphical chart, if a record form has tabs, the main tab is no longer displayed with a home icon. As a consequence, the existing Java methods setHomeIconDisplayed no longer have an effect and have been marked as deprecated.

For more information, see UserServiceRootTabbedPane.setHomeIconDisplayed and UIFormPaneWithTabs.setHomeIconDisplayed.

Removal of locale declaration at the module level

Locales can no longer be declared at the module level. Instead, locales should be declared globally in the main configuration file.

As a consequence, the elements <locales> should be removed from the module.xml documents and the missing locales should be added to the ebx.locales.available property of the main configuration file. If locales are still defined in a module, they will be ignored and EBX® will log a warning message.

For more information, see Adding a new locale.

Built-in RESTful API

The JSON meta data value type for osd:email, osd:html, osd:password and osd:text is no longer returned as a string value.

See Data operation for more information.

REST forward authentication method

Web application deployment on / path context is no more supported.

See Web applications for more information.

Workflow - Clear history of selected workflows

The purge process of history data has been improved in order to deal with larger volumes. It now consists of two distinct steps: the deletion of workflows and the deletion of remnant data. The first step works exactly like the previous 'clear from date' service, the only difference being that it only clears the 'Workflows' table in the history. The second step consists in executing the standard EBX® purge, so as to delete all remnants in the background.

See How to clean workflow history for more information.

Workflow - role controls when offering a work item

The behavior of the control of profiles when offering a work item has been modified: in the previous behavior, a single empty role (a role that does not contain any user) would lock the work item in an "error" state even though the list of profiles contains valid users.

Now, when the list contains:

  • only users: no error

  • users and roles (empty or not): no error

  • only roles, with at least one containing users: no error

  • only empty roles: the work item is set to the error state

Whenever a role is empty, a warning is saved in workflow logs for debugging purposes.

Using EBX® as a Web Component

When some entity parameters are missing, the web component may display an error. Previously, the web component would attempt to fill missing entity parameters based on the user's last visited dataspace.

Specifying the "breadcrumb" feature using the layout parameters viewFeatures and recordFeatures is now deprecated and ignored.

For more information, see Using TIBCO EBX® as a Web Component.

Data modeling

As a consequence of the bug fix #17372, the data model compilation is now stricter regarding dynamic facets. That is, to prevent unexpected errors when working on data, a compilation error is now raised when a dynamic facet targets a field under a list that is not an ancestor of the field holding the dynamic facet.

For more information, see Dynamic constraints.

Exit policy

Error redirection is now deprecated and may be ignored by EBX®.

Strong encoding is no longer supported

Property ebx.urlParameters.strongEncoding is now ignored if specified in the EBX® main configuration file.

Web access management tools must be configured to allow the following characters in URLs: A-Za-z0-9 / - _. ! ~ * ' ( ) %. These tools must also allow all percent encoded characters including %00-%1f, %7f-%ff, and %25.

XPath functions for validation search

It is no longer possible to use XPath functions for validation search (osd:has-validation-item() or osd:contains-validation-message('xxx')) in XPath filters defined on associations and foreign keys. That is, a compilation error is now raised when XPath functions for validation search are used in the context of an association or a foreign key.

Data model - button configuration in custom toolbar

In the configuration form of the Toolbar, the field 'Relief' has been removed. The relief configuration is now ignored and the buttons are flat.

Buttons default relief is now 'FLAT'

To set a border on a button, the method UIButtonSpec.setRelief must be used with the argument UIButtonRelief.EMBOSSED.

How to upgrade an installed environment

In order to upgrade your version of EBX®, perform the following steps:

  1. Back up your repository, including the RDBMS and the directory ebx.repository.directory.

  2. Replace the *.war and ebx.jar files on your application server.

  3. Add the new required ebx-ui.war file in your EAR or on your application server. See Jakarta EE deployment for more information.

  4. Add the new main logging category, in the ebx.properties file, with the ebx.log4j.category.log.restServices property key. See Configuring the EBX® logs for more information.

Attention

If using the EBX® add-ons, make sure that the version of the add-ons is compatible with EBX® version 5.9 before upgrading. For the backward compatibility of the add-ons themselves, refer to the release note of each add-on.

Once an EBX® repository has been used with this version, using it with a previous version is not supported. Consequently, a backup must be created before upgrading, as described above, in order to maintain the possibility of downgrading later.

Bug fixes

Core engine

Data modeling

Data services

Data views

Data workflows

Import / Export

User interface

Users & Permissions

5.9.0 fix B bug fixes

Core engine

Data modeling

Data validation

Data views

Data workflows

Dataspaces & History

Distributed Data Delivery (D3)

Java EE integration

User interface

Users & Permissions

5.9.0 fix A bug fixes

Core engine

Data modeling

Data validation

Data views

Data workflows

Dataspaces & History

User interface

Bug fixes

Core engine

Data modeling

Data services

Data validation

Data views

Data workflows

Dataspaces & History

Documentation

Import / Export

Miscellaneous

User interface

Users & Permissions