Vorgehensweise: Aktivieren der Persistenz für Workflows und Workflowdienste

In diesem Thema 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 für Workflowdienste 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. SqlWorkflowInstanceStoreBehavior erstellt z. B. eine Instanz des SqlWorkflowInstanceStore, konfiguriert sie und weist sie dem DurableInstancingOptions.InstanceStore zu.

Aktivieren der Persistenz für Workflowdienste 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>