Timer
Funktionsbeschreibung und Anwendung
Der Timer-Block kann einlaufende Nachrichten verzögern. Im Detail besitzt der Block die folgenden Events:
a) Start bzw. Neustart des Timers.
Startet den Timer oder startet einen laufenden Timer von vorn.
Es wird jedes mal eine Action (falls konfiguriert) OnStartEvent
ausgelöst.
Der Event Trigger ist über die Bedingungen in OnStartEvent.conditions
festzulegen.
b) Cancel Timer. Ein laufender Timer wird aufgrund einer Nachricht gestoppt und die Action OnCancelEvent
ausgeführt.
Der Event Trigger ist über die Bedingungen in OnCancelEvent.conditions
festzulegen.
c) Timer Expired. Ein Timer hat die konfigurierte Zeitspanne erreicht.
Das Event wird nur durch den Timer getriggert und kann nicht per Bedingung konfiguriert werden.
Das Event OnExpiredEvent
ausgelöst, wenn konfiguriert wird die entsprechende Action ausgeführt.
Die conditions
wurden durch den Condition-Builder ersetzt.
Dieser steht in folgenden Events zur Verfügung:
-
OnStartEvent
-
OnCancelEvent
Der Condition Builder ermöglicht die Konfiguration über den Visual Editor. Es können folgende Werte konfiguriert werden:
-
Source (header, body, context)
-
Property
-
Operator
-
Comparison value
Im Text Editor werden die konfigurierten conditions
angezeigt.
Die angegebenen conditions
müssen alle erfüllt sein (true), um den Trigger/die Aktion zu erhalten/auszulösen.
Der Zugriff auf die Nachrichten Properties der Timer Start Nachricht über body_<BODY_KEY>
und header_<HEADER_KEY>
ist ebenso wie in den Blöcken RuleEngine und Router möglich.
Als Aktion auf ein Event stehen die folgenden Möglichkeiten über das Property Type
zur Wahl:
-
SendMessage
⇒ Sende eine vordefinierte Nachricht. Der Nachrichteninhalt ist unter Data zu konfigurieren. -
SendStartMessage
⇒ Sende die (komplette) Nachricht aus, die zuletzt zum Start des Timers geführt hat. Dertimestamp
der Nachricht wird mit dem Aussenden aktualisiert.
Wird ein Timer bspw. mit den identischen Bedingungen für Start und Cancel konfiguriert und treffen diese mit einem Nachrichteneingang zu, so wird der Timer gestartet und sofort wieder gestoppt und die zugehörigen Aktionen ausgeführt.
Die folgende Tabelle erläutertet die Konfigurationsparameter des Timer-Blocks.
Parameter | Beschreibung |
---|---|
Name |
Name der Blockinstanz. |
Into |
Name der Blockinstanz des Folgeblocks an welchen Ausgabenachrichten weitergeleitet werden sollen. mit Folgeblöcken verbunden und Ausgabenachrichten an die entsprechend angegeben Blockinstanzen (Namen) weitergeleitet werden. |
Timespan(ms) |
Zeitspanne für den Timer in Millisekunden |
Konfiguration Timer |
Folgende Events sind im Block vorhanden
Die konfigurierbaren Actions OnStartEvent, OnCancelEvent und OnExpiredEvent sind nur bei Bedarf zu konfigurieren und können ggf. weggelassen werden. Bei Auftreten eines der Events und einer konfigurierten Aktion wird der aktuelle Timestamp im Message Body hinzugefügt (und ggf. überschrieben). Bei ausgehenden Nachrichten kann das Event per Header Property timer-was: {started, canceled, expired} für weitere Prüfung herangezogen werden. |
Conditions |
Alle in diesem Objekt angegebene Ausdrücke müssen mit true ausgewertet werden, um das Event auszuführen. |
Name |
Nutzerdefinierter Name der Bedingung. Der Wert kann frei gewählt werden, es bestehen keine Abhängigkeiten zu anderen Konfigurationsparametern. |
Value |
string, Ausdruck für die Prüfung der Regel. Für den Zugriff auf die Properties der zugehörigen Start-Nachricht ist Folgendes zu beachten: |
TimerType |
Als Aktion auf ein Event stehen folgende Möglichkeiten zur Wahl:
Hinweis: Wird ein Timer bspw. mit den identischen Bedinungen für Start und Cancel konfiguriert und treffen diese mit einem Nachrichteneingang zu, so wird der Timer gestart und sofort wieder gestoppt und die zugehörigen Aktionen ausgeführt. |
Header |
Nachrichten-Body der auszusendenden Nachricht bei diesem Event. |
Body |
Nachrichten-Header der auszusendenden Nachricht bei diesem Event. |
In der folgenden Darstellung ist ein beispielhaftes Szenario aufgezeigt.
Es läuft die Nachricht [1] ein. Diese wird vom Block ignoriert, da die Timer condition (state >=10
) nicht erfüllt ist.
Nachricht [2] folgt einlaufend und triggert den Start, da hier state >=10
. Der Timer startet und sendet eine Nachricht [3], die vielleicht für Debugging Zwecke konfiguriert ist, sofort heraus.
Der Timer erreicht die konfigurierte Zeit von 20 Sekunden und sendet die Nachricht [4], welche der Nachricht [2] mit aktuellem Zeitstempel entspricht, am Ausgang heraus.
Beispielkonfiguration
Folgende Abbildung zeigt eine beispielhafte Konfiguration des Timer-Blocks in der RoboGate Edge UI.