Munkafolyamat-tranzakciók

A WF támogatást nyújt a tranzakciókban System.Transactions való részvételhez azáltal, hogy a TransactionScope tevékenység segítségével hatókört biztosít egy tranzakciós munkaegységre. Bár a System.Transactions.TransactionScope tevékenységnek explicit módon kell befejeződnie, a System.Activities.Statements.TransactionScope tevékenység implicit módon befejezettnek hívható a tranzakción a sikeres befejezés után. Bármely tevékenység, amely a BodyTransactionScope tevékenységében szerepel, részt vesz a tranzakcióban. A Workflow Foundation a TransactedReceiveScope tevékenység használatával tranzakciókat képes továbbítani egy munkafolyamatba. A tevékenységhez TransactionScope hasonlóan a Body tranzakcióban szereplő összes tevékenység is részt vesz a tranzakcióban. WF biztosítja, hogy a Transaction.Current-tól függő tevékenységek mind TransactionScope-el és TransactedReceiveScope-vel működjenek. Ha a rendszer által biztosított tevékenységek nem felelnek meg az összes követelménynek, egyéni tevékenységek hozhatók létre a RuntimeTransactionHandle speciális folyamat- és tranzakcióvezérlési forgatókönyvek engedélyezéséhez.

Az alábbi példában egy munkafolyamat olyan tevékenységből áll Sequence , amely gyermektevékenységeket tartalmaz, beleértve egy TransactionScope tevékenységet is. A Body tevékenység által inicializált tranzakció alatt a TransactionScope tevékenységeket a TransactionScope hajtja végre.

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

További információért tekintse meg a TransactedReceiveScope használatát, és olvassa el a tranzakciók munkafolyamat-szolgáltatásokba és onnan kifelé történő áramlását.

Lásd még