Transaction Model Patterns

Resolving conflicts between transactions

Pattern Name Problem Solution
First Commit Wins How can you serialize a set of changes from overlapping business transactions that affect the same object when your primary concern is for users to see changes immediately as they occur? Force the user to start a new business transaction starting from the latest server state whenever the user's changes cause a commit failure in a server transaction.
Merge Conflicting Updates How can you serialize a set of changes from overlapping business transactions that affect the same object when your primary concern is that users should not have to reenter any data? Selectively replay the user's changes in a new server transaction, prompting the user whenever there are conflicts at the individual aspect level of the object.
Last Commit Wins How can you serialize a set of changes from overlapping business transactions that affect the same object when your primary concern is that users should not have to reenter any data and the probability of conflict is relatively small? Replay all of the changes in a new transaction, overwriting previously committed changes if necessary.

Transaction Model Patterns