共用方式為


3.2.7.12 Create Superior Enlistment

The Create Superior Enlistment event MUST be signaled with the following arguments:

  • An Enlistment object

If the Create Superior Enlistment event is signaled, the Core Transaction Manager MUST perform the following actions:

  • If the transaction referenced by the provided Enlistment object already exists in the transaction table:

    • Signal the Create Superior Enlistment Failure (section 3.8.7.5) event on the Transaction Manager facet referenced by the provided Enlistment object with the following arguments:

      • The provided Enlistment object

      • The Duplicate reason code

  • Otherwise, if the Core Transaction Manager Facet.Durable Log is too full (section 3.2.3.2) to accept the transaction object referenced by the provided Enlistment object:

    • Signal the Create Superior Enlistment Failure (section 3.8.7.5) event on the Enlistment object's transaction manager facet with the following arguments:

      • The provided Enlistment object

      • The Log Full reason code

  • Otherwise:

    • Add the transaction object referenced by the provided Enlistment object to the transaction table, using the Transaction Object.Identifier field of the transaction object as the key.

    • Set the transaction's Superior Enlistment field to the provided Enlistment object.

    • Set transaction State to Active.

    • Set the transaction's Root flag to FALSE.

    • Signal the Create Superior Enlistment Success (section 3.8.7.4) event on the transaction manager facet referenced by the provided Enlistment object with the provided Enlistment object.