Eine kurze Pause tut immer gut, das ist auch in Workflows so! Denn irgendwann kommt jeder Matrix42 Workflow-Ersteller in die Situation, dass man zwischen 2 Aktionen im Workflow eine Pause machen will, weil z.B. auf die Rückmeldung oder Verarbeitung von Drittsystemen gewartet werden muss.
Hier zeige ich dir, wie das geht.
Warum kein PowerShell?
Jetzt fragen sich bestimmt viele von euch, warum kein Sleep oder Wait im PowerShell verwenden? Ganz einfach, das ist eine furchtbare Idee.
Denn währen die Delay-Aktivität den Workflow wirklich anhält (verbraucht auch keine Ressourcen in der Zeit), hält ein PowerShell-Befehl nur die PowerShell-Session an. Der Workflow bleibt dadurch die ganze Zeit im Status Ausführung, was z.B. bei einem Server-Neustart oder Dienstproblem dazu führen kann, dass dieser (Workflow) einfach abstürzt oder nicht mehr reagiert.
Und genau deshalb, nehmen wir im Workflow ausschließlich die Delay-Aktivität, auch wenn es sich nur um ein paar Sekunden handelt!
Delay in Workflows verwenden
Zuerst musst du dir die Aktivität in deinen Ablauf ziehen und an der gewünschten Stelle platzieren.
Ich nehme hier als Beispiel einen Workflow in dem vorher per PowerShell ein AD-Konto erstellt und anschließend geprüft wird, ob dieses schon vorhanden ist und die SID ausgelesen wird.
Feste Zeitspanne
Um eine von uns definierte Zeitspanne von Sekunden abzuwarten, können wir folgenden Befehl verwenden:
Timespan.FromSeconds(5)
Code-Sprache: CSS (css)
Sehr praktisch, um wie hier Synchronisierungs-Invervalle abzuwarten. Alternativ zu Sekunden kannst du noch folgende Zeiteinheiten benutzen:
Zufällige Zeitspanne
Wir können allerdings alternativ mit der Rnd-Funktion auch eine zufällige Zeitspanne abwarten (in einem von uns gewählten Rahmen).
Timespan.FromSeconds((60 * Rnd) + 1)
Code-Sprache: CSS (css)
Eine ausführliche Erklärung zum VBA-Funktion Rnd findest du hier.
Zufällige Delays sind eine gute Option, um z.B. in eine Bereitstellungsworkflow der eine CSV-Datei schreib eine zufällige Zeit vor dem Schreiben abzuwarten, damit im Falle von 2 oder mehr gleichzeitig laufenden Workflow nicht alle die Datei editieren und so auf IO-Fehler laufen.