Instrukcje: włączanie trwałości przepływów pracy i usług przepływu pracy
W tym artykule opisano sposób włączania trwałości przepływów pracy i usług przepływu pracy.
Włączanie trwałości przepływów pracy
Magazyn wystąpień można skojarzyć z aplikacją WorkflowApplication przy użyciu InstanceStore właściwości WorkflowApplication klasy . Metoda Persist zapisuje lub utrwala przepływ pracy w magazynie wystąpień skojarzonym z aplikacją. Metoda Unload utrwala przepływ pracy w magazynie wystąpień, a następnie zwalnia wystąpienie z pamięci. Metoda Load ładuje przepływ pracy do pamięci przy użyciu danych przepływu pracy przechowywanych w magazynie trwałości wystąpienia.
Metoda Persist wykonuje następujące kroki:
- Wstrzymuje harmonogram przepływu pracy i czeka, aż przepływ pracy wejdzie w stan bezczynności.
- Utrwala lub zapisuje przepływ pracy w magazynie trwałości.
- Wznawia harmonogram przepływu pracy.
Metoda Unload wykonuje następujące kroki:
- Wstrzymuje harmonogram przepływu pracy i czeka, aż przepływ pracy wejdzie w stan bezczynności.
- Utrwala lub zapisuje przepływ pracy w magazynie trwałości.
- Usuwa wystąpienie przepływu pracy w pamięci.
Zarówno metody Utrwalanie, jak i Zwalnianie będą blokowane, gdy przepływ pracy znajduje się w strefie bez utrwalonej, dopóki przepływ pracy nie opuści strefy bez trwałości. Metoda kontynuuje operację utrwalania lub zwalniania po zakończeniu bez utrwalonej strefy. Jeśli strefa nietrwała nie zostanie ukończona przed upływem limitu czasu lub jeśli proces trwałości trwa zbyt długo, TimeoutException
zostanie zgłoszony błąd.
Włączanie trwałości w kodzie
Element członkowski WorkflowServiceHost DurableInstancingOptions klasy ma właściwość o nazwie InstanceStore, której można użyć do skojarzenia magazynu wystąpień z elementem WorkflowServiceHost.
// wsh is an instance of WorkflowServiceHost class
wsh.DurableInstancingOptions.InstanceStore = new SqlWorkflowInstanceStore();
Po otwarciu elementu WorkflowServiceHost trwałość jest automatycznie włączona, jeśli parametr DurableInstancingOptions.InstanceStore nie ma wartości null.
Zazwyczaj zachowanie usługi zapewnia konkretny magazyn wystąpień, który ma być używany z hostem usługi przepływu pracy przy użyciu właściwości InstanceStore . Na przykład SqlWorkflowInstanceStoreBehavior
tworzy wystąpienie klasy SqlWorkflowInstanceStore, konfiguruje je i przypisuje je do rozszerzenia DurableInstancingOptions.InstanceStore.
Włączanie trwałości przy użyciu pliku konfiguracji aplikacji
Trwałość można włączyć przy użyciu pliku konfiguracji aplikacji, dodając następujący kod do pliku app.config lub web.config:
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="myBehavior">
<sqlWorkflowInstanceStore connectionString="Data Source=myDatabaseServer;Initial Catalog=myPersistenceDatabase" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
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.