Informationen zum Simplified Database Routing-Nachrichtenfluss

Der Simplified Database Routing-Nachrichtenfluss ruft Einzeldaten zu Mitarbeitern aus einer Datenbank ab, falls diese Angaben nicht bereits in der Eingabenachricht enthalten sind. Für den Abruf dieser Mitarbeiterdaten wird die in der Eingabenachricht angegebene Personalnummer verwendet. Anschließend leitet der Nachrichtenfluss auf der Grundlage weiterer Informationen, die basierend auf dem Vorgesetzten eines Mitarbeiters abgerufen wurden, eine Antwortnachricht weiter. Je nach Inhalt der Eingabenachricht werden unterschiedliche Weiterleitungsbedingungen erfüllt. Die Nachrichten können in einer oder mehreren der folgenden Ausgabewarteschlangen ausgegeben werden, wobei es darauf ankommt, welche Weiterleitungsbedingungen erfüllt sind:

Im folgenden Diagramm ist der Simplified Database Routing-Nachrichtenfluss dargestellt.

Screenshot des Simplified Database Routing-Nachrichtenflusses

In der folgenden Tabelle sind die Knotentypen aufgeführt, die im Simplified Database Routing-Nachrichtenfluss verwendet werden:

Knotentyp Knotenname
MQInput MQInput
Route Route
DatabaseRetrieve

DatabaseRetrieve

DatabaseRoute DatabaseRoute
MQOutput FailureQ, KeyNotFoundQ, SeniorStaffQ, OrderClockQ, DefaultQ
Trace Trace

Weitere Informationen finden Sie in der Dokumentation von WebSphere Message Broker im Abschnitt Integrierte Knoten.

Der Simplified Database Routing-Nachrichtenfluss führt die folgenden Aktionen aus:

  1. Der MQInput-Knoten ruft die XML-Eingabenachricht aus der Warteschlange SIMPLERROUTEDB_IN ab. Die Nachricht wird an den Route-Knoten übergeben.
  2. Der Route-Knoten prüft den Inhalt der Eingabenachricht und stellt fest, ob das Feld für die Abteilung des Mitarbeiters verfügbar ist. Ist das Feld verfügbar, wird die Nachricht über das Trefferterminal (Match) an den DatabaseRoute-Knoten weitergeleitet. Ist das Feld dagegen nicht verfügbar, müssen die Daten zu dem Mitarbeiter abgerufen werden und die Nachricht wird über das Standardterminal an den DatabaseRetrieve-Knoten weitergeleitet.
  3. Der DatabaseRetrieve-Knoten fragt die Tabelle EMPLOYEE in der Datenbank nach den Mitarbeiterdaten ab. Die Personalnummer in der Nachricht wird als Schlüssel für die Datenbanksuche verwendet. Die im DatabaseRetrieve-Knoten festgelegten Eigenschaften geben an, welche Werte aus der Datenbankabfrage der Tabelle EMPLOYEE abgerufen und wo diese Werte in der Ausgabenachricht eingefügt werden sollen.
  4. Wenn für die Personalnummer eine Übereinstimmung in der Datenbank gefunden wird, wird die Nachricht mit Werten aus der Datenbank aufgefüllt. Anschließend wird die Nachricht an den DatabaseRoute-Knoten übergeben.
  5. Falls es für die Personalnummer keinen übereinstimmenden Wert in der Datenbank gibt, wird die ursprüngliche Eingabenachricht über das Terminal 'KeyNotFound' an den KeyNotFoundQ-Knoten übergeben.
  6. Der DatabaseRoute-Knoten führt eine Operation JOIN aus, um die Daten eines Mitarbeiters mit den Daten seines Vorgesetzten zu vergleichen. Die Operation JOIN umfasst folgende Schritte:
    1. Anhand des Abteilungswertes aus der Eingabenachricht wird in einer Datenbankabfrage in der Tabelle DEPARTMENT nach dem Abteilungsleiter gesucht.
    2. Der Wert der Spalte mit der Nummer des Abteilungsleiters (DEPARTMENT.MGRNUM) wird abgerufen. Mit diesem Wert wird eine Verbindung zur Tabelle EMPLOYEE hergestellt, um nach einem Datensatz für einen bestimmten Mitarbeiter zu suchen. Deshalb wird eine Verbindung von DEPARTMENT.MGRNUM zu EMPLOYEE.EMPNUM hergestellt. Der gefundene Datensatz für den Mitarbeiter bezieht sich auf den Beschäftigungsdatensatz des Vorgesetzten des Mitarbeiters.
    3. Die in der Datenbankabfrage für den Knoten angegebenen Werte werden für den Vorgesetzten zurückgegeben.
  7. Nun werden die Filterausdrücke im DatabaseRoute-Knoten verarbeitet. Die Ausdrücke haben den Wert 'true' oder 'false'. Die Filterausdrücke werden wie folgt verarbeitet:
    1. Falls der Abteilungswert für den Mitarbeiter nicht mit einem Datensatz in der Tabelle 'DEPARTMENT' übereinstimmt, wird die Nachricht über das Terminal 'KeyNotFound' an den KeyNotFoundQ-Knoten übergeben.
    2. Falls der Mitarbeiter älter als sein Vorgesetzter ist und der Nachname des Vorgesetzten 'KWAN' lautet, übergibt der DatabaseRoute-Knoten die Eingabenachricht über das Terminal 'OlderThanMe' an den SeniorStaffQ-Knoten. Anschließend wird der nächste Filterausdruck ausgewertet.
    3. Falls in der Eingabenachricht für den Mitarbeiter eine Firmenzugehörigkeit von mehr als zehn Jahren angegeben ist, übergibt der DatabaseRoute-Knoten die Eingabenachricht über das Terminal 'TenYearsService' an den OrderClockQ-Knoten.
    4. Falls keiner der beiden Filterausdrücke den Wert 'true' hat, übergibt der DatabaseRoute-Knoten die Eingabenachricht über das Standardterminal an den DefaultQ-Knoten.
  8. Im Falle eines Verarbeitungsfehlers in einem der Knoten wird die Eingabenachricht über das Fehlerterminal (Failure) der Knoten zur Fehlerbehandlung an den Traceknoten weitergegeben.

Die in dem Simplified Database Routing-Musternachrichtenfluss verwendeten Datenbankknoten lesen die Informationen in der Datenbank, nehmen jedoch keine Aktualisierung der dort enthaltenen Daten vor.

Zurück zu 'Informationen zum Mustercode 'Simplified Database Routing'