TIBCO EBX®
TIBCO EBX® Documentation

6.0.6

6.0 service packs

6.0.6

6.0.6 has been released on April 29, 2022. Overview of this service pack:

Filters preserved on view change

When the end user changes the view applied on a table, the local filter is now preserved (in previous versions the local filter was reset).

Accessibility

An accessibility mode has been added, see the dedicated section for more information.

User Service to create a record

In order to improve User Service integration, a new interface has been introduced: UserServiceForCreate. It is now recommended that implementations of UserServiceRecordFormFactory.newUserServiceForCreate return an instance of UserServiceForCreate rather than UserService.

Last modification date of a table

The new method AdaptationTable.getLastModificationDate returns the date when any record creation, modification and deletion last happened for this table.

Data services pagination

In case no page size or 0 are specified in a Data Service select operation, the pagination policy has been adapted regarding the new behavior that was introduced in 6.0.0. This simplifies the previously mentioned backward compatibility issues for SOAP and REST clients, by specifying default and maximum page sizes. See Data services pagination for more information.

Asynchronous indexing

Depending on the system load and the computing power available, indexing can now be performed concurrently. The log lets you know when this feature is enabled.

For more information, see CPU.

Backward compatibility – Log configuration

  • Properties ebx.log4j.appender.xxxxx only support com.onwbp.org.apache.log4j.ConsoleAppender and com.onwbp.org.apache.log4j.net.SMTPAppender. Other types of appenders are not supported (they were not documented in previous versions).

  • Renderers are not supported.

  • Properties ebx.log4j.appender.xxxxx.layout support only com.onwbp.org.apache.log4j.PatternLayout

  • Property ebx.log4j.disableOverride is no longer supported.

Toolbar configuration and workflow launcher

In the Data Model Assistant, if you edit a toolbar configured in a previous release, you may have to remove the service 'Workflow Launcher' from the 'Excluded services' list, before submit ('Workflow Launcher' is always excluded from the toolbar, so it is no longer offered as an option).

H2 Database Engine upgraded

The H2 Database Engine included in this release has been upgraded to version 2.0. This new version does not support an automatic upgrade of existing repositories from an older H2 version. These must be manually updated through the dedicated procedure. The alternative is to use the former versions of H2 in your deployments.

Closed issues

See 6.0.6 Closed issues section.

6.0.5

6.0.5 has been released on February 18, 2022. Overview of this service pack:

Performance and stability

Performance has been improved to handle the case when many small transactions occur (the problem was a noticeable latency correlated with the latency of the disk storing Lucene indexes, and independent of the size of the tables updated by the transactions; for instance, this issue could be observed when starting a workflow).

Memory management and stability related to the indexes have been improved.

Memory allocation

The memory allocation requirements, for both the application server and the operating system, have been clarified. For more information, see Memory management.

Coding recommendations for transactions

For a better performance of transactions (Java implementations of Procedure and also of TableTrigger), any unnecessary index refresh should be avoided. For more information, see Unnecessary index refresh.

Java 17

The Java Runtime Environment 17 LTS is now supported. For more information, see Supported application servers.

Java 8

JRE 8 will come out of support in an upcoming release. We advise to upgrade the runtime to a recent LTS version, to take advantage of the performance improvements it offers.

Backward compatibility – Permission checks in hierarchy

As a consequence of fixing CP-22261, hierarchy views relying on hidden fields will now fail with aQueryPermissionException, as expected. See Improved permission checks when executing queries for more information.

Backward compatibility – Workflow properties

The values of the workflow properties in the EBX® configuration file are now constrained as follows:

  • ebx.manager.workflow.legacy.userTaskMode must be true or false (case-insensitive).

  • ebx.manager.workflow.hierarchyPlanView.hidden must be true or false (case-insensitive).

  • ebx.workflow.activation must be true or false (case-insensitive).

Any other value throws a fatal exception at server launch.

Closed issues

See 6.0.5 Closed issues section.

6.0.4

6.0.4 has been released on December 22, 2021. Overview of this service pack:

Closed issues

See 6.0.4 Closed issues section.

6.0.3

6.0.3 has been released on November 9, 2021. Overview of this service pack:

EBX® Container Edition

This service pack includes a utility to build an image of TIBCO EBX® Container Edition. This image is Linux-based (amd64 architecture) and can optionally include addons.

For more information, see Building the image, Running the image and Customizing the image.

Supported databases

  • Oracle 18c is no longer supported.

  • PostgreSQL 9.6 is no longer supported; the minimum required version for PostgreSQL has been upgraded to 10.

See Supported databases for more information.

Improved the workflow diagram

The PDF export wizard has been enhanced. It is now possible to display the step identifiers of the PDF on demand, and to add a step index at the end of the generated file. See Actions for more information.

URLs configuration

Two new properties have been added to the ebx.properties file to force the use of the HTTPS protocol and its related properties for building URIs.

In the user interface, the 'URL Policy' configuration in the Administration area becomes deprecated.

See URLs computing and URL policy (deprecated) for more information.

Backward compatibility – Workflow activation property

As a consequence of fixing CP-22130, the value of the property ebx.workflow.activation (in EBX® configuration file) must be true or false (case-insensitive). Any other value throws a fatal exception at server launch.

Closed issues

See 6.0.3 Closed issues section.

6.0.2

6.0.2 has been released on September 15, 2021. Overview of this service pack:

Supported databases

A new database is supported: Google Cloud SQL for PostgreSQL, version 9.6 or higher .

