Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób konfigurowania funkcji magazynu wystąpień przepływu pracy SQL w celu umożliwienia trwałości przepływów pracy i usług przepływu pracy zarówno programowo, jak i przy użyciu pliku konfiguracji.
Usługa Windows Server App Fabric upraszcza proces konfigurowania trwałości. Aby uzyskać więcej informacji, zobacz Konfiguracja trwałości usługi App Fabric.
Przed użyciem funkcji magazynu wystąpień przepływu pracy SQL utwórz bazę danych używaną przez funkcję do utrwalania wystąpień przepływu pracy. Program instalacyjny programu .NET Framework 4.6.1 kopiuje pliki skryptów SQL skojarzone z funkcją magazynu wystąpień przepływu pracy SQL do folderu %WINDIR%\Microsoft.NET\Framework\v4.xxx\SQL\EN. Uruchom te pliki skryptów na bazie danych SQL Server 2005 lub SQL Server 2008, z której magazyn instancji przepływu pracy SQL ma korzystać do utrwalania instancji przepływu pracy. Najpierw uruchom plik SqlWorkflowInstanceStoreSchema.sql, a następnie uruchom plik SqlWorkflowInstanceStoreLogic.sql.
Uwaga
Aby wyczyścić bazę danych trwałości w celu utworzenia nowej bazy danych, uruchom skrypty w folderze %WINDIR%\Microsoft.NET\Framework\v4.xxx\SQL\EN w następującej kolejności.
- SqlWorkflowInstanceStoreSchema.sql
- SqlWorkflowInstanceStoreLogic.sql
Ważne
Jeśli nie utworzysz bazy danych stałości, funkcjonalność SQL Workflow Instance Store zgłasza wyjątek podobny do poniższego, kiedy host próbuje utrwalić przepływy pracy.
System.Data.SqlClient.SqlException: Nie można odnaleźć procedury składowanej "System.Activities.DurableInstancing.CreateLockOwner"
W poniższych sekcjach opisano sposób włączania trwałości przepływów pracy i usług przepływu pracy przy użyciu magazynu wystąpień przepływu pracy SQL. Aby uzyskać więcej informacji o właściwościach magazynu wystąpień przepływu pracy SQL, zobacz Właściwości magazynu wystąpień przepływu pracy SQL.
Włączanie trwałości dla samodzielnie hostowanych przepływów pracy, które wykorzystują aplikację WorkflowApplication
Możesz włączyć trwałość dla samodzielnie hostowanych przepływów pracy, które używają WorkflowApplication, przy użyciu modelu obiektowego SqlWorkflowInstanceStore. Poniższa procedura zawiera kroki, które należy wykonać.
Dodaj odwołanie do System.Activities.DurableInstancing.dll.
Dodaj następującą instrukcję w górnej części pliku źródłowego po istniejących instrukcjach "using".
using System.Activities.DurableInstancing;Skonstruuj element SqlWorkflowInstanceStore i przypisz go do InstanceStore obiektu WorkflowApplication , jak pokazano w poniższym przykładzie kodu.
SqlWorkflowInstanceStore store = new SqlWorkflowInstanceStore("Server=.\\SQLEXPRESS;Initial Catalog=Persistence;Integrated Security=SSPI"); WorkflowApplication wfApp = new WorkflowApplication(new Workflow1()); wfApp.InstanceStore = store;Uwaga
W zależności od wersji programu SQL Server, nazwa serwera w parametrze połączenia może być inna.
Wywołaj metodę Persist na obiekcie WorkflowApplication, aby utrwalić przepływ pracy, lub metodę Unload, aby utrwalić i zwolnić przepływ pracy. Można również obsłużyć zdarzenie PersistableIdle zgłoszone przez obiekt WorkflowApplication i zwrócić odpowiedni członek (Persist lub Unload) z PersistableIdleAction.
wfApp.PersistableIdle = delegate(WorkflowApplicationIdleEventArgs e) { return PersistableIdleAction.Persist; };
Uwaga
Zobacz instrukcje: Tworzenie i uruchamianie długotrwałego przepływu pracy w samouczku Wprowadzenie, aby uzyskać instrukcje krok po kroku.
Włączanie trwałości dla własnych usług przepływu pracy korzystających z WorkflowServiceHost
Możesz włączyć trwałość dla samodzielnie hostowanych usług przepływu pracy, które używają WorkflowServiceHost programowo, korzystając z klasy SqlWorkflowInstanceStoreBehavior lub klasy DurableInstancingOptions.
Używanie klasy SqlWorkflowInstanceStoreBehavior
Poniższa procedura zawiera kroki użycia SqlWorkflowInstanceStoreBehavior klasy w celu włączenia trwałości dla usług przepływu pracy hostowanych samodzielnie.
Dodaj odwołanie do System.ServiceModel.dll.
Dodaj następującą instrukcję w górnej części pliku źródłowego po istniejących instrukcjach "using".
using System.ServiceModel.Activities.Description;Utwórz wystąpienie elementu
WorkflowServiceHosti dodaj punkty końcowe dla usługi zarządzania przepływem pracy.WorkflowServiceHost host = new WorkflowServiceHost(new CountingWorkflow(), new Uri(hostBaseAddress)); host.AddServiceEndpoint("ICountingWorkflow", new BasicHttpBinding(), "");Skonstruuj
SqlWorkflowInstanceStoreBehaviorobiekt i ustaw właściwości obiektu zachowania.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);Otwórz hosta usługi przepływu pracy.
host.Open();
Użyj właściwości DurableInstancingOptions
Po zastosowaniu SqlWorkflowInstanceStoreBehavior na WorkflowServiceHost, DurableInstancingOptions.InstanceStore jest ustawione na SqlWorkflowInstanceStore, utworzonego przy użyciu wartości konfiguracyjnych. Możesz to zrobić programowo, aby ustawić właściwość DurableInstancingOptions obiektu WorkflowServiceHost bez użycia klasy SqlWorkflowInstanceStoreBehavior, co pokazano w przykładzie kodu poniżej.
workflowServiceHost.DurableInstancingOptions.InstanceStore = sqlInstanceStoreObject;
Włączanie trwałości dla usług przepływu pracy hostowanych przez WAS, które używają WorkflowServiceHost, przy użyciu pliku konfiguracyjnego.
Możesz włączyć trwałość dla usług przepływu pracy hostowanych samodzielnie lub usług aktywacji procesów systemu Windows (WAS) przy użyciu pliku konfiguracji. Usługa przepływu pracy hostowana przez WAS używa elementu WorkflowServiceHost, tak jak usługi przepływu pracy, które są samodzielnie hostowane.
Zachowanie SqlWorkflowInstanceStoreBehavior usługi, które umożliwia wygodną zmianę właściwości SQL Workflow Instance Store za pomocą konfiguracji XML. W przypadku usług przepływu pracy hostowanych przez WAS użyj pliku Web.config. W poniższym przykładzie konfiguracji pokazano, jak skonfigurować magazyn wystąpień przepływu pracy SQL przy użyciu sqlWorkflowInstanceStore elementu zachowania w pliku konfiguracji.
<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>
Ważne
Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Jeśli łączysz się z usługą Azure SQL, tożsamości zarządzane dla zasobów platformy Azure to zalecana metoda uwierzytelniania.
Jeśli nie ustawisz wartości dla właściwości connectionString lub connectionStringName, magazyn wystąpień przepływu pracy SQL używa domyślnej nazwanej frazy połączenia DefaultSqlWorkflowInstanceStoreConnectionString.
Po zastosowaniu SqlWorkflowInstanceStoreBehavior na WorkflowServiceHost, DurableInstancingOptions.InstanceStore jest ustawione na SqlWorkflowInstanceStore, utworzonego przy użyciu wartości konfiguracyjnych. Można wykonać to samo programowo, aby użyć SqlWorkflowInstanceStore razem z WorkflowServiceHost bez użycia elementu zachowania usługi.
workflowServiceHost.DurableInstancingOptions.InstanceStore = sqlInstanceStoreObject;
Ważne
Zaleca się, aby nie przechowywać poufnych informacji, takich jak nazwy użytkowników i hasła w pliku Web.config. Jeśli przechowujesz poufne informacje w pliku Web.config, należy zabezpieczyć dostęp do pliku Web.config przy użyciu list kontroli dostępu systemu plików (ACL). Ponadto można również zabezpieczyć wartości konfiguracji w pliku konfiguracji, jak wspomniano w artykule Szyfrowanie informacji o konfiguracji przy użyciu konfiguracji chronionej.
Elementy Machine.config związane z funkcją magazynu wystąpień przepływu pracy SQL
Instalacja programu .NET Framework 4.6.1 dodaje następujący element rozszerzenia zachowania do pliku Machine.config, aby można było użyć <sqlWorkflowInstanceStore> elementu zachowania usługi w pliku konfiguracji, aby skonfigurować trwałość usług.
<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>