Das Beispielprogramm 'Verarbeitung der Zeitlimitüberschreitung' erweitern

Ein Zeitlimitsteuerungsknoten ist einem Zeitlimitbenachrichtigungsknoten dadurch zugeordnet, dass beide Knoten mit derselben Kennung konfiguriert werden. Das Beispielprogramm 'ControlledTimeout' veranschaulicht, dass einem Zeitlimitbenachrichtigungsknoten mehrere Zeitlimitsteuerungsknoten zugeordnet werden können. Dies bedeutet, dass Sie Zeitlimitanforderungen, die von einem Zeitlimitsteuerungsknoten verarbeitet werden, aktualisieren oder abbrechen und einen der anderen Zeitlimitsteuerungsknoten, die demselben Zeitlimitbenachrichtigungsknoten zugeordnet sind, verwenden können. Sie können es ausprobieren: Die einfachste Methode ist es, die ENQUEUE-Dateien mit Abbruchanforderungen zu bearbeiten, damit sie in die andere Eingabewarteschlange eingereiht und von dem anderen Knoten verarbeitet werden. Eine erweiterte Option ist es, den Wert des Feldes '<AllowOverwrite>' in der Zeitlimitanforderung auf 'TRUE' (Wahr) zu setzen, denn dadurch löscht der Zeitlimitsteuerungsknoten die aktuell auszuführende Zeitlimitanforderung zu Gunsten der neu eingehenden Anforderung (sofern diese mit der Markierung '<Identifier>' in der Zeitlimitanforderung selbst übereinstimmt). Sie können auch neue Nachrichten mit Zeitlimitanforderungen und unterschiedlichen Zeitlimitkennungen erstellen, um die Verarbeitung mehrerer gleichzeitiger Zeitlimits zu testen.

Im Beispielprogramm ist die Zeitlimitanforderung im Hauptteil der Nachricht enthalten. Sie kann in der Nachrichtenbaumstruktur an eine beliebige Stelle verschoben werden, und der Zeitlimitsteuerungsknoten sucht im Ordner 'LocalEnvironment' nach ihr, sofern dies bei der Konfiguration nicht anders angegeben wurde. Damit dieses Verhalten genutzt werden kann, muss vor dem Zeitlimitsteuerungsknoten ein Rechenknoten eingefügt werden, um diese Informationen hinzuzufügen, wie im ESQL-Code dargestellt, der darüber hinaus veranschaulicht, wie die Zeitlimitkennung als dynamisch eingestellt werden kann, um Kollisionen zu vermeiden.

CREATE COMPUTE MODULE Timeout_Set
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
SET OutputRoot = InputRoot;
SET OutputLocalEnvironment.TimeoutRequest.Action = 'SET';
SET OutputLocalEnvironment.TimeoutRequest.Identifier = OutputRoot.XML.Data.UniqueId;
SET OutputLocalEnvironment.TimeoutRequest.StartDate = 'TODAY';
SET OutputLocalEnvironment.TimeoutRequest.StartTime = 'NOW';
SET OutputLocalEnvironment.TimeoutRequest.Count = 10;
SET OutputLocalEnvironment.TimeoutRequest.Interval = 5;
RETURN TRUE;
END;
END MODULE;

Achten Sie darauf, dass im Rechenknoten die Einstellungen 'Pass Message' und 'LocalEnvironment' festgelegt sind. Anschließend muss für den Zeitlimitsteuerungsknoten eine leere Anforderungsposition angegeben werden, sofern der Standardwert geändert wurde:

Anforderungsposition des Zeitlimitsteuerungsknotens

Schließlich veranschaulicht der ESQL-Code auch, wie ein einmaliges zukünftiges Zeitlimit von 60 Sekunden durch Generieren einer relativen Zeit festgelegt wird:

CREATE COMPUTE MODULE UT_CONTROL_TIMEOUT_10
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
SET OutputRoot = InputRoot;
DECLARE jump INTERVAL;
SET jump = INTERVAL '60' SECOND;
DECLARE start TIME;
SET start = CURRENT_TIME + jump;
SET OutputLocalEnvironment.TimeoutRequest.Action = 'SET';
SET OutputLocalEnvironment.TimeoutRequest.Identifier = 'control';
SET OutputLocalEnvironment.TimeoutRequest.StartDate = 'TODAY';
SET OutputLocalEnvironment.TimeoutRequest.StartTime = start;
RETURN TRUE;
END;
END MODULE;

Symbol Hauptseite   Zurück zur Beispiel-Homepage