Freigeben über


Vorgehensweise: Aktivieren der Persistenz für Workflows und Workflowdienste

In diesem Artikel wird beschrieben, wie die Persistenz für Workflows und Workflowdienste aktiviert wird.

Aktivieren der Persistenz für Workflows

Mit der InstanceStore-Eigenschaft der WorkflowApplication-Klasse können Sie einen Instanzspeicher einer WorkflowApplication zuordnen. Die Persist-Methode speichert einen Workflow im Instanzspeicher, der der Anwendung zugeordnet ist, oder behält ihn darin bei. Die Unload-Methode speichert einen Workflow im Instanzspeicher und entlädt die Instanz daraufhin aus dem Arbeitsspeicher. Die Load-Methode lädt einen Workflow mithilfe der im Instanzpersistenzspeicher gespeicherten Workflowdaten in den Arbeitsspeicher.

Die Persist-Methode führt die folgenden Schritte aus:

  1. Anhalten des Workflowplaners und Warten, bis der Workflow in den Leerlauf wechselt
  2. Beibehalten oder Speichern des Workflows im persistenten Speicher
  3. Fortsetzen des Workflowplaners

Die Unload-Methode führt die folgenden Schritte aus:

  1. Anhalten des Workflowplaners und Warten, bis der Workflow in den Leerlauf wechselt
  2. Beibehalten oder Speichern des Workflows im persistenten Speicher
  3. Löschen der Workflowinstanz aus dem Arbeitsspeicher

Die Persist-Methode und die Unload-Methode führen beide zu einer Blockierung, während ein Workflow sich in einer Zone ohne Persistenz befindet, bis der Workflow sich nicht mehr in dieser Zone befindet. Die Methode setzt den Beibehaltungs- bzw. Entladungsvorgang fort, nachdem die Zone ohne Persistenz beendet wurde. Wenn die Zone ohne Persistenz nicht beendet wird, bevor das Timeout verstreicht, oder wenn der Persistenzprozess zu lange dauert, wird eine TimeoutException ausgelöst.

Aktivieren der Persistenz im Code

Der DurableInstancingOptions-Member der WorkflowServiceHost-Klasse verfügt über eine Eigenschaft namens InstanceStore, mit der Sie WorkflowServiceHost einen Instanzspeicher zuordnen können.

// wsh is an instance of WorkflowServiceHost class
wsh.DurableInstancingOptions.InstanceStore = new SqlWorkflowInstanceStore();

Beim Öffnen des WorkflowServiceHost wird die Persistenz automatisch aktiviert, wenn der DurableInstancingOptions.InstanceStore nicht NULL ist.

In der Regel wird über das Dienstverhalten mithilfe der InstanceStore-Eigenschaft der konkrete Instanzspeicher bereitgestellt, der mit einem Workflowdiensthost verwendet werden soll. Beispielsweise erstellt SqlWorkflowInstanceStoreBehavior eine Instanz von SqlWorkflowInstanceStore, konfiguriert sie und weist sie DurableInstancingOptions.InstanceStore zu.

Aktivieren der Persistenz mithilfe einer Anwendungskonfigurationsdatei

Persistenz kann mithilfe einer Anwendungskonfigurationsdatei aktiviert werden, indem Sie der Datei "web.config" oder "app.config" folgenden Code hinzufügen:

<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="myBehavior">
          <sqlWorkflowInstanceStore connectionString="Data Source=myDatabaseServer;Initial Catalog=myPersistenceDatabase" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Wichtig

Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden. Wenn Sie eine Verbindung mit Azure SQL herstellen, ist Managed Identities for Azure Resources die empfohlene Authentifizierungsmethode.