Beibehalten einer Workflowanwendung

Dieses Thema gilt für Windows Workflow Foundation 4.

In diesem Beispiel wird veranschaulicht, wie eine WorkflowApplication ausgeführt wird, wie sie im Leerlauf entladen wird und wie sie neu geladen wird, um ihre Ausführung fortzusetzen.

Beispieldetails

WorkflowApplication ist ein Host für eine einzelne Workflowinstanz, die eine einfache Schnittstelle bereitstellt und mehrere der allgemeineren Hostingszenarien aktiviert. Ein solches Szenario stellen lang ausgeführte, durch Dauerhaftigkeit unterstützte Workflows dar. Die Hoststeuerung der Dauerhaftigkeit wird entweder durch Aufrufen eines Dauerhaftigkeitvorgangs in der WorkflowApplication oder durch das Behandeln eines WorkflowApplication-Ereignisses und die Angabe, dass die WorkflowApplication dauerhaft sein soll, durchgeführt.

Der Beispielworkflow ist eine WriteLine-Aktivität, die den Benutzer zur Eingabe seines Namens auffordert, eine ReadLine-Aktivität zum Empfangen des Namens durch die Wiederaufnahme eines Bookmark als Eingabe und einer anderen WriteLine-Aktivität zum Ausgeben eines Grußes an den Benutzer. Wenn ein Workflow auf eine Eingabe wartet, stellt dies einen natürlichen Punkt für Dauerhaftigkeit dar. Dies wird häufig als Idle-Punkt bezeichnet. WorkflowApplication löst das Idle-Ereignis immer dann aus, wenn das Workflowprogramm beibehalten werden kann, auf die Wiederaufnahme eines Lesezeichens wartet und keine andere Verarbeitung erfolgt. Im Workflow dieses Beispiels tritt dieser Punkt sofort auf, nachdem die ReadLine-Aktivität mit der Ausführung begonnen hat.

Eine WorkflowApplication wird eingerichtet, um Dauerhaftigkeit mit einem InstanceStore auszuführen. In diesem Beispiel wird der SqlWorkflowInstanceStore verwendet. Der InstanceStore muss der InstanceStore-Eigenschaft zugeordnet werden, bevor die WorkflowApplication ausgeführt wird.

Im Beispiel wird dem PersistableIdle-Ereignis ein Handler hinzugefügt. Der Handler für dieses Ereignis gibt durch die Rückgabe einer PersistableIdleAction an, was die WorkflowApplication durchführen soll. Wenn Unload zurückgegeben wird, wird die WorkflowApplication entladen.

Im Beispiel wird dann eine Benutzereingabe akzeptiert, und der beibehaltene Workflow wird in eine neue WorkflowApplication geladen. Dies geschieht durch das Erstellen einer neuen WorkflowApplication, Neuerstellen des InstanceStore und Zuordnen der abgeschlossenen und entladenen Ereignisse zur Instanz sowie dem anschließenden Aufrufen von Load mit der ID der Ziel-Workflowinstanz. Sobald die Instanz abgerufen wurde, wird das Lesezeichen der ReadLine-Aktivität fortgesetzt. Der Workflow setzt die Ausführung aus der ReadLine-Aktivität bis zum Abschluss fort. Wenn der Workflow abgeschlossen und entladen wurde, wird der InstanceStore ein letztes Mal aufgerufen, um den Workflow zu löschen.

So verwenden Sie dieses Beispiel

  1. Öffnen Sie eine Visual Studio 2010-Eingabeaufforderung.

    Für dieses Beispiel ist SQL Server Express erforderlich, das standardmäßig zusammen mit Visual Studio 2010 installiert wird.

  2. Navigieren Sie zum Beispielverzeichnis (\WF\Basic\Persistence\InstancePersistence\CS), und führen Sie CreateInstanceStore.cmd aus.

    Dd807516.Caution(de-de,VS.100).gifVorsicht:
    Das Skript "CreateInstanceStore.cmd" versucht, die Datenbank auf der Standardinstanz von SQL Server 2008 Express zu erstellen. Wenn Sie die Datenbank auf einer anderen Instanz installieren möchten, ändern Sie hierfür das Skript.

  3. Öffnen Sie mit Visual Studio 2010 die Persistence.sln-Projektmappendatei, und drücken Sie F6, um sie zu erstellen.

    Dd807516.Caution(de-de,VS.100).gifVorsicht:
    Wenn Sie die Datenbank auf einer nicht standardmäßigen Instanz von SQL Server installiert haben, aktualisieren Sie vor dem Erstellen der Projektmappe die Verbindungszeichenfolge im Code.

  4. Führen Sie das Beispiel mit Administratorberechtigungen aus, indem Sie im Windows-Explorer zum BIN-Verzeichnis des Projekts wechseln (\WF\Basic\Persistence\InstancePersistence\bin\Debug), mit der rechten Maustaste auf Workflow.exe klicken und Als Administrator ausführen auswählen.

So entfernen Sie die Instanzspeicherdatenbank

  1. Öffnen Sie eine Visual Studio 2010-Eingabeaufforderung.

  2. Navigieren Sie zum Beispielverzeichnis, und führten Sie RemoveInstanceStore.cmd aus.

Dd807516.Important(de-de,VS.100).gif Hinweis:
Die Beispiele sind möglicherweise bereits auf dem Computer installiert. Überprüfen Sie das folgende (standardmäßige) Verzeichnis, bevor Sie fortfahren.

<Installationslaufwerk>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)- und WF-Beispiele herunterzuladen. Dieses Beispiel befindet sich im folgenden Verzeichnis.

<Installationslaufwerk>:\WF_WCF_Samples\WF\Basic\Persistence\InstancePersistence