Home > Release Notes

4.8.0

Release Date: May 25, 2010

D3 - Distributed Data Delivery [new]

EBX.Platform now offers the possibility to replicate Master Data from an EBX.Platform instance to several others. Rather than relying on one central hub, which can easily become a single point of failure, Orchestra Networks customers are able to deploy EBX.Platform in a distributed architecture to meet two key requirements:

Technically, D3 is based on a transactional synchronization technology, using SOAP on HTTP/HTTPS and can be deployed on existing infrastructure, without any proprietary protocols or database replication systems.

For more information, see the reference documentation .

User Interface

Multi-level Filters in Hierarchies

A filter can now be defined at each level of a custom hierarchy.

Pruned Tree in Hierarchies

A pruned mode is now available in EBX.Manager: if pruned mode is enabled, the nodes that do not have any descendant in the target table are not displayed. This is particularly useful for searching items.

The pruned mode can be specified in a custom hierarchy. It is also always enabled in the context of a quick search.

Nodes Documentation

The documentation on nodes, formerly displayed below nodes by a click on the documentation "I" button, is now displayed in a documentation pane . Moreover, the documentation is also henceforth available for "under terminal node" (that is nodes of a bean).

The documentation pane is a floating element in the Manager displayed near the label. It appears when the mouse hovers over the label more than one second. The pane displays the label and the description specified in the underlying schema but also the element's type, its constraints, an optional error message and the button of the assistant (in developer mode).

For a specific UI Component ( UIBeanEditor ), the developer is able to customize the text of the pane. To add a customized documentation, the method UIResponseContext.addUILabel(UIFormLabelSpec) must be invoked.

CSV Encoding

The user is now able to specify the encoding of the CSV file to be imported or exported.

Data Model

More Intuitive Data Model Assistant

The user interface of the Data Model Assistant has been improved so as to be more intuitive:

Inter-branch and Inter-instance Links

Inter-branch Foreign Keys

It is now possible to define a foreign key targeting a table defined in a specific branch ( osd:tableRef with branch element defined).

For more information, see foreign key constraint .

Filters on Inter-instance Foreign Keys

It is now possible to define a filter over an inter-instance foreign key ( osd:tableRef with container element defined).

For more information, see foreign key constraint .

Inter-instance Selection Links

It is now possible to define a selection link targeting a table in a specific container ( osd:select with container element defined).

For more information, see selection link .

Indexes

Indexing has been enhanced so as to support the declaration of an index on a sequence of columns. Indexing speeds up table access for requests matching these fields.

For more information, see tables .

Some indexes are automatically built from the model:

Services Display

Property orderInMenu on service declaration has been added to specify the position of the service. This position is used for ordering services at display in EBX.Manager.

For more information, see ServiceContext .

Workflow

More Intuitive Workflow Definition

The user interface of the Workflow Definition module has been enhanced so as to be more intuitive:

Interaction retrieving

Built-in services have been improved in order to handle the interaction retrieving:

For specific services, an internal parameters map is now available. Thanks to this map, it is possible to save and read values in order to have information about service progress. This way, the developper can handle special cases of interaction retrieving.

API

XPath on Aggregated List

XPath predicates can now be built upon aggregated list fields.

CSV Imports and Exports

The new method setEncoding allows to specify an encoding other than "UTF-8".

The new method setForceEnclosingFields specifies that the fields will always be enclosed by the text delimiter even if the fields do not contain any particular character.

Mapping to Java

Documentation

A new dedicated chapter, Mapping to Java , has been added to the documentation so as to group and explain the various provided features and contracts that the developer has to follow.

Mutable objects

Before this version, the contract to access Master Data represented in Java as "mutable objects" warned the developer that he should never directly modify these objects (dates, lists or beans), otherwise he could get unpredictable behavior. This limitation is henceforth removed: for more information, see section How to access Master Data from Java? .

Management of dates

As specified in the section Mapping of Datatypes , the Java Date object representing either a xs:date or a xs:time is henceforth immediately normalized when a random Java Date is set.

Stricter checks

These two evolutions are based on an internal new mechanism, called "value internalization" (see also performance section below). Another benefit of this mechanism, is that stricter checks are performed when a value is set.

Internal parameters of an interaction

The new method getInternalParameters allows to get the map of internal parameters.

