3.5.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 as long as 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.
A resource manager MUST maintain all the data elements as specified in section 3.1.1.
A resource manager MUST also maintain the following data elements:
Resource Manager.Identifier: A durable GUID that specifies the resource manager identifier.
Session identifier: A volatile GUID that specifies the resource manager session identifier.
Resource Manager.Durable Log: A durable list of transaction objects. The contents of the log MUST persist across software restarts and transient failures.
Reenlistment list: A list of connection objects.
Transaction manager name: A Name object that identifies the transaction manager.
Reenlistment timeout: A value that indicates the number of milliseconds the resource manager will wait for an outcome while reenlisting on a transaction.
Resource Manager.Connection: A connection object that MUST be of type CONNTYPE_TXUSER_RESOURCEMANAGERINTERNAL (section 2.2.10.1.2) or CONNTYPE_TXUSER_RESOURCEMANAGER (section 2.2.10.1.1).
When a transaction object is stored in the Resource Manager.Durable Log of the resource manager, the resource manager MUST record, at minimum, the following fields:
The Resource Manager.Identifier field
The Transaction Object.Identifier field of the transaction object
A resource manager MUST provide the states that are defined in the following sections for its supported connection types. Section 2.2.1.1.3 defines the connection types that a resource manager MUST provide for each supported protocol version.
For a resource manager initiating a connection, once the connection's state machine enters the Ended state, the connection that is associated with the state machine MUST be disconnected, if it is not already disconnected, as specified in [MS-CMP] section 3.1.5.1. In addition, if both the Outgoing Connection Table and the Incoming Connection Table of the Session object containing the connection object referenced by Resource Manager.Connection are empty, the following event on the resource manager is signaled:
Transaction Manager Down (section 3.5.7.4)