A transaction manager maintains an enlistment data structure used for
managing resource object enlistment. A transaction manager may receive an
enlistment request initiated from a resource object. Upon receiving the
request, the transaction manager will determine if the resource object is
already enlisted. If the resource object is already enlisted, the
transaction manager will block the enlistment request. If the resource
object is not enlisted, the transaction manger will enlist the resource.
Upon enlistment, the resource object will perform a requested task or
service. After the requested task or service is complete, the resource
initiates a delistment request to the transaction manager. After
receiving the delistment request from the resource, object, the
transaction manager is delisted from the enlistment data structure.