Current situation or problem:
After optimistic locking is implemented in all apps, we have resolved data integrity issues. But it can be frustrating for users to perform many changes in a record only to be told when saving that it cannot be done. Currently they have to open the new version in a new tab and copy their changes one by one from one tab to another.
The idea is to create a new mod that will take entries of record paths in use, and that can be queried for these paths to check if a record is in use. Entries would have a timeout (like 1 hour), and would be removed afterwards. It would provide a kind of pessimistic locking, but with the option for users to bypass it.
For apps to use this system, no change would be needed on backend. UI would request if a record path is in use, and warn the user if it is, with the name of the user. UI would be responsible for requesting use and releasing it when a record is saved or the request is cancelled. It is understood that sometimes entries will not be released, hence the timeout + an option for users to bypass the lock.
The new mod should be usable by any FOLIO app. It should not have any code specific to acquisitions.
Out of scope
This is only meant as a UI improvement, as a convenience for users. It is not meant to resolve issues of data integrity and consistency.
When several users are likely to edit the same resource at the same time, using the same app.
- Define a user interface
- New backend mod
- POST / GET to lock a resource or see if it is locked, by resource path. Save the resource path, the time it was added, and the user name. Release entries automatically after a timeout (configurable?).
- UI: use this new mod with apps like Orders, Invoice, Finance.
Links to additional info