This specification aims to describe improvements that aims to be done in GateIn 4.0.
In GateIn 3.x, there is the central concept of navigation node, page and layout:
- a navigation node
- has navigation meta data (label, icon, startPublicationtime, endPublicationTime, visibility)
- points to a page
- a page
- has page meta data (accessPermissions, editPermission, showMaxWindow, factoryId, displayName, description)
- has a page layout that is a UI tree of components
The current model has a few drawbacks identified with the experience:
- Security: is owned by the page and navigation node don't have security settings which makes things confusing
- Performance: building a navigation node means to retrieve the navigation node and the related page meta data
The only perceiptible advantage of this model is to have the ability to share a page between several navigation nodes and that was never been reported as an highly used killer feature.
In GateIn 4.0, data access services have been improved to decouple the page layout from the page meta data for improving performance issue that were seen in early 3.x versions:
- NavigationService: manages navigation nodes
- PageService: manages page life cycle and meta data
- LayoutService: manages the UI tree of components of the page (and also of sites)
We propose to remove the concept of page by moving the page meta data to navigation node entities:
- the page concept is removed
- the layout concept still exists
- a navigation node owns the page meta data and points to the layout of the page
The page sharing feature would be conserved by having the ability to have two nodes pointing to the same layout, the only difference is that page metadata would not be shared anymore.