A sequence of processing transactions operating on a cached data set,
which depend on each other because they operate on the same items of data
from the data set. The transactions are saved until the master copy of
the data becomes available. The transactions are played back against the
master copy until one of the played back transactions fails because
another transaction which operated on the same items of data but against
a separate cached copy and originating from another application, was
successfully played back on the master copy at an earlier time. At this
point, all subsequent transactions which depended on the failing
transaction are rolled back on the cached copy (with appropriate failure
reports generated) and activity resumes from there. "Chained"
(optimistic) transactions can therefore be applied to cached data and can
be allowed to progress by recording their dependencies so they can be
undone when required.