3.2.7.30 Resolve Transaction

The Resolve Transaction event MUST be signaled with the following arguments:

  • A transaction object.

  • A value indicating the desired Resolve Transaction outcome. This value MUST be set to one of the following values:

    • Committed

    • Aborted

    • Forgotten

If the Resolve Transaction event is signaled, the Core Transaction Manager Facet (section 1.3.3.3.1) MUST perform the following actions:

  • If the provided Resolve Transaction outcome is Committed or Aborted:

    • If the transaction state is not In Doubt (section 3.2.1.3.12):

      • Signal the Resolve Transaction Complete (section 3.4.7.16) event on the Transaction Manager communicating with an Application  facet, with the following arguments:

        • The provided transaction object

        • The Not Prepared result

    • Otherwise:

      • If the provided Resolve Transaction outcome is Committed:

        • Signal the Notify Recovered Transaction Committed (section 3.2.7.24) event on the Core Transaction Manager Facet (section 1.3.3.3.1) with the provided transaction object.

        • Signal the Resolve Transaction Complete (section 3.4.7.16) event on the Transaction Manager communicating with an Application facet with the following arguments:

          • The provided transaction object

          • The Committed result

      • Otherwise, if the provided Resolve Transaction outcome is Aborted:

        • Signal the Notify Aborted (section 3.2.7.23) event on the Core Transaction Manager Facet (section 1.3.3.3.1) with the provided transaction object.

        • Signal the Resolve Transaction Complete (section 3.4.7.16) event on the Transaction Manager communicating with an Application facet with the following arguments:

          • The provided transaction object

          • The Aborted result

  • Otherwise:

    • If the transaction state is not Failed to Notify (section 3.2.1.3.13):

      • Signal the Resolve Transaction Complete (section 3.4.7.16) event on the Transaction Manager communicating with an Application facet with the following arguments:

        • The provided transaction object

        • The Not Committed result

    • Otherwise:

      • Set the state of the connection object referenced by each Enlistment object in the transaction's Phase Two Enlistment list to Ended.

      • Signal the Forget Transaction (section 3.2.7.22) event on the Core Transaction Manager Facet (section 1.3.3.3.1) with the provided transaction object.

      • Signal the Resolve Transaction Complete (section 3.4.7.16) event on the Transaction Manager communicating with an Application facet, with the following arguments:

        • The provided transaction object

        • The Forgotten result