3.2.7.7 Begin Voting
The Begin Voting event MUST be signaled with the following arguments:
A transaction object
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:
Signal the Begin Voting event (see sections 3.4.7.6 and 3.6.7.6) on the enlistment's transaction manager facet field with the Enlistment object.
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: