Instanzaktivierung
Der SQL-Workflowinstanzspeicher führt eine interne Aufgabe aus, die in regelmäßigen Abständen aktiviert wird und ausführbare oder aktivierbare Workflowinstanzen in der Persistenzdatenbank ermittelt. Wenn eine ausführbare Workflowinstanz gefunden wird, erfolgt die Benachrichtigung des Workflowhosts, der die Instanz aktivieren kann. Wenn der Instanzspeicher eine aktivierbare Workflowinstanz findet, wird ein generischer Host benachrichtigt, der einen Workflowhost aktiviert, der wiederum die Workflowinstanz ausführt. In den folgenden Abschnitten dieses Themas wird der Instanzaktivierungsprozess detailliert erläutert.
Erkennen und Aktivieren von ausführbaren Workflowinstanzen
Der SQL-Workflowinstanzspeicher erkennt eine Workflowinstanz als ausführbar, wenn die Instanz sich nicht im Zustand "Angehalten" oder "Abgeschlossen" befindet und die folgenden Bedingungen erfüllt:
Die Instanz ist nicht gesperrt und weist einen ausstehenden Timer auf, der abgelaufen ist.
Die Instanz weist eine abgelaufene Sperre auf.
Die Instanz ist nicht gesperrt und weist den Zustand Wird ausgeführt auf.
Der SQL-Workflowinstanzspeicher löst das HasRunnableWorkflowEvent aus, wenn eine ausführbare Instanz gefunden wird. Anschließend wird die Überwachung gestoppt, bis TryLoadRunnableWorkflowCommand einmal für den Speicher aufgerufen wird.
Ein Workflowhost, der das HasRunnableWorkflowEvent-Element abonniert hat und die Instanz laden kann, führt das TryLoadRunnableWorkflowCommand-Element für den Instanzspeicher aus, um die Instanz in den Arbeitsspeicher zu laden. Ein Workflowhost kann eine Workflowinstanz laden, wenn die Metadateneigenschaft WorkflowServiceType des Hosts und der Instanz denselben Wert aufweist.
Erkennen und Aktivieren von aktivierbaren Workflowinstanzen
Eine Workflowinstanz wird als aktiviertbarerkannt, wenn die Instanz ausführbar ist und auf dem Computer kein Workflowhost ausgeführt wird, der die Instanz laden kann. Die Definition einer ausführbaren Workflowinstanz finden Sie weiter oben unter "Erkennen und Aktivieren von ausführbaren Workflowinstanzen".
Der SQL-Workflowinstanzspeicher löst das HasActivatableWorkflowEvent aus, wenn eine aktivierbare Workflowinstanz in der Datenbank gefunden wird. Anschließend wird die Überwachung gestoppt, bis QueryActivatableWorkflowsCommand einmal für den Speicher aufgerufen wird.
Wenn ein generischer Host, der das HasActivatableWorkflowEvent-Element abonniert hat, das Ereignis empfängt, wird das QueryActivatableWorkflowsCommand-Element für den Instanzspeicher ausgeführt, um die zur Erstellung eines Workflowhosts erforderlichen Aktivierungsparameter abzurufen. Der generische Host erstellt mit diesen Aktivierungsparametern einen Workflowhost, der die ausführbare Dienstinstanz dann lädt und ausführt.
Generische Hosts
Ein generischer Host ist ein Host, bei dem der Wert der Metadateneigenschaft WorkflowServiceType für generische Hosts auf WorkflowServiceType.Any festgelegt ist, um anzugeben, dass der Host jeden Workflowtyp verarbeiten kann. Ein generischer Host verfügt über einen XName-Parameter mit dem Namen ActivationType.
Derzeit unterstützt der SQL-Workflowinstanzspeicher generische Hosts, bei denen der Wert des ActivationType-Parameters auf WAS festgelegt ist. Wenn der ActivationType-Parameter nicht den Wert WAS aufweist, löst der SQL-Workflowinstanzspeicher einen InstancePersistenceException-Fehler aus. Der Workflowverwaltungsdienst, der mit den Hostingfeatures von Windows Server AppFabric ausgeliefert wird, ist ein generischer Host, der den Aktivierungstyp auf WASfestgelegt hat.
Zur WAS-Aktivierung erfordert ein generischer Host einen Satz von Aktivierungsparametern, um die Endpunktadresse abzuleiten, an der neue Hosts aktiviert werden können. Die Aktivierungsparameter zu WAS-Aktivierung sind der Name der Site, der Anwendungspfad relativ zur Website und der Dienstpfad relativ zur Anwendung. Der SQL-Workflowinstanzspeicher speichert diese Aktivierungsparameter während der Ausführung des SaveWorkflowCommand-Objekts.
Runnable Instances Detection Period
Die Runnable Instances Detection Period-Eigenschaft des SQL-Workflowinstanzspeichers gibt den Zeitraum an, nach dem der SQL-Workflowinstanzspeicher eine Ermittlungsaufgabe ausführt, um alle ausführbaren oder aktivierbaren Workflowinstanzen in der Persistenzdatenbank nach dem vorhergehenden Ermittlungslauf zu erkennen. Weitere Informationen zu dieser Eigenschaft finden Sie unter Ausführungsinstanzenerkennungszeitraum .