Improvement of the workflow diagram

  • The boxes representing the steps have been optimized, allowing more text to be displayed. This avoids truncation in the step names.

    Note: for this evolution, the step boxes have been enlarged. This may somewhat degrade the display of existing or imported diagrams: the links may overlap on the step boxes. This can be easily corrected in the workflow modeling: just by selecting the step boxes and moving them a bit, so that the display fits well, then saving the layout. For larger diagrams, it is recommended to use the 'Default Layout' feature in the 'View' section (but in this case, the old disposition will be lost).

    Note that it will be necessary to publish the models, for the display to be updated in the Data Workflows section.

  • A new action is available in the View menu: 'Show/Hide steps identifiers'. This new action allows displaying the step identifiers, on demand, directly in the workflow diagram (hidden by default). The generation of the pdf will take into account the choice made prior to displaying/hiding these identifiers. See View for more information.

Backward compatibility – Check on default constraint on primary keys of type xs:string

As a consequence of fixing CP-21856, the check of the default constraint defined on primary keys of type xs:string is now stricter. The default constraint that forbids non-collapsed whitespace is now blocking for all operations. It is still possible to override this default constraint, by declaring a specific pattern that allows non-collapsed whitespace on primary keys of type string.

See Whitespace handling for primary keys of type string for more information.

Closed issues

See 6.0.2 Closed issues section.

6.0.1

6.0.1 has been released on June 25, 2021. Overview of this service pack:

Performance

Many features offer better performance. In particular:

  • View access (CP-21576)

  • Selection in a view

  • Filtering lists and fields in groups

  • Search on a table validation state whose validation report contains many items

  • Queries involving computed fields (the computation during queries is deferred until the value is needed; if a computed field is actually not needed for the execution of the query, its value is not computed)

  • Validating a table reference that has no defined table reference filter.

Disk latency

The documentation has been updated to indicate a low disk latency as a requirement for a better overall performance.

Breadcrumb in history view

In the breadcrumb trail, steps related to the history are now clearly identified.

Workflow editor

  • The button for step creation also appears on 'mouse over', making this feature more intuitive.

  • The DEL shortcut is now functional, and allows deleting a step.

Workflow API

Toolbar API

A new method in the 'Toolbar' API allows defining whether the current button should be highlighted by default. See ToolbarButton.setHighlighted for more information.

Pattern

The validation of patterns on string is now greedy, and no longer requires extra parentheses with the | operator. For example, the pattern [0-9A-Z]{8}|[0-9A-Z]{11} will validate strings of 8 upper characters, without requiring extra parentheses around the pattern.

D3 broadcast

The D3 broadcast Destination section has been added to the documentation.

Browser support

Microsoft Internet Explorer 10 is no longer supported.

Closed issues

See 6.0.1 Closed issues section.

Note: 6.0.0 has been released on March 17, 2021.

Overview of 6.0

New architecture

This release introduces a new architecture for the core engine, with numerous modifications affecting the way data is stored and queried. Our custom in-memory indexes have been replaced by persistent ones, based on Apache Lucene. The data representation and caches have been redesigned from scratch. The in-house query execution framework has been modernized with the introduction of Apache Calcite, which features a powerful query optimizer. This new architecture provides the following improvements:

The new architecture also improves transaction management: more concurrency and a better isolation of data. This release bears some limitations, described in the section Limitations for this release.

User interface

Attention

Before proceeding to the upgrade of an existing EBX® 5 environment, make sure that you have carefully read the Version upgrade section and the EBX® 5.9 to EBX® 6 Migration Guide chapter.

User experience

Quick Search

A new Quick Search component is available in the tabular and hierarchical views, at the center of the toolbar. Quick Search replaces the 'Text search' pane that was formerly available in the filters pane, offering a more user-friendly and more efficient search. Quick Search relies on a configurable search strategy, defined in the Search extension of the Data Model Assistant. Quick Search also offers Lucene query operators, such as wildcards, fuzzy search, or logical operators (NOT,...).

Note

The behavior of this component differs from that of the 'Text search' in previous versions: 'Text search' formerly retrieved results that merely contained the input criterion. The new component retrieves results where at least one of the input keywords is displayed as a whole term. You can modify this behavior on a field basis by electing a different search strategy.

/6.0.0-QuickSearch.png

See Quick Search for more information.

Advanced Search

A new 'Advanced Search' pane is available at the top of the workspace area, for tabular and hierarchical views. This pane is hidden by default. It can be expanded and collapsed with a new dedicated button, which is located to the right of the Quick Search. The Advanced Search pane replaces the 'Search' pane that was formerly available in the filters pane, offering a more user-friendly and efficient search.

/6.0.0.AdvancedSearch_Access.png

/6.0.0.AdvancedSearch_Open.png

Find in hierarchy

On the hierarchy view, the 'Find in hierarchy' feature has been moved from the filter pane on the right to the bottom bar of the workspace area. This bar is hidden by default. You can expand or collapse the view with a new dedicated button at the bottom left of the workspace area.

/6.0.0.FindInHierarchy.png

/6.0.0.FindInHierarchy_Open.png

Sort by relevancy

When a text search is applied on a tabular view, by default, this view is sorted by score, with the most relevant records displayed first. Sort by relevancy is available for the results of a quick search, potentially in combination with more predicates (from advanced search). You can disable this type of sort and restore the previous sort criteria before the search. Note that sort by relevancy is supported on inherited datasets, history or mapped tables.

/6.0.0.SortByRelevancy.png

/6.0.0.SortByRelevancy_MenuOpen.png

Text sort

When you sort on a string column with a Name or Text search strategy, the sort now better follows the usual language alphabetical order. For instance, the letter 'é' is after 'e' and before 'f'.

