Anforderungsnachrichtenfluss für das Muster Message Splitter for WebSphere MQ: one-way (for XML) (Nachrichtenverteiler für WebSphere MQ: unidirektional (bei XML))

Dieses Muster verwendet einen einzigen Nachrichtenfluss.

  1. Der Empfangsknoten erwartet eine korrekt formatierte XML-Nachricht und ist für den XMLNSC-Parser konfiguriert. Eingehende Nachrichten mit MQRFH2-Header, der die Domäne ändert, verursachen einen Fehler und werden zurückgesetzt.
  2. Die Nachrichtenvalidierung ist optional und kann mit dem Musterparameter Auswertung erforderlich aktiviert werden. Die Validierung findet nicht sofort statt, sondern bei der Extraktion jedes Elements.
  3. Der Nachrichtenfluss wird als Transaktion ausgeführt und erst festgeschrieben, nachdem alle erforderlichen Elemente erfolgreich extrahiert und in eine Warteschlange geschrieben wurden.
  4. Die Hauptsteuerung dieses Nachrichtenflusses ist der Compute-Knoten 'Propagate Element'. Dieser Knoten erstellt eine lokale Variable für eine veränderliche Baumstruktur, die eine Kopie der Eingabe ist. Der Nachrichtenfluss durchläuft die Nachrichtenbaumstruktur in einer Schleife. Dabei durchläuft er die einzelnen untergeordneten Elemente innerhalb von Containerkennungen und leitet sie weiter. Sobald ein neues Element ausgewählt wird, wird das vorherige Element gelöscht, um den Speicherbedarf zu verringern.
  5. Die Struktur der Nachrichten wird durch die Musterparameter bestimmt; entspricht eine Nachricht nicht dieser Struktur, wird ein Fehler generiert.
  6. Es wird überprüft, ob die Nachricht den Containerpfad enthält, d. h., den Pfad des Containers für alle zu verarbeitenden Elemente. Wenn der Containerpfad mit *:* angegeben ist, wird die Kennung der höchsten Ebene (unabhängig von ihrem Namen) als Container verwendet und dieser Ebene untergeordnete Nachrichtenelemente werden extrahiert.
  7. Wenn der Musterparameter Name des Nachrichtenelements auf *:* gesetzt ist, werden alle dem Container untergeordneten Elemente verarbeitet. Bei einem anderen Wert werden nur die Nachrichtenelemente extrahiert, deren Kennungen mit dem Wert von Name des Nachrichtenelements übereinstimmen. Das extrahierte Nachrichtenelement wird zur Verarbeitung weitergeleitet.
  8. Der Nachrichtenfluss enthält den untergeordneten Nachrichtenprozessor-Nachrichtenfluss 'MessageProcessor', der standardmäßig keine Auswirkung hat, da er nur einen Passthrough-Knoten enthält. Dieser untergeordnete Nachrichtenfluss wurde hinzugefügt, um die Möglichkeit zur Anpassung der Musterinstanz mittels Standardtools zu bieten, ohne die Musterstruktur ändern zu müssen.
  9. Die Nachricht wird an den untergeordneten Routing-Nachrichtenfluss weitergeleitet, der die Nachricht an die richtige WebSphere MQ-Warteschlange weiterleitet. Wenn die Route nicht gefunden wird oder eine andere Ausnahme auftritt, wird der Fehlerstatus gesetzt und die Kontrolle an den Failure-Knoten übergeben.
    • Wenn Aktion für fehlerhafte Nachrichten auf Speichern gesetzt ist, wird der Failure-Knoten mit einem MQOutput-Knoten verbunden, durch den die Nachricht gespeichert wird. Danach wird die Kontrolle wieder an den Compute-Knoten übergeben, damit das nächste Element extrahiert werden kann.
    • Wenn Aktion für fehlerhafte Nachrichten auf Abbrechen gesetzt ist, wird der Failure-Knoten nicht verbunden und der Compute-Knoten generiert einen Benutzerfehler, der zu einem Rollback des Nachrichtenflusses führt.
  10. Wenn der Übergang zum nächsten Element fehlschlägt, weil alle Elemente verarbeitet wurden, und die Protokollierung in den Musterparametern aktiviert wurde, wird der untergeordnete Protokollnachrichtenfluss aufgerufen. An dieser Stelle wird der Nachrichtenfluss mit Erfolg beendet und die Transaktion wird festgeschrieben. Fehler, die bei der anschließenden Protokollierung auftreten, werden abgefangen und an einen Trace-Knoten weitergeleitet.
  11. Wenn der Parameter Routing auf Routen suchen gesetzt ist und durch den Parameter Cache-Aktualisierung die Aktualisierung des Cache aktiviert wurde, enthält der Hauptnachrichtenfluss einen zweiten Empfangsknoten, der den Inhalt der durch den Musterparameter Aktualisierungswarteschlange definierten Warteschlange liest. Jede Nachricht, die an diese Warteschlange gesendet wird, löscht den Inhalt der gemeinsamen Variablen CacheQueueTable.valid, so dass der Cache vor der nächsten Suche aktualisiert wird.
Zurück zur Spezifikation des Musters 'Message Splitter for WebSphere MQ: one-way (for XML)' (Nachrichtenverteiler für WebSphere MQ: unidirektional (bei XML))