Workflow-Aktivität „Sperre“
Die Aktivität Sperre verhindert, dass andere Instanzen dieses Workflows nach dieser Aktivität fortgesetzt werden, bis die Sperre aufgehoben wird.
Mehrere Instanzen desselben Workflows können gleichzeitig ausgeführt werden. Beispiel: Wenn ein Workflow ausgelöst wird, wenn ein Datensatz einer bestimmten Tabelle hinzugefügt wird. Dieser Workflow wird mehrmals ausgelöst, wenn mehrere Datensätze nacheinander hinzugefügt werden, einmal durch jedes Einfügen von Datensätzen. Sie können die Sperraktivität verwenden, um sicherzustellen, dass diese Instanz des Workflows eine oder mehrere Aktivitäten abgeschlossen hat, bevor eine andere Instanz des Workflows fortfahren kann.
Ein Workflow kann eine Sperre mit der Aktivität Entsperren explizit aufheben. Die Sperre kann auch aufgehoben werden, wenn die Max. Dauer erreicht ist.
Wenn eine Instanz des Workflows die Aktivität Sperre erreicht, wird versucht, eine Sperre mit dem in der Sperraktivität angegebenen Schlüssel abzurufen. Wenn eine andere Instanz die Sperre bereits abgerufen und noch nicht aufgehoben hat, schlägt dieser Sperrversuch fehl. Die Instanz versucht weiterhin, die Sperre abzurufen, bis Max. Versuche erreicht ist.
Es wird empfohlen, vor der Sperraktivität eine Timer-Aktivität von einer Sekunde einzufügen. Hiermit kann der seltene Fall verhindert werden, dass die Sperraktivität eine Workflow-Instanz nicht von einer anderen unterscheiden kann. Dieser Fall kann eintreten, weil die Entität, die die Sperre besitzt, nicht die spezifische Workflow-Instanz, sondern der Code-Ausführungsthread ist, in dem diese Instanz ausgeführt wird. In den meisten Fällen wird jede Workflow-Instanz auf einem anderen Thread ausgeführt. Durch das Hinzufügen einer Timer-Aktivität wird sichergestellt, dass dies der Fall ist.
- Freigabeaktivitäten
- Aufgabenaktivitäten
- Timer-Aktivitäten
- Aktivität „Auf Bedingung warten“
- Aktivität „Auf WF-Ereignis warten“
- MID-Serveraktivitäten wie ein PowerShell-Skript
Ergebnisse
| Ergebnis | Beschreibung |
|---|---|
| Erfolg | Die Aktivität hat erfolgreich eine Sperre abgerufen. Diese Instanz des Workflows kann über diesen Punkt hinaus fortgesetzt werden, andere Instanzen können jedoch erst fortfahren, wenn die Sperre freigegeben wird. |
| Fehler | Nachdem Max. Versuche unternommen wurden, die Sperre abzurufen, konnte die Aktivität die Sperre nicht abrufen. |
Eingabevariablen
Eingabevariablen bestimmen das anfängliche Verhalten der Aktivität.
| Feld | Beschreibung |
|---|---|
| Schlüssel | Ein eindeutiger Mutex-Schlüssel. Die Aktivität Entsperren verwendet diesen Schlüssel, um die Sperre aufzuheben. |
| Dauer | |
| Max. Dauer | Die maximale Dauer der Sperre. Die Sperre wird nach Erreichen dieser Dauer aufgehoben. Das Aufheben einer Sperre entspricht der Ausführung der Aktivität Entsperren. |
| Sperrversuche Geben Sie an, wie sich die Aktivität verhält, wenn der Sperrversuch abgelehnt wird. Wenn der endgültige Sperrversuch fehlschlägt, wird der Aktivitätsstatus auf „Zeitüberschreitung“ und das Aktivitätsergebnis auf „fehlgeschlagen“ festgelegt. |
|
| Max. Versuche | Geben Sie an, wie oft die Aktivität maximal versuchen kann, die Sperre abzurufen. |
| Verzögerung zwischen Versuchen | Der Zeitraum, der nach einem fehlgeschlagenen Sperrversuch verstreichen muss, bevor ein weiterer Sperrversuch zulässig ist. |
Status
Der Aktivitätsstatus teilt der Workflow-Engine mit, wie mit der Aktivität verfahren werden soll.
| Status | Beschreibung |
|---|---|
| Warten | Die Workflow-Engine wartet darauf, eine Sperre abzurufen. |
| Fertig | Die Aktivität hat die Sperre erfolgreich abgerufen. |
| Zeitüberschreitung | Die Aktivität konnte innerhalb der durch die Eingabevariable Max. Versuche angegebenen Anzahl von Versuchen keine Sperre abrufen. |