Request cancellation

When loading a page in a tabular view takes longer than expected, a 'Cancel' button is displayed.

/6.0.0.RequestWaiting.png

Clicking this button cancels the request and prompts you to define more selective filters or more simple sort criteria.

/6.0.0.RequestCancellation.png

Breadcrumb

The breadcrumb has been improved to better support many levels, and to facilitate the navigation in these levels.

/6.0.0-Breadcrumb.png

Maximum three elements in a breadcrumb

The number of displayed elements is reduced to three to provide faster access to the breadcrumb items.

Menu button

All non-displayed items are available in a drop-down menu.

Close button

A new 'Close' button closes the last item of the breadcrumb (the current page).

Relationship labels

When the record is opened from a foreign key or an association table, the table label is replaced by the relationship label.

Display of optional information

The display of a table or relationship label preceding the record label is now optional, and can be configured directly on the node in the Data Model Assistant.

New toolbar for view menu

The 'Edit', 'Duplicate', 'Delete', 'Define as favorite' actions are now accessible on the first level of the view menu. The toolbar containing these actions is displayed on mouseover of any view menu item.

/6.0.0.ViewMenuToolbar.png

Built-in service 'Edit link record'

The built-in user service "Edit link record" was available only from the record form. You can now open the link record directly from the hierarchy view. In the hierarchy tree, this service is now available directly on the concerned hierarchy node.

/6.0.0.EditLinkRecord.png

Dataspace management new features

Dataspace tree results are now paginated to handle larger volumes, and a search bar has been added to help you quickly filter dataspaces. The search query is performed on the key and the localized label, and as you finish typing, the search results are refined seamlessly.

/6.0.0.DataSpaceTree.png

In the administration pane, the default view of the dataspaces table has been changed to a hierarchical view, which better matches the logical representation of dataspaces.

Message box

The message box is restored to the state of versions prior to 5.9. It displays only messages related to the current page. Every time a new page is displayed or closed, the content of the message box is automatically updated. Hence, old and new messages do not build up in the message box, and the same message is displayed only once.

/6.0.0.MessageBox.png

User interface customization

Custom layout editor

From the Web user interface, you can now create customized forms with a graphical editor. No Java programming is required. This feature is available as an extension in the Data Model Assistant.

/6.0.0.CustomLayoutEditor.png

See Custom forms for more information.

Workflow Launcher

To launch any workflow with any data contexts, you can use the new user service. Workflows are henceforth available directly on the toolbar of tables, records, or hierarchies.

To display a workflow on the toolbar, first create and configure a workflow launcher from the "Workflow launchers" section. This section is available in the "Administration/workflow management" area.

This new feature offers several advantages, including improving the user experience by saving the user from shifting attention between the data view and the workflow view. It also supports launching the same workflow from any data context.

/6.0.0.WorkflowLauncher.png

See UI – Workflow launcher for more information.

Sort on hierarchical views

You can now sort every level of a hierarchy view. In the configuration of the hierarchy view, the previous 'Ordering field' option has been replaced by the new 'Sort strategy' setting. This setting allows choosing between the strategies 'Default', 'Sort by columns', or 'Sort by ordering field'.

/6.0.0.SortOnHierarchyViews.png

See Viewing data for more information.

Ergonomics and layout new parameters

In "Administration > [any perspective] > Ergonomics and layout", three new parameters have been added.

/6.0.0.ErgonomicsAndLayout.png

See Ergonomics and layout for more information.

Maximum length of text areas

The maximum number of characters allowed for text area fields in forms. You can disable this parameter by entering a negative number.

HTML editors spellchecking

Spellchecking is provided by the browser spellchecker. After spellchecking is activated, the browser user interface dictionary is used by default. This setting is customizable if many dictionaries are installed. If HTML input is read-only, spellcheck is disabled.

Default display density

You can set the default density for all users. The default display density is 'Compact'.

Association tables

The Data Model Assistant now contains options to hide toolbars of association tables. On association nodes, the options are located within the setting group "Rendering in forms". This new feature is also available programmatically from the Java class UITable.

/6.0.0.AssociationTables.png

Form node label

To simulate whether a form node is mandatory, you can now add or remove a 'mandatory' indicator (*) next to the label of the form node. Use the JavaScriptCatalog.ebx_form_setMandatoryIndicator in JavaScript or UIFormWriter.addJS_setNodeMandatoryIndicator in Java.

/6.0.0.FormNodeLabel.png

Built-in service 'Profile settings'

To modify your profile, you can use the built-in service 'Profile settings'. This built-in service is available with the default directory. It is deactivated when EBX® is configured to use a custom directory. If a custom directory extends the default one, the user service can be reactivated by setting ebx.myProfile.enabled to true in the EBX® main configuration file. The built-in service 'Profile settings' key is ServiceKey.MY_PROFILE.

/6.0.0.ProfileSettings_Access.png

/6.0.0.ProfileSettings.png

New Java API related to perspectives

The new package Perspective provides classes for retrieving all relevant information about the preferences and menu for the perspectives.

To get the current perspective from a context, use the new method getCurrentPerspective. This method has been added to the following classes :

New method in ToolbarButton API

The new method ToolbarButton.setHighlighted has been added to the ToolbarButton API. It allows defining whether the current button should be highlighted by default.

New scripted features in Data Modeling

Scripted computed fields (limited to the current record)

To specify fields that are computed at runtime, you can use the new scripting language. In this release, the computation can depend only on the data of the current record.

Compared to a "value function" written in Java, the advantages include the following:

A rule editor, with syntax highlighting and contextual completion, is available in the Data Model Assistant.

