Defining transactions in a client application

Transaction Specification

Problem

How can changes to domain model objects be saved independently from the domain model?

Context

You are developing a multi-user application that commits transactions on an application server. There are several reasons why you might want to be able to replay a user's business transaction after aborting a server transaction: