Batch Committing Offline Changes
Currently when a client application reconnects to commit offline changes we simply replay the changes in the order they were made by the user. This works well to maintain data dependencies.
The major drawback is the user needs to wait for the commits to process before disconnecting and going back to work. There are probably many applications where the system could be more effective if the user could quickly submit changes, download new data, and go back to work.
What if we change the idea of commits to be bundles of changes that can optionally be stored on the server and processed at a later date? The user (or administrator) could check on the status of current work packages, see if anything failed, and deal with these appropriately.
This would be especially interesting if we have an explicit understanding of data dependencies so we can process changes out of order.