WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

Darstellung von ESQL-Datentypen für Datum/Zeit

Wenn Ihre Anwendung eine Nachricht an einen Broker sendet, ist die Art und Weise der Interpretation der Nachrichtendaten vom Inhalt der Nachricht selbst und von der Konfiguration des Nachrichtenflusses abhängig. Wenn Ihre Anwendung eine Nachricht in einem physischen XML-Format sendet, die von einem generischen XML-Parser oder dem MRM-Parser interpretiert werden soll, kann die Anwendung Datums- oder Uhrzeitdaten einfügen, die in Form von Basisdatentypen für Datum/Zeit-Angaben des XML-Schemas dargestellt werden können.

Die Datentypen des XML-Schemas werden in ESQL-Datentypen konvertiert, und das Element, das in der logischen Nachrichtenbaumstruktur erstellt wird, entspricht dem konvertierten Typ. Wenn die Datum/Zeit-Daten in einer Eingabenachricht nicht den Regeln des ausgewählten Schema-Datentyps entsprechen, werden die Werte, die der Parser in die logische Nachrichtenbaumstruktur schreibt geändert. Dies gilt auch dann, wenn sich die Nachricht in der MRM-Domäne befindet und Sie den Nachrichtenfluss so konfiguriert haben, dass er die Eingabenachricht prüft. (Die Prüfung steht für generische XML-Nachrichten nicht zur Verfügung.)

Dies hat folgende Auswirkung auf die Teilfelder der Datum/Zeit-Eingabedaten:

Die folgenden Beispiele veranschaulichen diese Aussagen.

Datentypen des XML-Schemas für Eingabedaten Schemaregeln Eingabewert im Bitstrom Wert, der in die logische Baumstruktur geschrieben wird (ESQL-Datentyp in Klammern)
xsd:dateTime CCYY-MM-DDThh:mm:ss 2002-12-31T23:59:59 2002-12-31 23:59:59 (TIMESTAMP)
    --24 1970-01-24 (DATE)
    23:59:59 23:59:59 (TIME)
xsd:date CCYY-MM-DD 2002-12-31 2002-12-31 (DATE)
    2002-12-31T23:59:59 2002-12-31 (DATE)
    -06-24 1970-06-24 (DATE)
xsd:time hh:mm:ss 14:15:16 14:15:16 (TIME)
xsd:gDay ---DD ---24 1970-01-24 (DATE)
xsd:gMonth --MM --12 1970-12-01 (DATE)
xsd:gMonthDay --MM-DD --12-31 1970-12-31 (DATE)
xsd:gYear CCYY 2002 2002-01-01 (DATE)
xsd:gYearMonth CCYY-MM 2002-12 2002-12-01 (DATE)

Auswertung bei fehlenden Teilfeldern

Berücksichtigen Sie bei der Auswahl des zu verwendenden Schema-Datentyps für Datum/Zeit, dass fehlende Teilfelder Ausnahmen verursachen können, wenn sich die Nachricht in der MRM-Domäne befindet und Sie den Nachrichtenfluss so konfiguriert haben, dass er Nachrichten auswertet.

Die Schema-Datentypen Gday, gMonth, gMonthDay, gYear und gYearMonth dienen dazu, bestimmte sich wiederholende Zeiträume zu erfassen. Dies kann bei inaktivierter Auswertung zu Unklarheiten führen, weil die sich wiederholenden Zeiträume, die in diesen Schema-Datentypen verwendet werden, von ESQL als bestimmte Zeitpunkte gespeichert werden.

Wenn beispielsweise der 24. des Monats, ein Monat-Tag-Typ (gDay), in die logische Baumstruktur geschrieben wird, werden die fehlenden Teilfelder für Monat und Jahr von der Epoche (Januar 1970) abgeleitet: daraus ergibt sich das exakte Datum 1970-01-24. Wenn Sie einen ESQL-Code erstellen, um dieses Datum zu ändern, indem beispielsweise ein Zeitraum von 10 Tagen hinzugefügt wird, und wenn Sie dann eine Ausgabenachricht generieren, die ausgewertet wird, hat dies eine Ausnahme zur Folge. Der Grund dafür ist, dass das Ergebnis der Berechnung das Datum 1970-02-03 ist, und das ist ungültig, weil das Monatsteilfeld des Datums nicht mehr mit dem Datum der Epoche übereinstimmt.

Verwendung innerhalb einer MRM-Domäne

In MRM kann ein Element, das den logischen Typ 'dateTime' aufweist, definiert werden.

Bei der Syntaxanalyse eines dateTime-Elements wird in der Nachrichtenbaumstruktur ein Feld erstellt, das den ESQL-Datentyp CURRENT_TIME oder CURRENT_TIMESTAMP aufweist. Die Datentypen CURRENT_TIME und CURRENT_TIMESTAMP verfügen jedoch nicht über de Funktionalität zum Speichern von Zeitzoneninformationen und der MRM stellt die Zeit nicht in Übereinstimmung mit der Empfangszeitzone und der Zeitzone des Brokers ein.

Obwohl die Datentypen CURRENT_TIME und CURRENT_TIMESTAMP die Zeitzoneninformationen niciht speichern können, werden sie vom MRM als Teil des zugrunde liegenden Felds gespeichert. Wenn das Feld also zwischen den Nachrichtenbaumstrukturen kopiert wird, werden die Zeitzoneninformationen dabei ebenfalls kopiert, damit diese Informationen bei der Ausgabe zur Verfügung stehen.

Beachten Sie, dass die Informationen nur erhalten bleiben, wenn das Feld in ein gleichnamiges Feld kopiert wird.

Wenn jedoch ein neues Feld vom alten Feld abgeleitet wird, verfügt das neue Feld nicht über die Zeitzoneninformationen. Wenn ein derartiges Feld also als Zeichen umgesetzt wird, geht das neue Feld von der Zeitzone des Brokers aus, sein Wert wird jedoch nicht entsprechend angepasst, wenn Unterschiede zwischen der Empfangszeitzone und der Zeitzone des Brokers bestehen.

Ein dateTime-Empfangselement, das 2009-02-20T06:08:07-08:00 enthält, könnte beispielsweise aus der Eingabenachrichtenstruktur in die Ausgabenachrichtenstruktur kopiert werden und mit genau diesem Format in einer Ausgabenachricht angezeigt werden. Wenn das Element jedoch von einem Broker, auf dem GMT (Greenwich Mean Time, Westeuropäische Zeit) gilt, als Zeichen mit dem Format IU umgesetzt wird, würde das Ergebnis wie folgt aussehen: 2009-02-20T06:08:07.000Z.

Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:21:27


KonzeptthemaKonzeptthema | Version 8.0.0.5 | ak01005_