See Function field for more information.

/6.0.0.ScriptedComputedValues.png

Scripted permission rules

To specify record-level access rules on a given table, use the new scripting language. Any permission rule must return the access ("read-write", "read-only", or "hidden") for the current context: the current record, the current user session (including user roles), and so on.

Compared to "access rules" written in Java, an advantage is that scripting significantly improves performance, especially for large volumes of data, by leveraging the new EBX® SQL engine.

A rule editor, with syntax highlighting and contextual completion, is available as an extension in the Data Model Assistant.

See Record permission for more information.

/6.0.0.ScriptedPermissionRules.png

Data modeling

Indexing and search strategy

When you edit a field in the Data Model Assistant, you can now define its indexing. This new option is available under the tab 'Extensions', 'Search' section. In particular for string fields, this new option supports defining how the Quick Search is performed.

/6.0.0.SearchStrategy.png

Also, to implement advanced and efficient search strategies, use a new service to define custom indexing. This new service is available in the left navigation pane, under 'Extensions > Search'.

See Search for more information.

Linked fields

You can now define a new kind of field that refers to another field in the target table of a relationship. Use this new feature to simulate a multi-table view by aggregating the fields of a main table with some fields of another table.

See Linked fields for more information.

/6.0.0.LinkedFields.png

Uniqueness constraints on aggregated lists

You can now specify that a value must be unique in the scope of a simple list (fields that define maxOccurs > 1)).

See Uniqueness constraint for more information.

/6.0.0.UniquenessConstraints_Access.png

/6.0.0.UniquenessConstraints.png

Associations by foreign key

You can now define associations 'by foreign key', based on an existing foreign key field that is multi-valued (defines maxOccurs > 1).

/6.0.0.AssociationsByForeignKey.png

Data model introspection Java API

Facet on mandatory field

A new interface to retrieve the cardinality constraint specifying that a field is mandatory (minOccurs="1" and maxOccurs="1").

See SchemaFacetOnMandatoryField for more information.

Retrieving the node associated to a facet

A new method to retrieve the node that is associated with a facet.

See SchemaFacet.getSchemaNode for more information.

Facet validation message

A new interface to retrieve the validation message defined by a facet.

See SchemaFacet.getFacetValidationMessage and SchemaFacetValidationMessage for more information.

XPath filter on foreign key

A new method to retrieve the XPath filter defined on a foreign key constraint.

See SchemaFacetTableRef.getXPathFilter for more information.

Default view properties

A new method to determine if a node is hidden in all views of a table.

See SchemaNodeDefaultView.isHiddenInAllViews for more information.

Workflow

Workflow editor

The workflow modeling has been enhanced with a full graphical editor.

This editor is based on the graphical view already available in the previous version. This diagram has been enriched to support all of the creation, modification, and deletion operations. This editor provides more readability--in particular, in the case of redirects to existing steps.

/6.0.0.Workflow_TaskTools.png

All task actions are available from the diagram.

The [+] button, which inserts a task, is displayed on each selected link.

/6.0.0.Workflow_InsertTask.png

In addition to being more readable, the new editor offers additional features:

/6.0.0.Workflow_PDFExport.png

By default, the old hierarchical view is no longer offered. You can reactivate it in read-only mode by using a dedicated property. See Backward compatibility for more information.

For more information about the workflow editor, see Editing the workflow diagram.

Sub-workflow progress strategy

The progress strategy is useful for performing several tasks consecutively, without returning to the inbox. This feature is now available for the sub-workflows.

A new concept has been added to implement this feature for sub-workflows: if there are several sub-workflows, you must define which one is the "foreground sub-workflow". Only in this foreground sub-workflow can you exploit the progress strategy.

The user interface now includes a field for static sub-workflow to define the foreground sub-workflow.

The method SubWorkflowsCreationContext.setForegroundSubWorkflow has been added to set which sub-workflow should be considered in the foreground, for dynamic sub-workflow. And the method ProcessLauncher.isForegroundSubworkflow has been added to know if a launcher is associated to a sub-workflow in the foreground.

For more information, see Sub-workflow invocations.

Workflow diagram available in the Data Workflows section

In addition to the progress view, the workflow model diagram is now available in the Data Workflows section (inbox, Monitoring-Work items, Monitoring-Active workflows, and Completed workflows).

The progress view provides a view of the workflow execution history, whereas the diagram offers a more functional view of what the workflow does as a whole.

Ability to deactivate the validation report copy for the create snapshot script task.

You can now deactivate the validation report copy while creating a snapshot via built-in script task. An additional property is available in the script task definition.

Publication service updated according to the new Workflow launcher feature

The publication service has been updated. At the last step, when the selected workflow models have been published, a new tab is available to list the potentially affected workflow launchers.

Workflow new Java API

Workflow input parameter

A new feature to test whether a variable name is defined as an input parameter of the data context.

See ProcessLauncher.isDefinedAsInputParameter.

Hidden step in progress view

A new method determines if a step is defined as hidden in the progress view.

See ProcessInstanceStep.isHiddenInProgressView.

Permissions

Scripted permission rules

See Scripted permission rules section above.

Permissions cache extension

To improve performance, permissions caching has been enhanced, and now also handles the following permission resolutions:

Data validation

Persistent validation reports

Validation reports are now persisted in the EBX® repository. That is, validation reports are no longer kept in memory, but are stored in technical datasets of dedicated dataspaces. Storing validation reports in an EBX® repository addresses memory-related issues when datasets have a large amount of validation messages. Also, validation reports are no longer lost when the application server restarts.

Declaring modifications on programmatic constraints

