Informationen zum Mustercode 'Data Warehouse'

Der Mustercode 'Data Warehouse' ist eine Musteranwendung für einen Nachrichtenfluss zur Darstellung eines Szenarios, in dem ein Nachrichtenfluss zum Archivieren von Daten (z. B. Vertriebszahlen) in einer Datenbank verwendet wird. Die Daten werden für eine spätere Analyse durch einen anderen Nachrichtenfluss oder eine andere Anwendung gespeichert.

Da die Vertriebsdaten zu einem späteren Zeitpunkt analysiert werden, wird die Speicherung der Nachrichten in einer Weise organisiert, die das Auswählen von Datensätzen für einen festgelegten Zeitraum erleichtert. Das Datum und die Uhrzeit, zu denen die WebSphere MQ-Nachricht mit dem Vertriebsdatensatz geschrieben wurde, werden beim Einfügen der Nachricht in die Datenbank als separate Spaltenwerte gespeichert. Die Datenbanktabelle enthält vier Spalten:

Durch das Speichern der Daten in dieser Weise ist es möglich, Datensätze für bestimmte Zeiträume abzurufen, z. B. den Zeitraum zwischen 09:00 und 12:00 Uhr oder 12:01 und 17:00 Uhr. Auf diese Weise kann beispielsweise ein Vergleich zwischen den Vertriebszahlen am Vor- und Nachmittag angestellt werden.

Ohne die Verwendung einer zusätzlichen Datums- und Zeitspalte müssten alle Datensätze in der Datenbank von einer Anwendung gelesen und überprüft sowie die relevanten Datensätze verarbeitet und der Rest verworfen werden. Durch die Möglichkeit zum gezielten und präzisen Abrufen von Datensätzen wird der Verarbeitungsaufwand, der beim Lesen aller Datensätze entsteht, erheblich verringert.

Der Mustercode veranschaulicht ein Verfahren zum Archivieren einer Nachricht, bzw. eines Teils davon, in einer Datenbank. Dieses Verarbeitungsverfahren wird normalerweise als Teil eines komplexeren Nachrichtenflusses integriert, wenn die Archivierung von Daten erforderlich ist.

In diesem Mustercode ist die Verarbeitung auf zwei Nachrichtenflüsse aufgeteilt:

Die Nachrichtenflüsse und die von ihnen ausgeführte Verarbeitung werden in den folgenden Abschnitten näher erläutert:

Nachrichtenfluss 'WarehouseData'

Der Nachrichtenfluss 'WarehouseData' führt die folgenden Verarbeitungsschritte aus:

  1. Er liest eine WebSphere MQ-Nachricht, die XML-Nutzdaten enthält. Die Nutzdaten enthalten die Daten, die archiviert werden sollen.
  2. Er konvertiert einen Teil der Nachrichtenbaumstruktur in ein BLOB, das zum Einfügen in die Datenbank bereit ist.
  3. Er fügt die BLOB-Nachricht und das Datum und die Uhrzeit, zu denen die WebSphere MQ-Nachricht geschrieben wurde, in die Datenbank ein.
  4. Er sendet eine WebSphere MQ-Bestätigungsnachricht, um ein Signal für das erfolgreiche Einfügen der Nachricht in der Datenbank zu geben.

Der Nachrichtenfluss 'WarehouseData' besteht aus den folgenden Knoten:

Anzeigenerfassung des Nachrichtenflusses 'WarehouseData'.

Der MQInput-Knoten 'Data_Warehouse_In_Q MQInput' liest die XML-Nachricht. Da die eingehende Nachricht ein selbstdefinierendes XML-Format aufweist, muss für die Nachricht kein Nachrichtensatz und kein Nachrichtenformat angegeben werden, mit deren Hilfe sie erfolgreich syntaktisch analysiert werden kann.

Der Rechenknoten 'Warehouse_Input_Message' konvertiert die gesamten Nutzdaten der Nachricht (ROOT.XMLNSC) mithilfe der Funktion 'ASBITSTREAM' in ein BLOB, fügt die Nachricht in einer Datenbank ein und formatiert schließlich die Bestätigungsnachricht.

Der MQOutput-Knoten 'Data_Warehouse_Out_Q' schreibt die Ausgabenachricht als eine WebSphere MQ-Nachricht.

Wenn während der Datenbankverarbeitung ein Fehler auftritt, wird vom Rechenknoten 'Create_Error_Message' eine Nachricht erstellt und formatiert und vom MQOutput-Knoten 'Data_Warehouse_Failure_Q' als WebSphere MQ-Nachricht geschrieben.

Nachrichtenfluss 'VerifyDatabaseContents'

Der Nachrichtenfluss 'VerifyDatabaseContents' führt die folgenden Verarbeitungsschritte aus:

  1. Liest eine WebSphere MQ-Nachricht mit XML-Nutzdaten, in der der Zeitraum (Start- und Endzeit) angegeben ist, innerhalb dem eine gewisse Anzahl an Datensätzen abgerufen werden soll.
  2. Führt Abfragen in der Datenbank aus, um festzustellen, wie viele Datensätze für den angegebenen Zeitraum vorhanden sind.
  3. Formatiert die Antwortnachricht.
  4. Schreibt eine WebSphere MQ-Nachricht.

Der Nachrichtenfluss 'VerifyDatabaseContents' besteht aus folgenden Knoten:

Anzeigenerfassung des Nachrichtenflusses 'VerifyDatabaseContents'.

Der MQInput-Knoten 'Data_Warehouse_Verify_Contents_In_Q' liest die XML-Nachricht. Da die eingehende Nachricht ein selbstdefinierendes XML-Format aufweist, muss für die Nachricht kein Nachrichtensatz und kein Nachrichtenformat angegeben werden, mit deren Hilfe sie erfolgreich syntaktisch analysiert werden kann.

Der Rechenknoten 'Verify_Contents' führt folgende Aktionen aus:

  1. Extrahiert das Start- und das Enddatum sowie die jeweilige Uhrzeit, die in der Datenbankabfrage von der eingehenden Nachricht verwendet werden soll.
  2. Gibt eine SQL SELECT-Anweisung für die Archivdatenbanktabelle aus, um festzustellen, wie viele Datensätze im angegebenen Zeitraum vorhanden sind.
  3. Formatiert eine Antwortnachricht

Der MQOutput-Knoten 'Data_Warehouse_Verify_Contents_Out_Q' schreibt die WebSphere MQ-Ausgabenachricht.

Wenn während der Datenbankverarbeitung ein Fehler auftritt, wird vom Rechenknoten 'Create_Error_Message' eine Nachricht erstellt und formatiert und vom MQOutput-Knoten 'Data_Warehouse_Failure_Q' als WebSphere MQ-Nachricht geschrieben.

Testnachrichten

In diesem Mustercode werden zwei Nachrichten verwendet:

In den folgenden Beispielen werden die beiden Nachrichtentypen veranschaulicht.

Zu archivierende Nachricht

<SaleEnvelope>
<Header>
<SaleListCount>1</SaleListCount>
</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>

Nachricht für die Angabe des Datums und der Uhrzeit für Suche

<Archive_Query>
<Start_Time>
<Day>mm/dd/yyyy</Day>
<Time>hh:mm:ss</Time>
</Start_Time>
<End_Time>
<Day>mm/dd/yyyy</Day>
<Time>hh:mm:ss</Time>
</End_Time>
</Archive_Query>

Zurück zum Beginn des Mustercodes