3.2.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.

The Core Transaction Manager Facet MUST maintain all the data elements specified in section 3.1.1.

The Core Transaction Manager Facet MUST also maintain the following data elements:

  • Core Transaction Manager Facet.Durable Log: A durable list of transaction objects. The contents of the log MUST persist across software restarts or transient failures.

  • Protocol Extension List: A list of protocol extensions, as specified in section 3.2.1.5.

  • Extended Whereabouts: A memory buffer that represents the extended whereabouts information of the transaction manager, contributed by protocol extension objects as specified in section 3.2.1.5.

  • Extended Whereabouts Size: The size of the extended whereabouts buffer, in bytes.

  • Extended Whereabouts Protocol Count: The number of protocol extension objects that contributed to the extended whereabouts information.

  • Security Level: An enumeration that indicates the security level at which the transaction manager initializes communication by using the transports protocol as specified in [MS-CMPO]  and the multiplexing protocol as specified in [MS-CMP] section 3.2.1.1. This element MUST be set to one of the following values:<21>

    • No Security: This value is set to indicate that the RPC communications MUST NOT require validation of the identity for an incoming message.

    • Incoming Authentication: This value is set to indicate that the RPC communication SHOULD validate the identity for an incoming message.

    • Mutual Authentication: This value is set to indicate that the RPC communication SHOULD validate that there is a known identity for an incoming connection. The incoming connection is refused if the identity is not established. The incoming identity MUST match the pattern "<domain>\<incoming-MSDTC-name>$", where <incoming-MSDTC-name> is the source hostname for the connection, and <domain> is the name of the domain in which the host is a member.

  • The Core Transaction Manager Facet MUST maintain the following security flags and MUST set each flag to either TRUE or FALSE:

    • Allow Network Access: A Boolean flag that indicates whether the transaction manager will communicate with an OleTx participant that is located on a remote machine. If this flag is not set, network access MUST NOT be enabled for the OleTx protocol, regardless of the settings of the other flags.

    • Allow Network Transactions: A Boolean flag that indicates whether the transaction manager will perform a distributed transaction with an OleTx participant that is located on a remote machine. If the Allow Network Access flag is set to false, this flag MUST be ignored.

    • Allow Inbound Transactions: A Boolean flag that indicates whether the transaction manager will act as subordinate to a superior transaction manager facet that is located on a remote machine. If either the Allow Network Access flag or the Allow Network Transactions flags are set to false, this flag MUST be ignored.

    • Allow Outbound Transactions: A Boolean flag that indicates whether the transaction manager will act as superior to a subordinate transaction manager facet that is located on a remote machine. If either the Allow Network Access flag or the Allow Network Transactions flag is set to false, this flag MUST be ignored.

    • Allow Remote Administration: A Boolean flag that indicates whether the transaction manager will be administered by an application that is located on a remote machine. If the Allow Network Access flag is set to false, this flag MUST be ignored.

    • Allow Remote Clients: A Boolean flag that indicates whether the transaction manager will communicate with an application or a resource manager that is located on a remote machine. If the Allow Network Access flag is set to false, this flag MUST be ignored.

    • Allow TIP: A Boolean flag that indicates whether the transaction manager has enabled the TIP protocol, as specified in [RFC2371]. For information on the transaction manager's interaction with [RFC2371], see [MS-DTCM]. If the Allow Network Access flag is set to false, this flag MUST be ignored.

    • Allow XA: A Boolean flag that indicates whether the transaction manager provides support for the [C193] protocol in an implementation-specific manner.

    • Allow LUTransactions: A Boolean flag that indicates whether the transaction manager provides support for the MSDTC Connection Manager: OleTx Transaction Protocol Logical Unit Mainframe Extension protocol, as described in [MS-DTCLU]. A value of TRUE indicates the transaction manager accepts the connection type supported in the MSDTC Connection Manager: OleTx Transaction Protocol Logical Unit Mainframe Extension protocol. A value of FALSE indicates the transaction manager will refuse to accept incoming connections for the connection type supported in the MSDTC Connection Manager: OleTx Transaction Protocol Logical Unit Mainframe Extension protocol. If either the Allow Network Access flag or the Allow Remote Clients flag is set to FALSE, the transaction manager MUST ignore this flag and MUST refuse to accept incoming connections from remote machines for the connection type supported in the MSDTC Connection Manager: OleTx Transaction Protocol Logical Unit Mainframe Extension protocol.

The Core Transaction Manager Facet MUST extend the definition of a transaction object to include the following data elements:

  • Superior Enlistment: A reference to an Enlistment object that belongs to either the subordinate transaction manager facet or the transaction manager communicating with an application facet, as specified in 3.1.1.

  • Next Phase Zero Wave Enlistment list: A list of Enlistment objects that represent the enlistment set of Phase Zero that belongs to the next Phase Zero wave of the transaction.

  • Phase Zero Enlistment list: A list of Enlistment objects that represent the enlistment set of Phase Zero that belongs to the current Phase Zero wave of the transaction.

  • Phase One Enlistment list: A list of Enlistment objects that represent the set of Phase One enlistments currently registered on the transaction.

  • Phase One Voter Enlistment list: A list of Enlistment objects that represent the set of voter enlistments currently registered on the transaction.

  • Phase Two Enlistment list: A list of Enlistment objects that represent the set of Phase One enlistments who voted Prepared when asked to vote on the outcome of the transaction.

  • Phase Two Voter Enlistment list: A list of Enlistment objects that represent the set of voter enlistments who voted Prepared when asked to vote on the outcome of the transaction.

  • Root: A flag set to TRUE if the Core Transaction Manager Facet is the root of the transaction; otherwise, false.

  • Doomed: A flag set to TRUE if the transaction has been aborted; otherwise, false.

  • Attributes Set: A flag set to TRUE when the transaction attributes are updated by using the Set Transaction Attributes event.

  • Phase Zero Registered: A flag set to TRUE if the transaction has successfully registered for the next Phase Zero wave; otherwise, false.

  • Single Phase Commit: A flag set to TRUE if the Core Transaction Manager Facet was requested to perform a Single Phase Commit on the transaction; otherwise, false.

  • State: A State enumeration that represents the current state of the transaction. These states are as specified in section 3.2.1.3.

  • Isolation Level: An Isolation Level value as specified in section 2.2.6.9.

  • Isolation Flags: An Isolation Flags value as specified in section 2.2.6.8.

  • Description: An implementation-specific description string that is provided to the core transaction manager when the transaction is created.

  • Timeout: A 32-bit unsigned integer that represents the number of milliseconds after which a root transaction MUST time out if an outcome is not reached. This value MUST be used to initialize the Transaction Timeout Timer (section 3.2.2.1).

  • GRFRM: A 32-bit unsigned integer that contains an implementation-defined value, as defined in section 2.2.7.1.

The Core Transaction Manager Facet MUST extend the definition of a connection object, as specified in [MS-CMP] section 3.1.1.1, to include the following data element:

  • Enlistment: A reference to the Enlistment object that is associated with the connection. Some connections do not use this field.