You can now indicate that the implementation of a programmatic constraint has been changed, by associating a version number to the implementation of a JavaBean. This version number is used to indicate that existing persisted validation reports must be updated by revalidating the constraints that have been modified. As a consequence, you must define a version number of each of the constraints defined in a data model to keep existing persisted validation reports consistent when the implementation of these constraints is modified.

See JavaBeanVersion for more information.

Validation message threshold

You can now specify a validation message threshold at the data model level. This new feature replaces the property ebx.validation.constraints.messages.threshold that is defined in the EBX® main configuration file (ebx.properties).

See Validation message threshold for more information.

Validating new records and updated values

You can now validate a record that has not yet been created, and you can validate the updates performed on a record or on dataset nodes that have not yet been committed.

See ValueContextForUpdate.getValidationReport for more information.

Retrieving the constraint related to a validation message

To retrieve the facet associated with a validation item, use the new method ValidationReportItem.getFacet. That is, this new method supports retrieving the facet that has added a validation message.

See ValidationReportItem.getFacet for more information.

Retrieving the blocking policy related to a validation message

To retrieve the blocking policy associated with a validation item, use the new method ValidationReportItem.getBlocksCommit.

See ValidationReportItem.getBlocksCommit for more information.

Closing a ValidationReportItemIterator

To release underlying resources, use the new method ValidationReportItemIterator.close.

See ValidationReportItemIterator.close for more information.

Changes regarding the refresh policy

Requesting a validation report with the refresh policy ValidationSpec.RefreshPolicy.AS_IS returns only the persisted validation report. The validation report is empty if the dataset, the table, or the record has not already been validated.

See ValidationSpec.RefreshPolicy for more information.

Limit validation messages in logs

To specify the maximum number of validation items to display in the logs, use the new property ebx.validation.report.maxItemDisplayedInLogs, from the EBX® main configuration file (ebx.properties). By default this property is set to 100. See Backward compatibility for more information.

Associations with explicitly defined dataspaces

When using an association defined with a foreign key or link table that is in an explicitly defined dataspace, the dataset will now be in severe error if the current dataspace does not match the association reference dataspace. See Association.

Data services

REST Toolkit APIs

Procedure

A new interface and built-in query parameter have been added to ease Procedure execution through automatic pre-configuration.

See ProcedureUtility and BuiltinQueryParam.COMMIT_THRESHOLD for more information.

URI builders for built-in

URI builders have been reworked to do the following:

See URIBuilderForBuiltin and URI builders for more information.

Serialization

Built-in serializers and deserializers are available to handle table records.

Built-in deserializers

To automatically deserialize a table record, use a DTO's attribute of ContentHolder type and annotated with Table.

Built-in serializers

To automatically serialize a table record, use a DTO's attribute of ContentHolder type and optionally annotated with ExtendedOutput.

A table record serialized through this mechanism gets the same JSON content structure as the ones from the Built-in RESTful services. However, a new compact format has been added to ease interaction for simple use cases.

The absence of the ExtendedOutput annotation on the ContentHolder attribute implies the use of the compact format of the JSON content structure. For the opposite way, the presence of the ExtendedOutput annotation implies the use of the extended format of the JSON content structure.

The ExtendedOutput annotation and Include enumeration determine the content of the generated JSON structure of the table record.

See Serialization of a table record for more information.

Built-in RESTful services

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

Data views operation

A new operation from the 'data' category is available to look up the published views of a table.

See Look up table views operation for more information.

Data operations

Two new prepare operations with selector values are available to create and initialize a transient record for creation or duplication.

Several new properties have been added to fields' metadata, namely: autoIncrement, association, checkNullInput, constraints, linkedField, readOnly, and enumerationDependencies.

On select operations, the sort features have been improved, allowing the results to be ordered: by relevancy with the new sortByRelevancy parameter, by overriding the default priority of sort groups with the new sortPriority parameter.

See Prepare operations, includeMeta, and Linked fields parameter for more information.

Form data operations

A new 'form-data' category is available. It is intended to be used to insert or update data on user form. This category validates the incoming data before performing the requested action and returns a report.

See Form data operations for more information.

Compact format serialization

New categories with a 'compact' suffix are available for data and form data operations. They are very similar to the root ones but they are intended to be used to compact the JSON body content structure to ease interaction for simple use cases. All formats are based on the new REST Toolkit's Built-in serializers.

See Operation category and REST Toolkit serialization for more information.

OpenAPI operations

A new 'open-api' category is available. It is intended to generate OpenAPI documents for table and schema nodes of the REST built-in 'data' category operations.

See OpenAPI operations for more information.

Beta feature: Dataspace or snapshot operations

Several new operations from the 'data' category are available, as beta feature, to manage dataspace or snapshots.

See Beta feature: Dataspace operations for more information.

Token operation

The built-in REST token authentication create operation has been improved: It can now be performed against the HTTP request. See Token authentication operations for more information.

Common parameters

A new 'ebx-channel' query parameter is introduced to apply visibility configuration, defined in the data model, according to a table, a field, or a search. The content also corresponds to the current view (tree view, tabular, custom, form, and so on).

A new 'ebx-indent' query parameter is introduced to indent the response body and be more readable for a human. The 'indent' query parameter has been deprecated.

See Session channel, ebx-channel and ebx-indent for more information.

Application server deployment

Data compression library

The LZ4 compression algorithm is now used internally by the EBX® engine. You must deploy the dedicated library. Also, the way you deploy this dedicated library has a global impact on performance. See Data compression library for more information.

Speed of server startup

To speed up the startup of the web applications server, configure the JAR files scanner.

XML Catalog API

