Defining transactions in a client application

Pattern Name Problem Solution
Replay Changes How can a client application preserve a user's changes after aborting a transaction? The client keeps the changes independent from the view of the repository, so that when a view is refreshed, the changes may be replayed.
Transaction Specification How can changes to domain model objects be saved independently from the domain model? Save the sequence of messages that can be sent to cause the desired changes to occur.
Aspect Change Specification How can a client application record a change to a domain model object independently from that object? Specify the message that must be sent in order to accomplish the desired change. A message is completely specified by its receiver, method signature, and arguments.
Dirty Object Pool How can a client application record a change to a domain model object independently from that object? Keep a copy of the object in its changed state.
Locked Object How can you reduce the risk of a commit failure when modifying an object? Obtain a write lock on an object before modifying it.
Check Out Objects How can you maintain a lock on an object for a long period of time? Develop a lock table that holds persistent locks for objects that have been checked out. The application checks out a copy of the object, makes changes, and then checks in the changed copy.