3.2.7.7 Begin Voting

The Begin Voting event MUST be signaled with the following arguments:

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

  • Set the transaction state to Voting (section 3.2.1.3.5).

  • If the Phase One (section 1.3.1.2) Voter Enlistment list of the transaction is empty:

    • Signal the Voting Complete (section 3.2.7.35) event on the Core Transaction Manager Facet with the provided transaction object.

  • Otherwise:

    • For each Enlistment object in the Phase One Voter Enlistment list of the transaction:

    • If the Phase One Enlistment list of the transaction contains more than one element, or if it contains one element and the Single Phase Commit flag (defined in section 3.2.1) of the transaction is set to FALSE:

      • For each Enlistment object in the Phase One Voter Enlistment list of the transaction:

        • Signal the Begin Phase One (see section 3.6.7.3 and section 3.7.7.2) event on the enlistment's transaction manager facet field with the following argument:

          • The Enlistment object

          • The Single Phase Commit flag set to false