The upgrade of the Xalan and Xerces packaged libraries introduces new dependencies toward classes provided by the Java runtime environment 9. You can add these classes without resorting to the Java runtime environment 11 LTS by installing the new bundled jar archive called xml-apis-1.4.01.jar. If a Java runtime environment 11 LTS, or above, or a WebLogic 14c application server is used to run the application, then no additional installation steps are required. See XML Catalog API and Installation notes for more information.

Core Java API

SQL queries

New APIs have been added that allow 'SELECT' queries to use arbitrary SQL, notably with joins over tables located in different dataspaces and datasets.

The main entry point is the Query interface. For more information on SQL queries, see the respective chapters in the Developer's guide.

Triggers on datasets

Triggers defined at the dataset level have been enhanced to perform operations:

See InstanceTrigger for more information.

Limitations for this release

Query limitations

The performance of these features is not yet optimized:

The following cases do not rely on Lucene indices. This has two consequences: first, performance is not optimized; second, Quick search behaves like a 'contains', rather than a full-text search:

More specific cases not benefiting from index optimization are described in the following section.

Value-labeling limitations

Search and sort using the value-labeling feature have a few limitations described in section Value-labeling.

Hierarchical views limitations

Data validation limitations

Linked fields limitations

Version upgrade

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

Hardware requirements

Although EBX® 6 supports addressing vastly larger volumes of data, it does so without requiring additional memory. However, additional disk space is needed to store the Lucene indexes.

Memory requirements

The overall amount of memory can remain the same as for the previous version, but it should be dispatched more evenly between the application server and the operating system. See the performance section.

Disk space requirements

This new version offloads the indexes from memory to store them in a persistent way. Additional disk space is needed. See the performance section.

Disk latency requirements

In order to maintain good overall performance, it is particularly important for the disk storing the Lucene indexes to have low latency.

Migrating an existing EBX® 5 environment

To get a running EBX® 6 from an existing EBX® 5 environment, follow the dedicated migration guide.

Changes to supported environments

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

Browser support

The Microsoft Edge versions based on Chromium are now supported.

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

For Microsoft Edge, the support of 42 has shifted to 44.

Oracle Database support

Minimum supported version of Oracle is now 12c (but excluding 18c).

PostgreSQL support

Minimum supported version of PostgreSQL is now 10.

Microsoft SQL Server support

Minimum supported version of SQL Server is now 2012 SP4.

Java web application server support

The Java web application server must support the JSON Processing 1.1 (JSR 374) or allow the use of that embedded in the ebx.jar library.

WebSphere Application Server support

WebSphere Application Servers which use a Java SDK below version 8.0.4.10 are incompatible and consequently not supported. It is highly recommended to use the latest Java SDK available and compatible with the application server. See Supported application servers for more information.

New transaction management

The improved implementation of transactions improves concurrency and data isolation.

Concurrency

A running Procedure no longer excludes multiple concurrent ReadOnlyProcedures. For more information see Concurrency.

Snapshot isolation

While the isolation level was READ_UNCOMMITTED by default, accessed data are now "frozen" on a committed transaction. For more information, see Queries snapshot isolation.

Adaptations are now immutable

Instances of the Java interface Adaptation are now immutable and reflect the persisted state of the record when it was retrieved. They are never affected by subsequent updates on the record (and in case of dataset inheritance, they are never affected by an update on their parent, recursively). For more information see Adaptation objects.

As a consequence, the method ProcedureContext.doModifyContent never modifies the Adaptation object passed as an argument. If access to the modified record or dataset is needed, then you must use the Adaptation object returned by the method.

Note: In previous versions, the documentation of this method already stated this rule. However, neglecting to do so only had consequences in rare cases. In this version, the immutability is always preserved.

Changes to custom Java code performance

The new scalable architecture affects the performance of existing custom Java code. Some scenarios, which, in EBX® 5, were favorable, might not work as well on this version, and might require customer action. This is particularly true for middle-sized repositories where all the data could be cached into memory and the garbage collector could work smoothly.

Repeated lookup by primary key

Consider a small table whose data could be fully contained in the cache within our custom EBX® in-memory indexes: it was then cheap to access its records repeatedly by means of random table lookups (although this is generally a discouraged access pattern for databases and information retrieval). In this new version, these accesses must be rewritten, taking advantage of the new SQL features. For example, for Java code performing a 'nested loops' join (iterating on a RequestResult from table A, and then looking up its osd:tableRef in table B): this is now better handled by using a Query using a SQL join.

Repeatedly creating similar requests

EBX® now embeds the Apache Calcite framework, in particular for optimizing the submitted instances of Query and Request. However, optimizing a query has a cost in itself. Although this overhead is generally low (and well paid back) compared to that of executing the query, it might add up in some cases, particularly in the case where a loop generated numerous queries differing by only one parameter. In that case, use parameterized requests (see Request.setXPathParameter) or parameterized queries (see Query.setParameter).

Programmatic access rules

Programmatic access rules concern the implementations of the Java interface AccessRule. On query execution, setting such a rule on a table implies executing the method getPermission for each record. Such an execution defeats the purpose of optimizing against an index.

Where possible, replace these programmatic access rules with the new scripted record permission rules.

Programmatic labels

Programmatic labels concern the implementations of the Java interfaces TableRefDisplay, UILabelRenderer and ConstraintEnumeration. On query execution, setting such a rule on a foreign key field implies executing the method displayOccurrence for each record. Such an execution defeats the purpose of optimizing against an index. Where possible, use a pattern string.

Programmatic filters

