3.6.1 Abstract Data Model
This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate that implementations adhere to this model if their external behavior is consistent with the behavior that is described in this document.
Note that the abstract data model can be implemented in a variety of ways. This protocol does not prescribe or advocate any specific implementation technique.
The transaction manager communicating with a resource manager facet MUST maintain all the data elements as specified in sections 3.1.1 and 3.2.1.
The transaction manager communicating with a resource manager facet MUST additionally maintain the following data elements:
Active Resource Manager Table: A table of entries to resource manager objects, keyed by resource manager identifier.
Failed to Notify List: A list of Enlistment objects representing remote resource managers that have not yet acknowledged the Commit outcome of a transaction.
A resource manager object MUST contain the following data structures:
Resource Manager Object.Identifier: Specifies the resource manager identifier.
Session Identifier: A GUID that specifies the resource manager session identifier.
Resource Manager Object.Connection: The CONNTYPE_TXUSER_RESOURCEMANAGERINTERNAL (section 2.2.10.1.2) or CONNTYPE_TXUSER_RESOURCEMANAGER (section 2.2.10.1.1) connection object that is associated with the resource manager.
Enlistment objects that are created by the transaction manager communicating with a resource manager facet MUST provide the following properties as specified in section 3.1.1:
Name: The resource manager identifier field of the Enlistment object, formatted as a string as specified in [C706] Appendix A.
Enlistment Object.Identifier: An empty string.
The transaction manager communicating with a resource manager MUST provide the states as specified in the following sections for its supported connection types. Section 2.2.1.1.3 defines the connection types that a transaction manager communicating with a resource manager MUST provide for each supported protocol version.