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.
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.