TIBCO EBX®
TIBCO EBX® Documentation

5.8.1

Release date: October 16, 2017

Overview of 5.8.1

For this release, particular attention has been paid to improving the grid edit and associations.

A new database engine is officially supported: Microsoft Azure SQL.

The Java API has been modernized through the systematic use of generics. This could cause incompatibilities for existing client code; however, these are riskless since they will be detected at compile-time and are easy to fix (see Backward compatibility - Generics).

Attention

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

User experience

Grid edit performance

The load time of the grid edit has been drastically reduced and is now similar to the standard tabular view load time.

Grid edit features

The following illustration details the grid edit view and its available features.

/5.8.1-GridEditOverview.png

Illustration key:

  1. Records created. This pane can be resized.

  2. This record has been modified and can be reverted using this button.

  3. Duplicate button.

  4. Delete button.

  5. Deleted record. The user can still un-delete the record by turning off the delete button. The deletion is effective after a valid submit.

  6. This focused cell is locked. This cell is read-only or the edition is not available in grid edit for its type (i.e. complex, list).

  7. Cell in error. The cell has a light red background, and the error message is displayed in an instant-tooltip.

  8. Copied area. This area is stored in the EBX® clipboard, and can be pasted on the grid edit.

  9. Selected area. This area has been selected by using Click, then Shift+Click. It is particularly useful to select an area to copy or paste.

Record creation

It is possible to add new records to the grid edit view by using the regular /5.8.1-AddButton.png add button in the toolbar. New records are located in a separate area, at the top of the table.

Record duplication

It is possible to duplicate a record displayed in the grid. The /5.8.1-DuplicateButton.png duplicate button is located at the left of each record line. The new record is located in the creation area.

Record deletion

It is possible to delete existing record lines. The /5.8.1-DeleteButton.png delete button is placed at the left of each record line. The records marked for deletion have a strikethrough text, and become semi-transparent.

Validation messages

Previously, when a cell in error was not selected in edition mode, the error message content was hidden. Now, the content is always displayed and the error message is available in a tooltip when the user hovers over the cell.

The pop-up error message displayed when the save fails, due to blocking errors, is more detailed: the record label, node path and message are displayed for each blocking error.

Copy/paste of cells

It is now possible to copy and paste a cell inside a grid edit view. This can be done simply by:

  1. Selecting a single cell or many by holding the keyboard key shift on a click.

  2. Using the menu item Copy in the new Edit menu (or the keyboard shortcut Ctrl+C) to copy the selection.

  3. Using the menu item Paste in the Edit menu (Ctrl+V) to paste copied cells into a cell or another cell selection.

Please note that only simple types are currently supported. Moreover, foreign keys targeting non-string fields and non-string enumerates are not supported for the moment.

This system does not use the operating system clipboard, but an internal mechanism. As a consequence, copying and pasting a cell in an external file will not work. Conversely, pasting a value into a table cell won't work either.

Clipboard is emptied when the user leaves the grid edit view, or when reverting the page.

Miscellaneous

Filtered view indicator

For ease of use, when a view is filtered, the button to open the filter pane is now highlighted. The large 'filtered' indicator next to the view name has been removed.

/5.8.1-FilterFlag.png

Font Awesome

Font Awesome has been updated to version 4.7.0 in EBX®. This update offers a larger selection of icons in the drop-down list for the perspective and toolbar items.

Associations

User interface improvements on associations

The following illustration details some of the new features available on associations.

/5.8.1-AssociationToolbar.png

Link record edition

If the association is configured through a link table, and if this link table contains at least one extra field (i.e. other than the two primary foreign keys) that the user can edit, a service is available from the associated object to open the link record.

The link record is also automatically opened when creating or duplicating an associated object.

See ServiceKey.OPEN_LINK_RECORD for more information.

Association displayed in a modal

The association table can now be configured so that a "preview" button is displayed in the record form. If the user clicks on the button, the association table opens in a modal window.

This display mode can be useful to maintain performance when opening a record, since the association table and its associated objects will be loaded only if the user clicks on the preview button.

