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í.
- SqlWorkflowInstanceStoreSchema.sql
- 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.
Přidejte odkaz na System.Activities.DurableInstancing.dll.
Za existující příkazy using přidejte následující příkaz na začátek zdrojového souboru.
using System.Activities.DurableInstancing;
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.
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í.
Přidejte odkaz na System.ServiceModel.dll.
Za existující příkazy using přidejte následující příkaz na začátek zdrojového souboru.
using System.ServiceModel.Activities.Description;
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(), "");
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);
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í SqlWorkflowInstanceStoreBehavior
služ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.
Elementy Machine.config související s funkcí úložiště instancí pracovního postupu SQL
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>