Delen via


Werkstroomtransacties

WF biedt ondersteuning voor deelname aan System.Transactions transacties door de TransactionScope activiteit te gebruiken om een transacted werkeenheid te bepalen. Hoewel de System.Transactions.TransactionScope activiteit expliciet moet worden voltooid, wordt de System.Activities.Statements.TransactionScope activiteit impliciet aangeroepen voor de transactie nadat de transactie is voltooid. 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 bij de TransactionScope activiteit neemt elke activiteit in de Body transactie deel. WF zorgt ervoor dat activiteiten die afhankelijk zijn van Transaction.Current beide TransactionScope en 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 uitvoering onder de transactie geïnitialiseerd door de TransactionScope activiteit.

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" },
        }
    };
}

Zie Voor meer informatie over het gebruik TransactedReceiveScope, zie Stromende transacties naar en uit Workflow Services.

Zie ook