Informationen zum Mustercode 'Timeout Processing'

Der Mustercode 'Timeout Processing' veranschaulicht die Verwendung der Zeitlimitfunktion, die vom TimeoutControl-Knoten und TimeoutNotification-Knoten bereitgestellt wird. Sie können die Nachrichtenflüsse mithilfe dieser Knoten automatisch in regelmäßigen Intervallen ausführen. Dies wird als automatische Zeitlimits bezeichnet. Sie können jedoch auch auf der Basis einzelner Nachrichten gesteuerte Zeitlimits für Anwendungen festlegen.

Automatische Zeitlimits werden durch einen einzelnen TimeoutNotification-Knoten, der im Automatikmodus ausgeführt wird, festgelegt. Dabei muss ein Intervall (in Sekunden) als Konfigurationsparameter angegeben werden, das die Zeitspanne zwischen den aufeinanderfolgenden Aufrufen des Nachrichtenflusses angibt. Beispiele für automatische Zeitlimits:

Gesteuerte Zeitlimits werden durch einen oder mehrere TimeoutControl-Knoten festgelegt, die paarweise in Kombination mit einem TimeoutNotification-Knoten verwendet werden. Die Knoten müssen einander zugeordnet werden, indem Sie dieselbe Kennung als Konfigurationsparameter angeben. (Zwischen den TimeoutControl-Knoten und dem TimeoutNotification-Knoten besteht eine Viele-zu-eins-Beziehung, d. h. ein einzelner TimeoutNotification-Knoten kann die Zeitlimitanforderungen aller TimeoutControl-Knoten mit derselben Kennung verarbeiten.) Die TimeoutControl-Knoten empfangen Nachrichten mit Zeitlimitanforderungen in einem festgelegten Format, die anschließend von den TimeoutNotification-Knoten ausgewertet, gespeichert und verarbeitet werden, wenn sie abgelaufen sind.

Eine Zeitlimitanforderung enthält eine Kennung, die innerhalb der für die Verarbeitung bereitgestellten Timeout-Knoten eindeutig sein muss. Dabei handelt es sich um eine andere Kennung als die, die für die Zuordnung zwischen Timeout-Knoten verwendet wird. Eine Zeitlimitanforderung basiert auf einer Startzeit, einem Intervall und einer Anzahl. Sie können Zeitlimitanforderungen so konfigurieren, dass Sie zu einem bestimmten Zeitpunkt in der Zukunft beginnen und einmalig oder mehrmals mit einer Anzahl von mindestens 1 ein Pingsignal aussenden. Wenn die Anzahl größer als 1 ist, erfolgt das Senden der aufeinanderfolgenden Pingsignale im Abstand so vieler Sekunden, wie für das Intervall angegeben wurden.

Der Mustercode 'Timeout Processing' enthält zwei Nachrichtenflüsse:

Nachrichtenfluss 'AutomaticTimeout'

In der Abbildung ist die Verwendung eines TimeoutNotification-Knotens im Automatikmodus dargestellt:

Automatischer Nachrichtenfluss für Zeitlimitüberschreitung

Dieser Nachrichtenfluss ist so konfiguriert, dass er alle zehn Sekunden ein Pingsignal sendet, solange der Broker ausgeführt wird.

Nachrichtenfluss 'ControlledTimeout'

Die Abbildung verdeutlicht die gemeinsame Verwendung der TimeoutControl- und TimeoutNotification-Knoten. Die Einzeldatei mit der Erweiterung .msgflow enthält zwei Nachrichtenflusse: einen zum Anfordern der Zeitlimits und einen zu deren Verarbeitung.

Gesteuerter Nachrichtenfluss für Zeitlimitüberschreitung

Diese Nachrichtenflüsse werden durch die nachfolgend beschriebenen Testnachrichten gestartet, die Zeitlimitanforderungen enthalten und durch die TimeoutControl-Knoten 'TimeoutAll' und 'TimeoutFragment' verarbeitet werden. Diese Knoten werten die Zeitlimitanforderungen aus und speichern die Nachrichten für den gesteuerten TimeoutNotification-Knoten im zweiten Nachrichtenfluss, damit sie bei ihrem Eingang sofort verarbeitet werden können.

Der Knoten 'TimeoutAll' speichert die gesamte eingehenden Nachricht, während der Knoten 'TimeoutFragment' nur einen definierten Teil der eingehenden Nachricht speichert. Dieses Verhalten wird über die Eigenschaften unter Nachricht im TimeoutControl-Knoten gesteuert.

Testnachrichten

Die vier Testnachrichten, die zur Steuerung des Nachrichtenflusses 'ControlledTimeout' verwendet werden, sind ganz normale XML-Nachrichten, die Rechnungsdetails für einen Kunden enthalten. Die folgende XML-Nachricht ist ein Beispiel für die vier Nachrichten:

<SaleEnvelope>
<Header>
<SaleListCount>1</SaleListCount>
<TimeoutRequest>
<Action>SET</Action>
<Identifier>tentimes</Identifier>
<Count>10</Count>
<Interval>10</Interval>
<AllowOverwrite>FALSE</AllowOverwrite>
</TimeoutRequest>
</Header>
<SaleList>
<Invoice>
<Initial>K</Initial><Initial>A</Initial>
<Surname>Braithwaite</Surname>
<Item>
<Code>00</Code><Code>01</Code><Code>02</Code>
<Description>Twister</Description>
<Category>Games</Category>
<Price>00.30</Price>
<Quantity>01</Quantity>
</Item>
<Item>
<Code>02</Code><Code>03</Code><Code>01</Code>
<Description>The Times Newspaper</Description>
<Category>Books and Media</Category>
<Price>00.20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>00.50</Balance>
<Currency>Sterling</Currency>
</Invoice>
<Invoice>
<Initial>T</Initial><Initial>J</Initial>
<Surname>Dunnwin</Surname>
<Item>
<Code>04</Code><Code>05</Code><Code>01</Code>
<Description>The Origin of Species</Description>
<Category>Books and Media</Category>
<Price>22.34</Price>
<Quantity>02</Quantity>
</Item>
<Item>
<Code>06</Code><Code>07</Code><Code>01</Code>
<Description>Microscope</Description>
<Category>Miscellaneous</Category>
<Price>36.20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>81.84</Balance>
<Currency>Euros</Currency>
</Invoice>
</SaleList>
<Trailer>
<CompletionTime>12.00.00</CompletionTime>
</Trailer>
</SaleEnvelope>

Mithilfe des Feldes TimeoutRequest, das in das Feld Header eingebettet ist, legt der TimeoutControl-Knoten das angeforderte Zeitlimit fest, das vom TimeoutNotification-Knoten verarbeitet werden soll. In diesem Fall wird das Startdatum und die Startzeit nicht definiert, sodass die Standardwerte 'TODAY' und 'NOW' verwendet werden. Mit den im Feld 'TimeoutRequest' angegebenen Informationen wird angefordert, dass das Zeitlimit zehn Pingsignale jeweils im Abstand von 10 Sekunden sendet, bevor es abgeschlossen ist.

Zwei der bereitgestellten Nachrichten enthalten Zeitlimitanforderungen mit festgelegten Zeitlimits: in der einen wird nach zehn Pingsignale die Beendigung des Nachrichtenflusses angefordert, während in der anderen eine unbegrenzte Fortsetzung der Pingsignale angefordert wird. Die anderen beiden Testnachrichten enthalten Abbruchanforderungen für die beiden Zeitlimitanforderungen und werden auf dieselbe Weise verarbeitet.

Zurück zum Beginn des Mustercodes