Grid edit (#1)

The custom view of an association can be configured to enable the grid edit. If so, the grid edit button will be displayed in the association toolbar. A click on this button will open the association table in a modal window with the grid edit service automatically launched.

Known limitation: Due to the complexity of the depths of the links in associations, the create, duplicate and delete features have been disabled for the grid edit in associations. They will be implemented in a future release.

Filters (#2)

The filter pane button is now displayed in the association toolbar. A click on this button will open the association table in a modal window with the filter pane automatically opened. Users can then filter the table in the usual way.

Note that these filters will only be applied to the modal window and never to the association in the record form.

Size computation (#3)

The size of the association table (i.e. the number of associated objects) can now be computed similarly to a standard table.

View customization

It is now possible to specify the view to be used when associating or moving objects in the association user interface.

See Customized view for actions for more information.

Associations based on an XPath predicate

It is now possible to define an association based on an XPath predicate. It allows to create a relationship between two tables that is neither restricted to an existing foreign key field nor to an intermediate link table.

See Creating associations and Associations for more information. Additionally, new Java interfaces and methods have been added to support this new type of association; see AssociationLinkByXPathLink and AssociationLink.isXPathLink for more information.

Note

Thanks to all the features brought by this release, associations now fully replace and surpass existing selection nodes. As a consequence, selection nodes are deprecated (they can still be used but are no longer documented).

User interface APIs

Web Component API - Combined selection

It is now possible to combine the selection of an entity with the selection of a perspective using the Web component API. If an action of the perspective matches the entity selection, it is highlighted.

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

Web Component API - Expanded hierarchy

It is now possible to automatically expand the hierarchy in a web component.

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

Combo-box

Combo-box filtered selection

When an XPath filter is defined on a foreign key, it is now applied to the selection displayed in the drop-down list of the combo-box. Only static criteria of the predicate are used to filter the selection. For instance, in the predicate category = "Fiction" AND type = ${../refType} only the category = "Fiction" part is used to filter the selection and the part type = ${../refType} is ignored.

For programmatic filters, a new method is available to specify the XPath filter to be applied to the selection. See Foreign key filter and TableRefFilterContext.setFilterForSearch for more information.

Combo-box advanced selection

On a UIComboBox, it is now possible to specify the published view to be used for the advanced selection (only available for foreign key fields, the link is displayed at the bottom right corner of the drop-down list).

See UIComboBox.setViewForAdvancedSelection for more information.

User services

The user service API has been improved on the following topics:

User service without display

A user service without display can be used to perform a task that does not require a user input, or to redirect users to another screen according to various conditions.

See User service without display and UserServiceExtended for more information.

Toolbars

It is now possible to display a toolbar independently of a given record or table.

See UserServiceDisplayConfigurator.setToolbar for more information.

Record duplication

A new method is available to duplicate an existing record.

See UserServiceObjectContextBuilder.registerNewDuplicatedRecord for more information.

User redirection

It is now possible from an event callback or from a UserServiceExtended to redirect users to a URL.

See UserServiceNext.nextURL, UserServiceExtended.initialize and UserServiceEvent.processEvent for more information.

Concurrent deletions

A new method is available to test whether a record or a dataset has been deleted concurrently, for example by another user.

See UserServiceObjectContext.isDataDeleted for more information.

Additionally, to avoid an error when a record being updated has been deleted by another user, a new method is available to specify the behavior in case of a concurrent deletion.

See UserServiceTransaction.add for more information.

Button icons

A new button icon is available in the UIButtonIcon API, underlined in the screenshot below.

/5.8.1-ButtonIcons.png

See UIButtonIcon for more information.

Workflow

Specific columns on workflow views

Specific columns are now available on workflow views (in addition to the work item views). In this way, it is possible to display in workflow execution views the business data mapped in the workflow model. For this, the existing mapping for work item views is used (identical mapping for workflow and work item views).

See Custom workflow execution views and Specific columns for more information.

'Current user' column

It is now possible to add the 'Current user' column to a custom view for the 'Active workflows monitoring' and 'Completed workflows' sections.

Permissions to monitor workflows

The global permissions to monitor workflows have been replaced with more specific global permissions: monitoring publications, monitoring workflows and monitoring work items.

See Backward compatibility for more information regarding the impacts of this evolution.

Disabling copy of validation reports

A new parameter is available on the dataspace creation script task. This parameter allows to disable the copy of validation reports from the parent dataspace. This parameter can be useful for performance issues at the creation time of the dataspace: see HomeCreationSpec evolution for more information.

Workflow API

The Workflow API has been improved for the following topics:

Declaring a custom service as auto-complete

The user service declaration has been enriched and can now declare a custom user service as auto-complete. This evolution is useful for accepting a work item by API. A work item can be accepted by API only if it is associated with an existing complete interaction or with an auto-complete user service. Only some built-in user services were considered as auto-complete. This limitation is now removed by having the possibility to declare custom services as auto-complete too.

See WebComponentDeclarationContext.setAvailableAsWorkflowUserTask and WorkflowEngine.createOrOpenInteraction for more information.

Cleaning workflow history

Two methods have been added to clean the workflow history from a workflow key, and from a given date.

See WorkflowEngine.cleanHistory and WorkflowEngine.cleanHistory for more information.

Getting all workflow keys from the history

It is now possible to retrieve all workflow keys from the workflow history by API, including deleted workflow keys.

See WorkflowEngine.getProcessInstanceKeysFromHistory for more information.

Replaying the current step of a workflow

A new method is available to replay the current step of a workflow.

See WorkflowEngine.replayCurrentStep for more information.

Validation

XPath functions for validation search

New XPath functions are available to search for records according to their validation state:

See Predicates for validation search for more information.

Excluding computed values from the validation

It is now possible to exclude computed fields from the validation by setting the new property osd:disableValidation="true" on the corresponding fields.

Disabling the validation of computed values is recommended when their validation is time-consuming and not relevant (because they cannot be in error, or the actual cause of the error is not on the computed field).

For more information, see Computed values .

Data services

Built-in RESTful services

The built-in RESTful services have been enhanced for the following topics:

Authentication by token

Built-in RESTful services now support authentication by token.

New methods are provided to create and revoke tokens that can be used to authenticate the current user when using the built-in RESTful services.

See Token authentication operations, Token Authentication Scheme and Lookup mechanism for more information.

User interface API

The built-in RESTful services can now be accessed from the user interface API.

See UIResourceLocator.getURLForRest and RestConstants for more information.

Select operation

Two new parameters have been added for response content and performance optimization.

See includeDetails and includeSelector for more information.

Inheritance improvement

The built-in RESTful services fully integrates dataset and field inheritance features.

See Inheritance and value resolution and RESTful inheritance for more information.

System information

A new system information operation is available and returns the values corresponding to the user interface 'Administration' tab > 'System information' menu.

See System information operation for more information.

Directory operations

The EBX® default directory configuration is manageable with REST operations. The users and roles tables, the mailing lists and other objects are concerned.

See Users and roles directory and Directory operations for more information.

User interface

The user interface can be opened or closed to users for maintenance needs. Handled information is similar to what is contained in the UI tab 'Administration' > 'User interface configuration' > 'Advanced perspective' > 'Graphical interface configuration' > 'Application locking'.

See User interface operations for more information.

SOAP operations

The SOAP operation has been improved on the following topics:

Blocking constraint message

The SOAP 'modify' operations have been improved when the blocking constraint is enabled. A localized message can now be returned and specified with the details request parameter.

See Blocking and non-blocking constraints, Insert operation, Update operation and Delete operation for more information.

System information

A new system information operation is available and returns the values corresponding to the user interface 'Administration' tab > 'System information' menu.

See System information operation for more information.

Supported database engines

Microsoft Azure SQL

Azure SQL database has been added as one of the supported database engines.

Azure SQL database is a relational database-as-a-service using Microsoft SQL Server. Customers relying on Microsoft Azure for EBX® deployment can now leverage this database as a service, without having to install and maintain a dedicated SQL Server instance.

Performance

Basic value access

The Adaptation.get(Path) method has been optimized for better performance: our benchmarks measure that its execution time has been divided by two. The improvement will be most noticeable in situations where this method is used intensively, such as batch scenarios.

Note

It should be noted that Adaptation.get(SchemaNode) remains two to four times faster than Adaptation.get(Path). The former should be preferred when performance is crucial.

Dataspace creation not waiting validation

To prevent any delay on the dataspace creation due to a concurrent validation process, a new method has been added to avoid the initial copy of the validation report. As a counterpart, the created dataspace will start with an empty validation report.

See HomeCreationSpec.setCopyParentValidationReports in the Java API for more information.

Session API

A new method is available to evaluate whether a session is part of at least one of the specified profiles. Invoking this method is much more efficient than invoking the isUserInRole method multiple times on each profile.

For more information, see Session.isUserInRoles.

Miscellaneous

Improved reporting on data model evolutions

When the structure of a mapped table is modified in an incompatible way, the data model compilation now reports all errors that prevent the modification (for example, data in several columns exceed the length constraints). This allows to correct errors more efficiently.

Data model introspection API

Uniqueness constraints

It is now possible to retrieve the uniqueness constraints specified by the data model.

See UniquenessConstraint for more information.

Facet control policy

It is now possible to retrieve the control policy of the facets defined in a data model.

See SchemaFacetValidationPolicy for more information.

XML import API

A new method for XML imports is available to ignore extra columns that are not defined in the model.

See ImportSpec.setUnmatchedXMLElementIgnored in the Java API for more information.

Version upgrade

In addition to the information provided in this release note, the following chapter provides an exhaustive list of the new Java APIs published since the release of the 5.8.0 version.

Supported environments

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

Firefox ESR 52

Firefox ESR 45 is no longer supported since June 13, 2017. The currently supported version is Firefox ESR 52. As a consequence, and from this version of EBX®, the officially supported version of Firefox ESR is 52. See Mozilla Firefox ESR for more information.

Backward compatibility - Generics

The EBX® API is updated by replacing all Java "raw" types by their generic counterparts. This concerns the old APIs which were designed for Java 1.4.

In some relatively rare cases, this can cause incompatibilities for existing client code. All these incompatibilities are detected at compile-time and are easy to fix. The main issues are summarized below.

Incorrect use of generics

This backward compatibility issue can occur with all EBX® methods previously returning a collection raw type. For example, the following code, although incorrect, still compiles with EBX® 5.8.0:

AdaptationHome home = ...;
List<Object> list = home.findAllChildren(dataSet);
...

This code is incorrect because the list should be of type List<Adaptation> or List<?>. This code will not compile with the current release; it will need to be changed to:

List<Adaptation> list = home.findAllChildren(dataSet);

Java 6 and 7 type inference limitations

This backward compatibility issue only occurs if the client code is compiled in Java 6 and 7, it does not occur with Java 8 and above. Type inference is used for methods returning a collection whose type is not specified. For example, this code will compile with both EBX® 5.8.0 and EBX® 5.8.1:

Adaptation record = ...;
Path path = ...;
List<String> list = record.getList(path);

Contrary to EBX® 5.8.0, no warnings are displayed with EBX® 5.8.1 because getList() is declared to enable type inference.

Type inference with Java 6 and 7 has some limitations. For example, the following code that compiles with 5.8.0, will compile with 5.8.1 only if Java 8 is used:

public void doSomething(List<String> aList) {
... 
} 
Adaptation record = ...;
Path path = ...; 
doSomething(record.getList(path));

If this code is compiled in Java 6 or 7, it will need to be changed to:

doSomething(record.<String>getList(path));

Backward compatibility - Other

Permalinks may be broken.

The escaping policy for generated URLs has evolved. Consequently, some permalinks generated by a previous version of EBX® may not work anymore. If this is the case, those permalinks will have to be generated again.

Workflow publication restrictions

The publication policy is now restricted: the publication of workflow models containing validation errors is prohibited.

Import of global permissions

Since the global permissions on data workflows have been updated (see the evolution on global permissions), a migration of the existing global permissions is performed upon first launch. As a consequence, all global permissions exported in previous versions of EBX® will become obsolete. Trying to import one of these will result in an error.

Data services authentication

Due to the [27139] bug, the lookup mechanism has been modified.

See also

Data services SOAP fault code

Due to the bug [28459], the faultcode XML element value has been modified. This value is now prefixed with the Fault XML element prefix.

Data services REST inheritIfInOccultingMode option

The inheritIfInOccultingMode option's default value has been changed from false to true. This modification simplifies the use of the delete operation when attempting to change the record's inheritance from occult to inherit.

See also

Data models with decimal fields

Due to the [25746] bug, fields that have the totalDigits and fractionDigits facets defined are mapped differently to the database, requiring greater precision for their respective columns.

In the case that the new NUMBER precision exceeds the limits of the underlying database, the data model will be in an error state. To fix this problem, the totalDigits and fractionDigits facets should be adjusted accordingly (by reducing one, or both of them).

ReadContext API

The method ReadContext.get is now stricter. An exception is now thrown when the underlying data model has errors.

How to upgrade an installed environment

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

  1. Backup your repository, including the RDBMS and the directory ebx.repository.directory.

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

Attention

If using the EBX® add-ons, make sure that the version of the add-ons is compatible with EBX® version 5.8.1 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 validation

Data views

Data workflows

Documentation

Import / Export

User interface

Users & Permissions