The new method setInternalParameters allows to update the map of internal parameters.

Performance and Memory Usage

Memory Usage

Loading strategy

For each branch or version, it is now possible to specify the loading strategy of its resources. In addition to the previously existing "Load and unload on demand" mode, a "Forced load" mode can be set so that the resources are preloaded and cannot be cleared from memory unless the branch or version is closed. For more information see the Loading strategy section.

Additionally, in the default "soft" mode, branches and versions management has been improved so as to completely unload them off the memory if they are not used and/or memory is required.

Object pooling

Object pooling is henceforth internally ensured for several model patterns (for example xs:enumeration and osd:tableRef ). Depending on the model and data, this can drastically reduce the memory required for fully loading tables (a gain of 90% of free space has been observed in some configurations).

Value internalization

Another new mechanism, "value internalization", is also performed transparently: this allows a cheaper representation of several data types. However this also involves an allocation cost when the Master Data is read, especially for large aggregated lists or "fat beans". For more information, see section How to access Master Data from Java? .

Indexes

The structure of indexes has been simplified so that occupy less space. It is to be noted however that new indexes (see section above), while enhancing performance, imply a memory cost. It is therefore recommended to evaluate the memory figure required by existing repositories on this new version.

Monitoring

In order to monitor the memory usage and object pooling, a new log category has been added: monitoring category produces a log in CSV format.

Performance of Validation

The validation of foreign key constraints has been optimized, using indexes, to reduce the cost and the duration of the initial and successive validations. Thus the validation state of a foreign key constraint is no more set as obsolete as soon as there is an insertion or a deletion in a referenced table. Indeed, when an insertion or a deletion occurs in a target table, depending foreign key constraint are immediately revalidated.

Performance of hierarchies

Several enhancements have been made in the internal engine of hierarchies, so that algorithms are more efficient and allocate less objects.

Manager in constrained mode for large tables.

When displaying tables which contain more than 1 million of records, the manager will automatically switch to a constrained mode, for non-administrator users; then:

Miscellaneous

Inherited Attributes

Inherited Attributes are not in a Beta version anymore.

Monitoring

Logging has new categories :

Workflow logging has also been completed.

Backward Compatibility

Backward compatibility

Adaptation is now an interface, when it formerly was an abstract class. This causes binary incompatibility between the 4.8.0 ebx.jar library and all existing client code making use of this class. As a consequence, in order to avoid Java error IncompatibleClassChangeError , existing client code has to be recompiled against the new 4.8.0 ebx.jar library, and redeployed together with the new EBX binaries;

Adaptation instance activation

Now, when a new adaptation instance is created, it is activated by default. As a consequence, all constraints will be checked by default during validation (including minOccurs constraint).

Removed deprecated methods

The following, already deprecated, methods have been removed: compareTo and getValues in class PrimaryKey ; doCreateOcculting(PrimaryKey, AdaptationTable) doCreateOverwriting(PrimaryKey, HrNode, AdaptationTable) , in class ProcedureContext

Removed property

The property ebx.repository.preload has been removed from ebx.properties file. It is replaced by a "Loading strategy" that can be specified for each branch. For more information see the Loading strategy section.

History of exports

Built-in XML and CSV Exports are henceforth no longer logged into history. If the service is used from EBX.Manager, it is considered that this information is useless in history (the exported is uploaded by the end user, it is similar to a simple read-only operation). For programmatic exports that directly use the class ExportSpec , it is considered the developer's responsibility to implement the log, if needed.

CSV and XML export

The control of permissions is stronger. Now, the access rights are checked when exporting. Indeed the method checkAccessRule in class ExportSpec is set to true instead of false. 

Forgotten invocations of setValue do not work anymore

Before this version, the contract to access Master Data represented in Java as "mutable objects" warned the developer that he should never directly modify these objects (dates, lists or beans), however such a wrong usage of the API could not be detected and, under some conditions, it was apparently working. The typical scenario is the following: the mutable object obtained by means of the method ValueContext.getValue is directly modified (contract's violation), and the method ValueContextForUpdate.setValue is not invoked. It is henceforth mandatory to invoke the method ValueContextForUpdate.setValue for the modification to be taken into account.

.For more information, see section How to access Master Data from Java? .

Bug Fixes

Core Cache

Data Model & DMA

Import Export

User Interface

Workflow

Home > Release Notes