Programmatic filters concern the implementations of the Java interface AdaptationFilter. On query execution, using this filter implies executing the method accept for each record. Such an execution defeats the purpose of optimizing against an index. Where possible, replace programmatic filters with the new SQL queries.

Constraints with unknown dependencies

Avoid constraints with unknown dependencies on large datasets, because they are checked on each validation request. See Data validation for more information.

Removed features

Some features are no longer necessary in the new architecture.

Dataspace loading strategy

Formerly, you could define a custom loading strategy for a dataspace, namely: a 'forced loading' strategy for loading the tables and indexes as early as possible in the background at startup; and a 'forced loading and prevalidation' strategy for also pre-computing the validation reports. This new version suppresses the need to load the entire table and compute its indexes when accessing it for the first time. It also offers persistent validation reports. Consequently, all dataspaces are loaded on-demand.

Indexing

Formerly, you could define indexes on tables, aiming at speeding up requests. This new version makes obsolete the in-memory indexes previously used, as well as the need to define a custom indexing. All fields are indexed persistently.

License keys

EBX® 6.0 and its addons no longer require license keys. You can remove the ebx.license key from the ebx.properties main configuration file.

Backward compatibilities

Relational mode is no longer supported

The new architecture for persistence and the new query engine has made relational mode redundant and cumbersome to support. It is no longer supported. The primary justifications of relational mode were:

On upgrade to version 6, the data existing in relational tables is automatically transferred into newly-created semantic tables, and then the relational tables are deleted from the database.

This conversion also means:

XPath and Java Request API

Due to the overhaul of the indexing and querying engine, some XPath functions are no longer supported, and sorting is impacted.

Numeric fields

Invoking the XPath functions contains, starts-with, ends-with, and matches on a numeric field is no longer supported. For example, contains(nCol, 123) now generates an error.

matches

Previously, functions of the type matches ignored a parsing error silently when malformed, and never matched a record; the error is now generated explicitly.

Sorting on text

It is not possible to sort according to a text field. This concerns osd:text fields by default, and fields having an explicit 'text' search strategy. You can use the 'name' strategy in cases where sorting is required.

When sort is done on a field of type xs:string, it now better follows the usual language alphabetical order. For example, the letter 'é' is after 'e' and before 'f'.

The Java interface RequestResult has two changes.

Method getAdaptation(int)

The method RequestResult#getAdaptation(int anIndex), which had long been deprecated, is removed from the public API.

Closing request results

In previous versions, the documentation of RequestResult stated that it was mandatory to invoke its close method after invoking RequestResult.nextAdaptation(). However, neglecting to do so had no consequence for tables in semantic mode. In this version, the request result opens system resources that must be released after the request completes. Consequently, it is now crucial to abide by the recommended protocol (see below).

Also note that the method has been slightly modified, and creating the request result (RequestResult.execute) now also opens some resources. RequestResult has been modified to implement the AutoCloseable interface. This change supports tracking incorrect uses in your development environment. The coding pattern should now be: try (RequestResult result = request.execute();) {...} .

Restricted functionality on osd:text

In EBX® 5, osd:text differed from xs:string only by offering a default editor with several lines for input and display. In EBX® 6, the type osd:text is automatically assigned the 'Text' search strategy, and this assignment cannot be modified. As a consequence, this type:

Therefore, osd:text should now only be used for very long texts. We advise to change the type of osd:text fields to xs:string if these fields are not intended to hold long strings. It is still possible to use an editor allowing several lines for input and display, by customizing the default built-in text box widget as follows:

<xs:element name="field" type="xs:string" minOccurs="0" maxOccurs="1">
   <xs:annotation>
      <xs:appinfo>
         <osd:defaultView>
          <widget>
            <textBox>
                <multiLine>true</multiLine>
            </textBox>
          </widget>
        </osd:defaultView>
      </xs:appinfo>
  </xs:annotation>
</xs:element>

Other backward compatibilities

XML audit trail becomes deprecated

The XML audit trail functionality becomes deprecated, and will be suppressed in an upcoming version; it is now disabled by default. The verbose XML format is a hindrance when used with the large volumes which this version addresses: it requires large disk space, and negatively impacts the performance of bulk updates.

HTTP Security Headers

Using a web server in front of EBX® is recommended to handle HTTP security headers. Therefore, by default, EBX® no longer positions any HTTP security header: the property ebx.security.headers.activated is now false by default. If it were unset in 5.9, and if HTTP security headers are not handled by a Web Server, then to keep the former behavior of 5.9, it must be set to true.

Incremental validation behavior

Incremental validation is no longer performed while executing a procedure and when performing updates in the user interface. That is, it is now required to explicitly revalidate a dataset or a table to validate the updates that have been performed since the last validation. For this reason, the method ProcedureContext.disableDatasetValidation is now deprecated.

Because validation reports are now persisted in the EBX® repository, the property ebx.validation.report.keepInMemory defined in the EBX® main configuration file is deprecated and is no longer used.

Validation report API

It is now required to close the ValidationReportItemIterator used to iterate over a validation report, in order to release the underlying resources. As a consequence, the method ValidationReportItemIterator.close has been added to the API.

Validation message threshold

The property ebx.validation.constraints.messages.threshold, which is defined in the EBX® main configuration file (ebx.properties), is deprecated and is now ignored. The validation message threshold can now be specified at the data model level, and it is set by default to 1000.

The validation message threshold limits the number of validation messages allowed per constraint. Therefore, the method ValidationReport.hasTooManyItemsOfSeverity is deprecated and always returns false.

Data validation

As a consequence of the bug fix CP-19407, the number of validation items displayed in the logs is now limited by default to 100.

