Delen via


Werkstroomtransacties

WF biedt ondersteuning voor deelname aan System.Transactions transacties door de TransactionScope activiteit te gebruiken om een getransacteerde werkeenheid af te bakenen. Hoewel de System.Transactions.TransactionScope expliciet moet worden voltooid, roept de System.Activities.Statements.TransactionScope activiteit impliciet de voltooiing van de transactie op bij succesvolle afronding. Alle activiteiten die deel uitmaken van de BodyTransactionScope activiteit nemen deel aan de transactie. WF kan transacties naar een werkstroom stromen via het gebruik van de TransactedReceiveScope activiteit. Net als de activiteit TransactionScope neemt elke activiteit die binnen Body is opgenomen deel aan de transactie. WF zorgt ervoor dat activiteiten die afhankelijk zijn van Transaction.Current werken met zowel TransactionScope als TransactedReceiveScope. Als de door het systeem geleverde activiteiten niet aan alle vereisten voldoen, kunnen aangepaste activiteiten worden gebouwd met behulp van de RuntimeTransactionHandle optie geavanceerde scenario's voor stroom- en transactiebeheer in te schakelen.

In het volgende voorbeeld wordt een werkstroom samengesteld die bestaat uit een Sequence activiteit die onderliggende activiteiten bevat, waaronder een TransactionScope activiteit. De Body activiteiten van de TransactionScope worden uitgevoerd onder de door de TransactionScope activiteit geïnitieerde transactie.

static Activity ScenarioOne()
{
    return new Sequence
    {
        Activities =
        {
            new WriteLine { Text = "    Begin workflow" },

            new TransactionScope
            {
                Body = new Sequence
                {
                    Activities =
                    {
                        new WriteLine { Text = "    Begin TransactionScope" },

                        new PrintTransactionId(),

                        new TransactionScopeTest(),

                        new WriteLine { Text = "    End TransactionScope" },
                    },
                },
            },

            new WriteLine { Text = "    End workflow" },
        }
    };
}

Voor meer informatie over het gebruik van TransactedReceiveScope, zie Transacties doorsturen naar en uit Workflow Services.

Zie ook