Informationen zum Beispielprogramm 'Data Warehouse'

Das Beispielprogramm 'Data Warehouse' ist eine Beispielanwendung 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, wurde 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. Dadurch könnte 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 verarbeitet und der Rest verworfen werden. Durch die Möglichkeit zum gezielten und präzisen Abrufen von Datensätzen wird der Verarbeitungsaufwand, er beim Lesen aller Datensätze entstehen würde, erheblich verringert.

Das Beispielprogramm 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 Beispielprogramm ist die Verarbeitung auf zwei Nachrichtenflüsse aufgeteilt. Folgende Nachrichtenflüsse werden verwendet:

Die Nachrichtenflüsse und die von ihnen ausgeführte Verarbeitung werden nachfolgend 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 das Nachrichten-BLOB zusammen mit dem Datum und der 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 MQEmpfangsknoten 'DATAWAREHOUSE_IN_Q' liest die XML-Nachricht. Da die eingehende Nachricht in einem selbstdefinierenden XML-Format ist, ist es nicht erforderlich, eine Nachrichtengruppe oder ein Nachrichtenformat anzugeben, damit sie erfolgreich syntaktisch analysiert werden kann.

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

Der MQSendeknoten 'DATAWAREHOUSE_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 MQSendeknoten 'DATAWAREHOUSE_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, für den eine gewisse Anzahl von 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 MQEmpfangsknoten 'DATAWAREHOUSE_VERIFY_CONTENTS_IN_Q' liest die XML-Nachricht. Da die eingehende Nachricht ein selbstdefinierendes XML-Format hat, ist es nicht erforderlich, eine Nachrichtengruppe oder ein Nachrichtenformat für die Nachricht anzugeben, die oder das erfolgreich syntaktisch analysiert werden muss.

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

  1. Extrahiert das Start- und 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 MQSendeknoten 'DATAWAREHOUSE_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 MQSendeknoten 'DATAWAREHOUSE_FAILURE_Q' als WebSphere MQ-Nachricht geschrieben.

Testnachrichten

In diesem Beispielprogramm werden zwei Nachrichten verwendet. Die erste Nachricht wird archiviert, während die zweite die Datumsangaben und Uhrzeiten angibt, die vom Nachrichtenfluss 'VerifyDatabaseContent' verwendet werden sollen. Beispiele für beide Nachrichten werden unten angezeigt.

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>

Symbol für die Hauptseite   Zurück zum Beginn des Beispielprogramms