SQLStoreExtensibility
Dieses Thema gilt für Windows Workflow Foundation 4.
In diesem Beispiel werden die Verwendung und die Konfiguration von höher gestuften Eigenschaften im SQL-Workflowinstanzspeicher veranschaulicht. Beim SQL-Workflowinstanzspeicher handelt es sich um die SQL-basierte Implementierung eines Instanzspeichers. Diese ermöglicht einer Instanz das Speichern und Laden von Zuständen in eine bzw. aus einer SQL Server- oder SQL Server Express-Datenbank. Die Speichererweiterbarkeitsfunktion ermöglicht es Benutzern, Eigenschaften zu definieren, die im Instanzspeicher gespeichert werden. Diese Eigenschaften werden in einer höher gestuften Eigenschaftenansicht angezeigt, die es Benutzern ermöglicht, sie abzufragen.
Dieses Beispiel besteht aus einem Workflow, der einen Zähldienst implementiert. Wenn die Startmethode des Diensts aufgerufen wird, zählt der Dienst von 0 bis 29. Der Zählerwert wird alle zwei Sekunden erhöht. Der Workflow wird nach jeder Erhöhung des Zählerwerts gespeichert. Der aktuelle Zählerwert wird im Instanzspeicher als höher gestufte Eigenschaft gespeichert.
Der Zählworkflow wird von einem Workflowdiensthost gehostet. Die Main
-Methode des Programms führt die folgenden Aktionen aus:
Erstellt eine Instanz des Workflowdiensthosts, der den Zählworkflow hostet und die Endpunkte definiert, an denen der Zählworkflow erreicht werden kann.
Definiert das Verhalten des SQL-Workflowinstanzspeichers zur Konfiguration des SQL-Workflowinstanzspeichers. Der Speicher wird angewiesen,
CountStatus
als höher gestufte Eigenschaft zu behandeln.Erstellt einen Client, der die Startmethode des Zählworkflows aufruft.
Der Zählvorgang wird bei Programmstart automatisch gestartet. Beachten Sie, dass das Laden der Instanz und die Konfiguration des SQL-Workflowinstanzspeichers einige Sekunden dauern kann.
Um den Zählerwert als benutzerdefinierte Eigenschaft höher zu stufen, müssen die folgenden Schritte ausgeführt werden:
Die
CounterStatus
-Klasse definiert eine Instanzerweiterung mit dem Typ PersistenceParticipant, die von Aktivitäten verwendet wird, um die Zustandsvariablen anzugeben.Count
wird als schreibgeschützter Wert definiert. Wenn eine Workflowinstanz einen Persistenzpunkt erreicht, speichert die Instanzerweiterung dieCount
-Eigenschaft in die Persistenzdatensammlung.Beim Erstellen des Instanzspeichers wird eine neue Eigenschaft,
CountStatus
, durch diestore.Promote()
-Methode definiert.Die
SaveCounter
-Aktivität des Workflows weist den aktuellen Zählerwert demCount
-Statusfeld zu.
So verwenden Sie dieses Beispiel
Erstellen Sie die Instanzspeicherdatenbank.
Öffnen Sie eine Visual Studio 2010-Eingabeaufforderung.
Navigieren Sie zum Beispielverzeichnis ("\WF\Basic\Persistence\SqlStoreExtensibility\CS"), und führen Sie "CreateInstanceStore.cmd" an der Visual Studio 2010-Eingabeaufforderung aus.
Vorsicht: Das Skript "CreateInstanceStore.cmd" versucht, die Datenbank in der Standardinstanz von SQL Server 2008 Express zu erstellen. Wenn Sie die Datenbank in einer anderen Instanz installieren möchten, ändern Sie hierfür das Skript.
Öffnen Sie Visual Studio 2010, laden Sie die Projektmappe "SqlStoreExtensibility.sln", und erstellen Sie sie, indem Sie F6 drücken.
Vorsicht: Wenn Sie die Datenbank in einer nicht standardmäßigen Instanz von SQL Server installiert haben, aktualisieren Sie vor dem Erstellen der Projektmappe die Verbindungszeichenfolge im Code. Führen Sie das Beispiel mit Administratorrechten aus, indem Sie in Windows-Explorer zum Verzeichnis "bin" ("\WF\Basic\Persistence\SqlStoreExtensibility\bin\Debug") des Projekts navigieren, mit der rechten Maustaste auf "SqlStoreExtensibility.exe" klicken und Als Administrator ausführen auswählen.
So überprüfen Sie die ordnungsgemäße Funktionsfähigkeit des Beispiels
Zeigen Sie den Inhalt der Instanztabelle mithilfe von SQL Server Management Studio an, indem Sie Datenbanken, InstanceStore und dann System.ServiceModel.Activities.DurableInstancing.InstanceTable im Objekt-Explorer auswählen, mit der rechten Maustaste auf System.ServiceModel.Activities.DurableInstancing.InstanceTable klicken und Oberste 1000 Zeilen auswählen auswählen. Weitere Informationen über zu SQL Server Management Studio finden Sie unter Einführung in SQL Server Management Studio.
Achten Sie auf die aufgeführten Workflowinstanzen.
Führen Sie an einer Visual Studio 2010-Eingabeaufforderung das Skript "QueryInstanceStore.cmd" aus, das sich im Beispielverzeichnis ("\WF\Basic\Persistence\SqlStoreExtensibility") befindet.
Achten Sie auf den unter CountStatus angezeigten Zählerwert.
Führen Sie das Skript einige Male aus, um festzustellen, dass sich der CountStats-Wert ändert.
Drücken Sie die EINGABETASTE, um die Workflowanwendung zu beenden.
So deinstallieren Sie das Beispiel
- Entfernen Sie die Instanzspeicherdatenbank, indem Sie das Skript "RemoveInstanceStore.cmd" ausführen, das sich im Beispielverzeichnis ("\WF\Basic\Persistence\SqlStoreExtensibility") befindet.
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\SQLStoreExtensibility
|