Hi everyone, and welcome to this new tech report. It's a rather short one this week -- we're mostly consolidating what you've read about in the previous report. Oh, and we released Nuxeo Drive :D

Nuxeo Drive

Drive 1.0.1 released

Drive 1.0.1 was release last week.

Next steps

There is a known issue when several files are created on the server: because the server may be busy, there is a time shift between the audit log event date and the time where the audit entry is actually persisted. This time shift can lead the client to 'loose some events' and then not see some files.

To fix that, we should:

  • Review the polling system: based on the audit sequence ID rather than the time window

  • Prepare the upgrade of the client side database

  • Make the client able to detect when a database update is needed.

Oracle issue

There is a date formatting issue when doing Hibernate queries on Audit logs. => We should simply use Hibernate queryMaker to avoid that (AuditReader provides a method to allow parameters merge and will handle that!).

Technical tasks

Tomcat DS/Hibernate upgrade/Seam patch/H2 upgrade + MVCC branch

As already raised in previous tech reports, we still have several branches holding important infrastructure changes. We're starting the merge of these branches.

  • NXP-10926: H2 upgrade + H2 MVCC mode + use H2 in memory so speed up tests

  • Tomcat Pool and 'real' XA mode + upgrade hibernate + patch Seam

  • Improvements on test framework and error management (need to create ticket)

  • Tomcat upgrade.


A BIRT upgrade has been scheduled. The target is:

  • upgrade to BIRT 4.2

  • make an ODA connector for NXQL so that we can use NXQL from within BIRT designer.

PreSales sandbox

The PreSales team has started a sandbox where they code some extensions that can be useful for building demos and POCs. See nuxeo-presales-prototyping-toolkit.

Part of this work is also to fill the potential holes we can have in the API or in the Extension Point system. That's why we did a quick review with Benjamin and a lot of the work should be directly merged inside the trunk:

  • missing Operations

  • Operation with missing parameters

  • new Publisher extensions

  • ...


As already explained in previous reports, changes in Automation API are one of the cornerstone of the next release.

Automation improvements

  • do some non-regression validation tests

  • merge Olivier's changes on JSON marshaling

Angular Layout/CRUD Automation/Automation

Damien has started working on:

  • adding a REST CRUD API

  • improving the JS client and make integration with AngularJS

  • wrapping the Layout system



Tabs widgets

We are almost ready to have a Widget that renders tabs defined by actions and allows Ajax Switching. This will be useful for DAM, but more globally, this would good for CAP too. So, the next steps include:

  • finishing the implementation

  • use by default in Nuxeo CAP tab system

  • may be merging with changes on RESTDocumentLink for conversation management NXP-11331

  • updating Selenium tests

Action types // Widget types

We are now very close to being able to use WidgetTypes to define Action types. The idea is basically to make action types more than a simple string attribute, but associate it with a set of property that can be defined by the user. Doing so would be good:

  • for Studio, action configuration would be easier since we can have a form

  • for documentation and showcase

  • for Ajax behavior

Ajax Rerender and duplicated IDs

Depending on layout and widgets config there may some cases where RichFaces + Facelet infrastructure fails to correctly manage Ids. For now, this is a problem that:

  • can be avoided via small workarounds in most cases

  • can not be fixed in Nuxeo

  • can not be easily fixed in JSF/Facelets

The JSF duplicate ID issue on ajax rerender has been identified, and fixed by using the nxu:repeat tag (revisited) and making it create new sub-components when it detects that the iteration list has changed. Otherwise existing components are reused and their ID is not reset, leading to potential duplicate IDs. See https://jira.nuxeo.com/browse/NXP-11434.

Anahide will try to submit the problem to RichFaces/JSF2 community to see if we have some feedback.


Box listing

The Box listing is used to manage the DAM thumbs view inside a ContentView. This works in DAM, but there is still some work to be done:

  • integration inside CAP/DM to manage the 'BigIcon view'

  • standardize the DAM selection use case (clicking on the Thumb in DAM changes the currentDocument)

  • Studio editor UI to be adapter to Box listing display

    • this is not strictly needed for now, but this would be really better.

Selection system

For ContentView the current selection model is built on the use of the DocumentListsManager. This system that is also used for Worklist and Clipboard becomes an issue for selection:

  • when DAM and DM show the same ContentView but with different filters

  • when there are several ContentView in the same page

If we allow to have several selection lists, this should impact the Copy/Past/Move actions available on ContentView.

Next steps

The next steps on DAM include:

  • Tab Widget integration

  • Html5 DnD integration for mass Import

    • start from existing code

    • add Canavas based preview if we have time

    • add support for async processing

  • 'Ajax Permlink' (already discussed but not done)

  • functional testing


Advanced Studio

Part of the ongoing work is about unlocking advanced feature so that people using studio don't end up with a lot of XML Override in the XML extensions. This typically includes:

  • Extended ContentView configuration

  • Widgets configuration

  • Selection configuration

Having all these new options:

  • will unlock feature for advanced users

  • may confuse basic users and lead them into problem

    • problems we will have to fix via support

This may be worth adding a disclaimer saying something like 'use advanced settings only if you now what you are doing, support won't be able to easily help you if you mess up something'.