Release date: October 16, 2017
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).
Before proceeding with the upgrade of an existing environment, ensure that you have carefully read the Version upgrade section.
The load time of the grid edit has been drastically reduced and is now similar to the standard tabular view load time.
The following illustration details the grid edit view and its available features.
Illustration key:
Records created. This pane can be resized.
This record has been modified and can be reverted using this button.
Duplicate button.
Delete button.
Deleted record. The user can still un-delete the record by turning off the delete button. The deletion is effective after a valid submit.
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).
Cell in error. The cell has a light red background, and the error message is displayed in an instant-tooltip.
Copied area. This area is stored in the EBX® clipboard, and can be pasted on the grid edit.
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 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 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 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:
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. |
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.
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.
The following illustration details some of the new features available on associations.
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 |
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. |
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.
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).
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.
It is now possible to automatically expand the hierarchy in a web component.
For more information, see using EBX® as a Web Component.
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.
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.
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 |
Toolbars | It is now possible to display a toolbar independently of a given record or table. See |
Record duplication | A new method is available to duplicate an existing record. See |
User redirection | It is now possible from an event callback or from a See |
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 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 |
A new button icon is available in the UIButtonIcon
API, underlined in the screenshot below.
See UIButtonIcon
for more information.
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.
It is now possible to add the 'Current user' column to a custom view for the 'Active workflows monitoring' and 'Completed workflows' sections.
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.
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.
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 |
Cleaning workflow history | Two methods have been added to clean the workflow history from a workflow key, and from a given date. See |
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 |
Replaying the current step of a workflow | A new method is available to replay the current step of a workflow. See |
New XPath functions are available to search for records according to their validation state:
osd:has-validation-item
filters records that have validation issues.
osd:contains-validation-message
filters records according to their validation message(s).
See Predicates for validation search for more information.
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 .
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 |
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. |
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 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. |
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.
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.
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.
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.
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
.
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.
Uniqueness constraints | It is now possible to retrieve the uniqueness constraints specified by the data model. See |
Facet control policy | It is now possible to retrieve the control policy of the facets defined in a data model. See |
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.
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.
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. |
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.
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);
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));
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 |
Data services REST | The See also |
Data models with decimal fields | Due to the [25746] bug, fields that have the 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 |
ReadContext API | The method |
In order to upgrade your version of EBX®, perform the following steps:
Backup your repository, including the RDBMS and the directory ebx.repository.directory
.
Replace the *.war
and ebx.jar
files on your application server.
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.
[23815] A renamed column in the database table only contains null
values.
After a column is renamed in a replicated table in the database, the column only contains null
values.
[24929] The purge execution is too slow because of a request to clean up the Java cache.
The purge execution takes too much time due to a SQL request aiming at cleaning the Java cache prior to purging the database blocks.
[25399] The method ValueFunction.getValue
is intensively called when updating a record in a relational table.
The method ValueFunction.getValue
is called when an update occurs on a relational table to check structural constraints. This method should not be called since computed values are not mapped in the database.
[25570] The method used to disable permission checks throws no exception when the specified node is not terminal.
When using the method ValueContextForUpdate.setPrivilegeForNode(Path aNodePath)
to disable all permission checks for the specified node which is not terminal, no exception is thrown in the log.
[25746] Possible deadlock at the application server startup.
A deadlock can occur at the server startup while registering the modules.
[26463] The lookUpFirstRecordMatchingPredicate
method returns null after a foreign key extraction using an XPath pre.
While using a predicate extracting the value of a primary key field of a foreign key, the AdaptationTable.lookUpFirstRecordMatchingPredicate
method always returns null.
[26480] Aggressive garbage collection during a transaction leads to blocks duplication in the database.
This issue occurs on a dataspace whose loading strategy is specified as 'On-demand loading and unloading'; if during a transaction updating this dataspace, the Java Virtual Machine is running out of memory, a Garbage Collection may clear some internal objects under modification. This typically occurs on a bulk import, leading to an inconsistent table.
Consequently, on access to this table, the error ArrayIndexOutOfBoundsException
can be raised, or the table can have duplicate blocks in the database. On reload, such a state is detected and logged as IllegalStateException
.
[26651] The displayed association content is incomplete after creating a record.
The displayed association content is incomplete after creating a record when a view is defined for the association and this view is first sorted by a boolean field in descending order.
[26745] Permissions are evaluated on every record of the associated table while accessing an association.
Permissions are evaluated on every record of the associated table while accessing an association if a filter is defined on the association node.
This only occurs for associations defined by the foreign key.
[26821] The perspective preferences data model should not be refreshed when calling the 'Refresh all data models' action.
[26877] An error occurs while executing XPathExpressionHelper.lookupFirstRecordMatchingXPath()
.
An exception occurs while executing XPathExpressionHelper.lookupFirstRecordMatchingXPath()
if the XPath expression does not refer to the primary key field.
[27088] An error occurs when calling the API SessionInteraction.getServiceKey()
.
A NullPointerException
is thrown when invoking SessionInteraction.getServiceKey()
.
This happens when trying to reject a work item associated with the @default
built-in service.
[27187] A deadlock can occur while building indexes.
Building concurrently an index inside and outside a procedure leads to a deadlock.
[27209] A deadlock occurs at the database level when tables are unshared concurrently.
The SQL server deadlocks when executing concurrently specific SQL statements in a single transaction.
[27212] An error occurs while writing decimals with a decimal place and a total digit facet.
An error occurs when writing the values of decimal fields that belong to mapped (history, relational, replicated) tables and have a totalDigits
and a fractionDigits
facet defined.
[28106] Performance issues occur when displaying an association after a record creation.
The request optimizer will apply permissions to the record prior to applying the XPath filter.
[28857] In the presence of an error, unclosed resources can leave the thread in an unusable state.
[23905] Incorrect display of the 'Mode' field values in a foreign key with a read-only user.
When logged-in with the 'Value policy' set to 'Read-only' and going to the 'Advanced controls' tab of a foreign key field, all values of the 'Mode' field are displayed instead of only one selected value.
[25219] Inconsistencies between minOccurs
and maxOccurs
are not reported when compiling a data model.
Inconsistencies between minOccurs
and maxOccurs
are not reported when compiling a data model. If minOccurs
is greater than maxOccurs
, or if minOccurs
is greater than one and maxOccurs
is not defined, no error is reported when compiling a data model.
[25371] An error occurs when publishing a data model with a uniqueness constraint declared on several inherited fields.
[25380] The 'Submit&Close' button in the 'Edit publication' screen should be 'Save and close'.
In a data model, when accessing the 'Publications' screen, then clicking on 'Edit description' under the Actions button, the 'Submit&Close' button should be changed to 'Save and close' in the open screen.
[25382] [All browsers] Incorrect position of 'Create publication' button if moving the horizontal scroll bar in 'Publications' screen.
In a data model, when users access a 'Publications' screen, the 'Create publication' button is not in the right position when users move the horizontal scroll bar.
[26218] In the data modeler services declaration table, a text area should be used for the "activation paths" field.
[26326] Unable to refer to a custom user service in a toolbar if the data model includes other packaged data models.
In the DMA, it is not possible to refer to a custom user service in a toolbar. This issue only occurs if the data model is configured as being published as a packaged data model and if it includes other packaged data models.
[26690] It is not possible to return a static string with a space character in a computation rule.
[26735] Only the first programmatic constraint on null values is considered.
If several ConstraintOnNull
are defined on a field, the checkNull
method is called for the first constraint only.
[16574] Temporary files are not closed/deleted when a procedure fails.
Some EBX® services need temporary files to prepare a response before returning it (a response can be an archive, a web service answer, a file, etc.).
If an exception is thrown after the response temporary file creation, it is not deleted nor closed in some cases, regardless of the processed request type.
This may lead to an overload of the filesystem and to exceptions.
[25474] REST history 'select' operation does not work properly with a history profile defined on the reference dataspace.
When the history table is configured with the history profile id ebx-referenceBranch
, the REST invocation returns inconsistent content. The REST connector called with the parameter includeHistory
set to true
, the response includes erroneous information: history
= 'true' and historyDetails
is defined. An invocation with the link of historyDetails
returns an empty response.
[25481] The REST 'select' response returns an invalid association link on the next page.
When accessing an association link via the REST data service of EBX® with the parameter pageSize
configured, the first two records and the pagination information are received.
When using the link on pagination.nextPage
to navigate to the next page, a 404 error message appears.
[25612] REST Insert request on history category should be reject.
When the POST
request with a record payload is sent, the server returns a select response according to the URL.
[26180] Get changes operations should not return hidden fields.
The 'Get changes' operations should not return hiddenInDataServices
fields nor hidden fields because of permission or access rules.
[26252] REST History detail link of a record is incorrect when primary keys contain special characters.
When using a data service of EBX® to access a record which includes special characters in its primary key value (such as "~!@#$%^&*()_+"), a history detail link of the record is returned. When using this link to access the history of the record, an error occurs.
[26331] A SOAP operation aborts if the namespace prefix is not defined.
When the prefix of a data service SOAP operation is not defined, a SOAP exception is logged with the following message: 'Unable to handle SOAP message'.
[26527] A REST call does not return complex types when a view is applied.
When a REST select operation is invoked with the table view parameter viewPublication
, the response does not contain fields under groups.
[26607] An association link, a foreign key or a selection link can still be accessed when it has no permission.
When accessing an association link, a foreign key or a selection link which refers to an inaccessible table, there is a list of records instead of an error message. The content of these records may be empty.
[26724] The REST history operations are deactivated in production mode.
[27090] A REST call returns complex types when a view is applied but it returns groups as well.
When a REST select operation is invoked with the table view parameter viewPublication
, the response contains fields as well as undefined groups.
[27139] Improve the authentication security according to the source connector.
When a single request uses several authentication methods, it should be rejected. The authentication mechanism in the documentation should be reviewed, and a backward compatibility should be included in the release notes.
[28187] SOAP predicate
and updateOrInsert
parameters should be declared as optional in the WSDL.
The 'select', 'count' and 'get credentials' operations should declare the predicate
parameter as optional in the WSDL. The 'update' operation should declare the updateOrInsert
parameter as optional in the WSDL.
[28459] SOAP fault creation aborts on WebSphere AS.
When a SOAP fault is created, especially for the 'faultcode' XML element, the WebSphere AS throws a SOAPException
with the following message: "WSWS4119E: An attempt was made to set a FaultCode that was not namespace qualified."
[25475] Wrong formatting of the decimal field with fraction digits.
[25735] An error occurs when a record is deleted while the incremental validation is executing.
[26093] Improper behavior of the validation after clicking on the validation report.
After validating a table, in the validation report of that table - when the user clicks to validate again - the validation error messages are not displayed.
[19250] Inconsistent display for 'Services' between the record form and the table view.
This issue occurs when the user creates a service on a table. On the table view, the created service is displayed under the 'Actions' menu of the table, while in the record view, the service is displayed separately under the 'Services' menu instead of the 'Actions' menu.
[22635] [All browser] Confirmation pop-up is right-aligned at the first click on the 'Import' or 'Create publication' button.
In the DMA, when the user clicks on 'Import' on the 'Import XML Schema document' page, or on 'Create publication' on the 'Manage Publications' page, the confirmation pop-up is not centered in the page.
[24236] An error occurs when performing a text search on a toolbar name in the 'Views' administration table.
An error occurs when performing a text search in the 'Views' administration table. The error occurs if a toolbar has been specified in a view definition.
[24646] Irrelevant display of the edit link record form when duplicating a hierarchy node.
When duplicating a hierarchy node, the system displays the edit link record form of another node.
[25152] The revert button disappears after saving an invalid value in the Grid edit view.
When entering an invalid value for a field on the Grid edit view and clicking on 'Save', saving fails and the revert button disappears.
[25161] The revert button disappears after saving an invalid value in the Grid edit view.
When entering an invalid value for a field on the Grid edit view and clicking on 'Save', saving fails and the revert button disappears.
[25222] In the grid edit view, the technical name should not be displayed when a row has been deleted.
If User1 deletes a record in the table, then User2 clicks on the 'Save' button in the grid edit view, the technical name is displayed instead of the primary key in the error message.
[25226] Values in the 'Grid edit' view are incorrectly reverted.
In the 'Grid edit' view, when modifying some fields then clicking on the revert button, the value of these fields are not reverted correctly.
[25899] Poor performance due to hierarchy views when the repository contains numerous dataspaces.
The performance is poor when accessing a table if a hierarchy view is defined and if the repository contains a large number of dataspaces.
[25935] An error occurs when using a formula in a validation rule.
When defining a validation rule that divides an integer for a decimal field, a java.lang.ArithmeticException
occurs.
[26148] Records are sorted by value instead of by label in a foreign key combo box if the label is defined in the table.
In the foreign key combo box, records are sorted by value instead of by label if the label is defined in the target table.
[26168] When creating a record through an association, some fields are pre-filled with erroneous values.
This issue occurs when there is an XPath filter declared on the association.
[26235] [All browsers] The online help button overlaps the text box.
On the field of the data type 'Dataspace reference', when focusing the cursor on the online help of this field value, the border of the text box is overlapped.
[26311] The result of 'All records' and 'Filtered records' is incorrect when running a service.
The methods TableViewEntitySelection.getFilteredRecords()
and TableViewEntitySelection.getAllRecords()
may return incorrect results. In an association, when running the '[Sample] AllTablesServiceOnAtLeastOneRecordKey' service with one selected record, the results of 'All records' and 'Filtered records' are incorrect.
[26524] Hierarchy table dataspace inversion in the case of a multi-dataspace, multi-dataset.
If a hierarchy dimension link is based on a join table which links are pointing to a different dataspace than the target table dataspace, and if many dataspaces are referenced, the link may point to the wrong dataspace.
So the hierarchy will display wrong members.
[26770] Incorrect behavior of the grid view after entering a value for a sorted column.
On the grid view with a sorted column, enter a value in a sorted column for a record. After the record is sorted and moved up in another record which takes the position of the previous record, click on the cell of the sorted column, a value is automatically displayed. When hovering over the cell, no revert button is displayed for the record. When clicking on the 'Save' button, the value is not saved.
[28201] The 'Apply last modification(s)' service is missing after modifying records in the association view.
When an association is defined by a recursive foreign key, the 'Apply last modification(s)' service is missing after modifying records in the association view.
[28563] An error occurs when moving a hierarchy node.
A NullPointerException
occurs while evaluating the permissions to move a node in a ragged hierarchy.
[23023] Broken form when publishing a workflow model considering a data workflow set to hidden.
If the data workflow is set to hidden, the form is broken when the user publishes a workflow model.
[25155] The publication of workflow models in error should be forbidden.
As of now, workflows can be published even though they do contain errors.
Allowing workflows in error to be published could lead to instabilities.
[25300] Access denied when comparing two records in the workflow.
In the workflow, the 'Access denied' text displays when users compare two records.
[25896] The value displayed in the end data context column ignores the update done in UserTask.handleWorkItemCompletion()
.
The value displayed in the end data context does not take into account the update performed in UserTask.handleWorkItemCompletion()
.
[26067] Slow performance when computing the user inbox content.
Performance can be slow when the number of workflow work items is large and these work items are offered to a long list of profiles. This slowdown is especially visible on multi-user access to the application.
[26206] When a workflow step is deleted, the following step is placed at the root level.
When a workflow step is deleted, the following step is placed at the same level as the initial transition, that is, it becomes a child of the "[All elements]" node. It should become a child of the previous step.
[27092] The lock when launching a workflow is too general.
The lock when launching a workflow is not accurate enough. It can block the launch and execution of other workflows.
[27155] An error occurs at the sub-workflow completion.
A NullpointerException
error can occur at the sub-workflow completion.
[27706] An error occurs when sending an email using the MailSpec
API in a script task.
A NullPointerException
error occurs when sending an email using the MailSpec
API in a script task.
[27740] Asynchronous operations on the interactions table can lead to erroneous behaviors.
If there is a concurrent thread calling SessionInteraction.complete
once the work item has been rejected or accepted, the workflow can stay in an inappropriate state.
[27933] The parent workflow does not restart once all sub-workflows are terminated.
The parent workflow does not restart once all sub-workflows are terminated.
[27936] An error occurs when executing "replay the step" on a sub-workflow invocation.
[25373] Help search results may be displayed as strikethrough text.
When searching the EBX® documentation using the keyword ActivationContextOnRecord
, part of the result is displayed as strikethrough text.
[25412] Inconsistency between the documentation and the illustration of the 'Button icon' in the Release note of the 5.8.0 version.
In the Release note of the version 5.8.0 1054, there are two new button icons in the UIButtonIcon
API, but in the documentation, there are 3 new button icons.
[26482] Incorrect statements in the Workflow documentation.
The Workflow documentation needs to be updated.
[28945] Incorrect spelling of "detailled" in the EBX® documentation.
On the Search box of the documentation, searching "detailled" returns two results. They should be spelled "detailed".
[24294] The imported file is not released after a programmatic import.
[16326] When using the standard search component on a foreign key with a filter, the filter is ignored.
When a foreign key is defined, the search component displays the list of all possible records. If a filter is also defined, the list of possible values is not filtered.
[19630] Concurrent modification error when modifying a record after an OperationException
was thrown.
A concurrent modification error occurs when modifying a record after an OperationException
was thrown from the handleAfterModify
method of a TableTrigger
.
[19955] A parent node cannot be selected when a hierarchical view is applied to a selector.
[23614] An error occurs while accessing a URL that contains pipe characters with Tomcat 8.5.9.
[23848] Two help buttons are displayed when hovering over a label.
When hovering over a truncated label, a redundant, misplaced, non-functional help button is displayed. It also happens sometimes when the label is not truncated.
[24435] A toolbar on an association is not displayed when the association target table belongs to a different dataset.
A toolbar on an association is not displayed when the source, the target and the link tables are in three different datasets.
[24988] A fatal error occurs when a foreign key node is selected as the search criterion.
[25073] Unnecessary vertical scrollbar displays when opening a drop-down list in the 'Grid Edit' view.
When users open a drop-down list in the 'Grid Edit' view, an unnecessary vertical scrollbar displays.
[25076] A warning appears in the logs while logging out.
After the user clicks on the 'Logout' button, a warning message is added to the log file.
[25286] [UIWidget]: A record is not filled when created by clicking on the 'Create' button of a foreign key.
If a field uses the UIWidget
, then it is not filled if it has been created by clicking on the 'Create' button of a foreign key.
[25314] An error page displays when executing built-in services that are disabled and called from another user service.
When calling built-in services thath are disabled using SchemaExtensionsContext.setServicePermissionRuleOnNode(Path aPathInSchema, ServiceKey aServiceKey, ServicePermissionRule.ALWAYS_DISABLED)
in the method UserServiceNext.nextService(...,...)
from another user service, an error page appears and an exception is thrown in the log.
[25568] Updates on association tables by a user service are not visible when returning to the initial form.
When returning from a custom user service back to the initial form and after the association table is refreshed, the modifications made by the user service (for example: create/associate/detach/delete a record) are not visible.
[25603] No item found on the foreign key when searching for an integer field in a combo-box.
[25967] A user service of the dataspace nature with a table toolbar does not display properly.
A blank screen is displayed and a NullPointerException
is logged.
[26048] The HTML code in a dataset or dataspace label is not escaped in some dialog boxes.
The HTML code in a dataset or dataspace label is not escaped in the displayed confirmation message when deleting a dataset or closing a dataspace.
[26149] Users can access the advanced perspective even when they are not authorized.
[26328]TableRefDisplay
not applied when filtering a foreign key combo box.
When using the combo box search feature, the filter relies on the default label of the record instead of on the values returned by TableRefDisplay.displayOccurrence
.
[26333] Association nodes should not appear in the comparison.
[26438] The tooltip is missing for the 'Wizard' button.
A tooltip should be displayed when hovering over the 'Wizard' button.
[26547] A favorite or a recommended perspective is always applied, even when a permalink is specified.
A favorite or a recommended perspective is always applied and the specified permalink is ignored.
This issue only occurs when the scope is full because perspectives are never applied to lower scopes.
[26650] The displayed association record is sometimes not updated after its modification.
[26945] The parameter wfi_workitem_key
is not strongly encoded when reallocating a work item.
[26968] Erroneous permission resolution on dataset nodes under a group.
If the default policy of the declared permission on the dataset is "hidden", and if a dataset node is located under the group for which the declared permission is "Read-write", an error occurs while accessing this node through the EBX® interface.
[27260] When accessing the comparison view, records are not sorted in alphabetical order of their labels.
[27511] The firstCallDisplay
parameter is not strongly encoded.
The firstCallDisplay
parameter is not strongly encoded when the strong enconding for the URL option is enabled.
[27852] Import and export services are not closed when called on a web component and when the user clicks on cancel.
[27853] A user service may not check correctly node permissions when creating a record.
A user service may display the node of a record being created as editable even though it is hidden or read-only for the current user.
[28180] The "clear field" button is not displayed when a combo box belongs to a multi-occurrence group.
[28322] [All browsers] The foreign key drop-down list does not close in grid view.
This issue occurs in grid view, when the user opens a foreign key to perform a search and the returned result is 'No item found'. If the user clicks on 'No item found' and then focuses on other fields, the drop-down menu remains displayed.
[28478] [All browser] Broken form when accessing advanced selection view with activated grid view.
When users access the advanced selection view from a foreign key, and the grid view property is defined for this view, the form is broken on this view.
[28487] It is possible to create a custom view on the access rights table but the created view is not available in the menu.
[21543] Validation message of the 'Minimum number of values' field displays incorrectly to read-only users.
In a data model, the 'Validation message' of the 'Minimum number of values' field is displayed as 'not defined' instead of the default value to read-only users.
[24352] Unexpected EBX® bar displays when accessing a service that has not been fully defined in the Perspective page.
When accessing a service that has not been fully defined in the Perspective page under 'Administration', and then accessing the service in the Perspective page, an unexpected EBX® bar displays.
[25368] Permission resolution on read-only nodes is degraded due to unnecessary calls to the getClassLoader
.
While retrieving the user message associated with this permission's reason, EBX® relies on the class loader of ebx.jar
.
Multiple calls to the getClassLoader
method affect the performance of the permission resolution.
[25805] Permissions are sometimes not properly resolved when submitting a dataset node form.
In spite of having 'read-write' permissions on fields in a group, users cannot edit dataset nodes unless the dataset default policy is also 'read-write'. An error is thrown on submit.
[27058] A user with read-only permissions on a table can still inherit or overwrite records.
In an inheriting dataset, a user with read-only permissions on the table is still allowed to modify a record from the "overwriting" to the "inheriting" state, thus losing the values of all overwritten fields. The user can also transform an inheriting record into an overwriting record.
Users should not have the ability to inherit or overwrite records.