Sdílet prostřednictvím


Postupy: Povolení trvalosti SQL pro pracovní postupy a služby pracovních postupů

Tento článek popisuje, jak nakonfigurovat funkci Úložiště instancí pracovního postupu SQL tak, aby umožňovala trvalost pracovních postupů a služeb pracovních postupů prostřednictvím kódu programu i pomocí konfiguračního souboru.

Windows Server App Fabric zjednodušuje proces konfigurace trvalosti. Další informace najdete v tématu Konfigurace trvalosti App Fabric.

Před použitím funkce úložiště instancí pracovního postupu SQL vytvořte databázi, kterou tato funkce používá k zachování instancí pracovního postupu. Instalační program rozhraní .NET Framework 4.6.1 zkopíruje soubory skriptu SQL přidružené k funkci úložiště instancí pracovního postupu SQL do složky %WINDIR%\Microsoft.NET\Framework\v4.xxx\SQL\EN. Spusťte tyto soubory skriptů pro databázi SYSTÉMU SQL Server 2005 nebo SQL Server 2008, kterou má úložiště instancí pracovního postupu SQL použít k zachování instancí pracovního postupu. Nejprve spusťte soubor SqlWorkflowInstanceStoreSchema.sql a pak spusťte soubor SqlWorkflowInstanceStoreLogic.sql.

Poznámka:

Pokud chcete databázi trvalosti vyčistit, aby měla novou databázi, spusťte skripty v adresáři %WINDIR%\Microsoft.NET\Framework\v4.xxx\SQL\EN v následujícím pořadí.

  1. SqlWorkflowInstanceStoreSchema.sql
  2. SqlWorkflowInstanceStoreLogic.sql

Důležité

Pokud nevytvoříte databázi trvalosti, funkce úložiště instancí pracovního postupu SQL vyvolá výjimku podobnou následující, když se hostitel pokusí zachovat pracovní postupy.

System.Data.SqlClient.SqlException: Nepodařilo se najít uloženou proceduru System.Activities.DurableInstancing.CreateLockOwner.

Následující části popisují, jak povolit trvalost pracovních postupů a služeb pracovních postupů pomocí úložiště instancí pracovního postupu SQL. Další informace o vlastnostech úložiště instancí pracovního postupu SQL naleznete v tématu Vlastnosti úložiště instancí pracovního postupu SQL.

Povolení trvalosti pro pracovní postupy v místním prostředí, které používají WorkflowApplication

Trvalost můžete povolit pro pracovní postupy v místním prostředí, které používají WorkflowApplication programově pomocí objektového SqlWorkflowInstanceStore modelu. Následující postup obsahuje postup, jak to provést.

  1. Přidejte odkaz na System.Activities.DurableInstancing.dll.

  2. Za existující příkazy using přidejte následující příkaz na začátek zdrojového souboru.

    using System.Activities.DurableInstancing;
    
  3. SqlWorkflowInstanceStore Vytvořte a přiřaďte ho k InstanceStore tomuto příkladu WorkflowApplication kódu, jak je znázorněno v následujícím příkladu kódu.

    SqlWorkflowInstanceStore store =
        new SqlWorkflowInstanceStore("Server=.\\SQLEXPRESS;Initial Catalog=Persistence;Integrated Security=SSPI");
    
    WorkflowApplication wfApp =
        new WorkflowApplication(new Workflow1());
    
    wfApp.InstanceStore = store;
    

    Poznámka:

    V závislosti na vaší edici SQL Serveru se název připojovací řetězec serveru může lišit.

  4. Vyvolání Persist metody u objektu WorkflowApplication pro zachování pracovního postupu nebo Unload metody pro zachování a uvolnění pracovního postupu. Můžete také zpracovat PersistableIdle událost vyvolanou objektem WorkflowApplication a vrátit odpovídající (Persist nebo Unload) člena PersistableIdleAction.

    wfApp.PersistableIdle = delegate(WorkflowApplicationIdleEventArgs e)
    {
        return PersistableIdleAction.Persist;
    };
    

Poznámka:

Podrobné pokyny najdete v části Postupy: Vytvoření a spuštění dlouhotrvajícího pracovního postupu v kurzu Začínáme.

Povolení trvalosti pro služby pracovního postupu v místním prostředí, které používají WorkflowServiceHost

Můžete povolit trvalost pro služby pracovního postupu v místním prostředí, které používají WorkflowServiceHost programově pomocí SqlWorkflowInstanceStoreBehavior třídy nebo DurableInstancingOptions třídy.

Použití třídy SqlWorkflowInstanceStoreBehavior

