Lock/Unlock and Checkout/Checkin cooperation

NXP-9260 was a first step towards improving the integration between the Lock/Unlock and Checkout/Checkin operations in Nuxeo for both Web and CMIS clients. However, problems remain. My immediate concern is that patch NXP-9260 did not include code to properly calculate the Nuxeo CMIS property cmis:isVersionSeriesCheckedOut (see NXP-10659). Currently, this property reports if Nuxeo considers a specific document checked-out and not whether Nuxeo CMIS considers it checked-out (Nuxeo CMIS considers a document checked-out if it is locked or checked-out). Rather than trying to band-aid a patch for this problem, I thought a more comprehensive solution might be appropriate. This would involve making minor changes to the semantics of the core Nuxeo lock, unlock and checkin operations. A summary of the proposed changes follows:

*lock() - checkOut document if it is versioned and not already checked out

*unlock() - cancelCheckOut document if it is the latest version

checkOut() [no changes]

*checkIn() - if document is locked and versioned, perform checkOut after checkIn

*cancelCheckOut() [new operation] - restore latest version if it differs from live document

cmisCheckOut() [no changes] - lock & checkOut document

cmisCheckIn() [no changes] - checkIn & unlock document

cmisCancelCheckOut() [no changes] - cancelCheckOut & unlock document

Is it appropriate to couple the Nuxeo Locking and Versioning mechanisms in such a manner? Is it preferred to implement this type of integration in the web-tier via actions? Do you have other ideas about fixing NXP-10659 in a performant manner?

Thanks in advance for your feedback.

0 votes

1 answers



Based on this comment, it appears the recommended solution to the CMIS/Nuxeo UI versioning/locking impedence mis-match is to replace the standard web-tier Lock/Unlock actions with Lock & CheckOut/Unlock & CancelCheckOut actions. A possible future enhancement would be to make the web-tier Lock/Unlock action behavior configurable so customers using CMIS would have a solution that works out-of-the-box.

0 votes

Tickets is NXP-10734.