For more information, see Validation report logs.

Association using explicitly defined dataspace

As a consequence of fixing bug CP-17968, the dataset using an association defined over a foreign key or a link table in an explictly defined dataspace will now be in severe error if the dataset's dataspace does not match with the association reference dataspace.

For more information, see Association.

Improved permission checks when executing queries

When a Session is specified, all fields used in the query are checked, and a QueryPermissionException is thrown when a user has no access to one or several fields. Currently, this behavior does not take into account record-dependent access rules set on fields. See Limitations of the permission checks in Query API for more details.

As a consequence, using the permissions only to hide in the UI non-sensitive information is highly discouraged, especially if this information is likely to be used for filtering, joining, or sorting in a request. See Using permission for hiding information in the UI for more details.

Legacy user service API is now deprecated

The legacy user service API (ServiceContext) is now deprecated. Please use UserService API.

JavaScript API

The method ebx_getContainerWindow threw an error when EBX® was embedded in a frame on a different domain. Now, it returns the root EBX® frame.

Java interface UserServiceRootTabbedPane

The Java interface UserServiceRootTabbedPane has been replaced by UserServiceTabbedPane: a bug prevented setting two tabbed panes above a user service.

UserServiceDisplayConfigurator now returns a UserServiceTabbedPane.

Workflow - Permissions evaluation for workflow launching has been improved

Formerly, permissions for launching a workflow were evaluated when the workflow was launched by the user interface, in Data workflows section, and by data services. Permissions were not evaluated when launching by web component and API. Now, permissions are checked for the following cases:

  • When launched through the UI (including web components).

  • When launched through the SOAP data services.

Workflow - Hierarchical view of a workflow model

By default, the hierarchical view is now hidden. However, you can reactivate it in read-only mode by setting the property ebx.manager.workflow.hierarchyPlanView.hidden to false. See TIBCO EBX® main configuration file for more information.

If the hierarchical view is enabled, then it is available in the workflow diagram, from the View menu (Plan View > hierarchy).

Workflow - User task with multiple work items

By default, the service for creating a user task with multiple work items is now hidden. However, you can reactivate it by setting the property ebx.manager.workflow.legacy.userTaskMode to true. Consider using the recommended sub-workflow feature instead. See TIBCO EBX® main configuration file for more information.

The display mode 'link' is no longer supported for group nodes.

For compatibility reasons, groups that were configured as 'link' are now considered 'collapsed'.

Data services pagination

The select operations no longer accept an unlimited page size:

Those mentioned properties are added to the EBX® main configuration file ebx.properties.

For more information, see REST built-in select operation and SOAP select request on table.

Foreign key label and sortable search strategy

The custom display for presenting a foreign key must now be sortable: thus, the fields that are part of the custom display must have only sortable search strategies. This also means that previous models that define foreign key display using non sortable fields such as osd:text fields will be in error. Note that this applies to both defaultLabel and pattern elements.

REST built-in select operation with body

To invoke a select operation from HTTP POST with a body, you must use :select URL extended action; otherwise, the insert operation is used.

See Select operation for more information.

REST built-in Exception handling

The key severity is replaced by the key level in the JSON exception response, and the value becomes human readable.

See Exception handling for more information.

REST Toolkit URI default JSON serialization

The previous URI default JSON serialization suffered from asymmetrical representation. URI are no longer serialized as JSON objects but as String values. This change restores a uniform behavior when URI are:

  • Used as Java method returned value.

  • Held in collections.

  • Stored in DTO objects.

REST Toolkit URI builders for built-in

The URI builders API for built-in have been reworked, leading to multiple methods deletion. The builders' API are more in line with the Java builder design pattern, providing enhanced modularity, genericity, and intuitive developments.

See URIBuilderForBuiltin and URI builders for more information.

Default directory

The "Job Title" field is no longer automatically formatted to the proper case.

TIBCO Software Inc. Support

The EBX® Support can now be reached from the https://support.tibco.com website (an account is mandatory in order to access, follow the 'Register' process). Visit the About Support section of this page for more details.

6.0.6 Closed issues

Core engine

Data modeling

Data services

Data validation

Data views - hierarchies

Data workflows

Dataspaces & History

Filter

Java EE integration

Queries

User interface

Users & Permissions

6.0.5 Closed issues

Core engine

Data modeling

Data services

Data validation

Data views - hierarchies

Dataspaces & History

Distributed Data Delivery (D3)

Documentation

Import / Export

Queries

REST Toolkit

User interface

6.0.4 Closed issues

Core engine

Data modeling

Data validation

User interface

Users & Permissions

6.0.3 Closed issues

Core engine

Data modeling

Data services

Data views

Data workflows

Distributed Data Delivery (D3)

Import / Export

Infrastructure

Java EE integration

Messages & i18n

Queries

User interface

Users & Permissions

6.0.2 Closed issues

Core engine

Data modeling

Data services

Data validation

Data views

Data views - hierarchies

Data workflows

Dataspaces & History

Documentation

Queries

Scripting

User interface

Users & Permissions

6.0.1 Closed issues

Core engine

Data modeling

Data services

Data validation

Data views

Data views - hierarchies

Data workflows

Dataspaces & History

Distributed Data Delivery (D3)

Infrastructure

Queries

REST Toolkit

User interface

Users & Permissions

6.0.0 Closed issues

Core engine

Data modeling

Data services

Data validation

Data views

Data views - hierarchies

Data workflows

Dataspaces & History

Distributed Data Delivery (D3)

Documentation

Import / Export

Java EE integration

Messages & i18n

Miscellaneous

REST Toolkit

User interface

Users & Permissions