Následující postup obsahuje postup použití SqlWorkflowInstanceStoreBehavior třídy k povolení trvalosti pro služby pracovního postupu v místním prostředí.

  1. Přidejte odkaz na System.ServiceModel.dll.

  2. Za existující příkazy using přidejte následující příkaz na začátek zdrojového souboru.

    using System.ServiceModel.Activities.Description;
    
  3. Vytvořte instanci služby WorkflowServiceHost pracovního postupu a přidejte koncové body.

    WorkflowServiceHost host = new WorkflowServiceHost(new CountingWorkflow(), new Uri(hostBaseAddress));
    host.AddServiceEndpoint("ICountingWorkflow", new BasicHttpBinding(), "");
    
  4. SqlWorkflowInstanceStoreBehavior Vytvořte objekt a nastavte vlastnosti objektu chování.

    SqlWorkflowInstanceStoreBehavior instanceStoreBehavior = new SqlWorkflowInstanceStoreBehavior(connectionString);
    instanceStoreBehavior.HostLockRenewalPeriod = new TimeSpan(0, 0, 5);
    instanceStoreBehavior.InstanceCompletionAction = InstanceCompletionAction.DeleteAll;
    instanceStoreBehavior.InstanceLockedExceptionAction = InstanceLockedExceptionAction.AggressiveRetry;
    instanceStoreBehavior.InstanceEncodingOption = InstanceEncodingOption.GZip;
    instanceStoreBehavior.RunnableInstancesDetectionPeriod = new TimeSpan("00:00:02");
    host.Description.Behaviors.Add(instanceStoreBehavior);
    
  5. Otevřete hostitele služby pracovního postupu.

    host.Open();
    

Použití vlastnosti DurableInstancingOptions

SqlWorkflowInstanceStoreBehavior Při použití DurableInstancingOptions.InstanceStore je na objektu WorkflowServiceHost vytvořeném SqlWorkflowInstanceStore pomocí konfiguračních hodnot nastaven objekt. Stejnou programovou DurableInstancingOptions metodou můžete nastavit vlastnost WorkflowServiceHost bez použití SqlWorkflowInstanceStoreBehavior třídy, jak je znázorněno v následujícím příkladu kódu.

workflowServiceHost.DurableInstancingOptions.InstanceStore = sqlInstanceStoreObject;

Povolení trvalosti pro služby pracovních postupů hostovaných systémem WAS, které používají WorkflowServiceHost pomocí konfiguračního souboru

Pomocí konfiguračního souboru můžete povolit trvalost pro služby pracovních postupů hostovaných v místním prostředí nebo službě aktivace procesů systému Windows (WAS). Služba pracovního postupu hostovaná službou WAS používá jako služby pracovního postupu v místním prostředí hostitele WorkflowHost.

Chování SqlWorkflowInstanceStoreBehaviorslužby, které umožňuje pohodlně změnit vlastnosti úložiště instancí pracovního postupu SQL prostřednictvím konfigurace XML. Pro služby pracovních postupů hostovaných v WAS použijte soubor Web.config. Následující příklad konfigurace ukazuje, jak nakonfigurovat úložiště instancí pracovního postupu SQL pomocí sqlWorkflowInstanceStore elementu chování v konfiguračním souboru.

<serviceBehaviors>
    <behavior name="">
        <sqlWorkflowInstanceStore
                    connectionString="Data Source=(local);Initial Catalog=DefaultPersistenceProviderDb;Integrated Security=True;Async=true"
                    instanceEncodingOption="GZip | None"
                    instanceCompletionAction="DeleteAll | DeleteNothing"
                    instanceLockedExceptionAction="NoRetry | BasicRetry |AggressiveRetry"
                    hostLockRenewalPeriod="00:00:30"
                    runnableInstancesDetectionPeriod="00:00:05" />

    </behavior>
</serviceBehaviors>

Důležité

Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Pokud se připojujete k Azure SQL, spravované identity pro prostředky Azure se doporučují metodou ověřování.

Pokud nenastavíte hodnoty pro connectionString vlastnost nebo connectionStringName vlastnost, použije úložiště instancí pracovního postupu SQL výchozí název připojovací řetězec DefaultSqlWorkflowInstanceStoreConnectionString.

SqlWorkflowInstanceStoreBehavior Při použití DurableInstancingOptions.InstanceStore je na objektu WorkflowServiceHost vytvořeném SqlWorkflowInstanceStore pomocí konfiguračních hodnot nastaven objekt. Stejný postup můžete provést programově, abyste ho mohli použít SqlWorkflowInstanceStore WorkflowServiceHost bez použití elementu chování služby.

workflowServiceHost.DurableInstancingOptions.InstanceStore = sqlInstanceStoreObject;

Důležité

Doporučujeme neukládat citlivé informace, jako jsou uživatelská jména a hesla, do souboru Web.config. Pokud do souboru Web.config ukládáte citlivé informace, měli byste zabezpečit přístup k souboru Web.config pomocí seznamů řízení přístupu (ACL) systému souborů. Kromě toho můžete také zabezpečit konfigurační hodnoty v rámci konfiguračního souboru, jak je uvedeno v části Šifrování konfiguračních informací pomocí chráněné konfigurace.

Instalace rozhraní .NET Framework 4.6.1 přidá do souboru Machine.config následující prvek rozšíření chování, abyste mohli použít <sqlWorkflowInstanceStore> element chování služby v konfiguračním souboru ke konfiguraci trvalosti pro vaše služby.

<configuration>
    <system.serviceModel>
        <extensions>
            <behaviorExtensions>
                <add name="sqlWorkflowInstanceStore" type="System.Activities.DurableInstancing.SqlWorkflowInstanceStoreElement, System.Activities.DurableInstancing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
            </behaviorExtensions>
        </extensions>
    </system.serviceModel>
</configuration>