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. Sendet Ihre Anwendung eine Nachricht, die entweder vom generischen XML-Parser oder dem MRM-Parser, der durch ein physisches XML-Format angepasst wurde, interpretiert werden soll, kann die Anwendung Datums- und Uhrzeitdaten einfügen, die durch einen der XML-Schema-Basisdatentypen für Datum/Uhrzeit dargestellt werden.
Der XML-Schema-Datentyp für jedes einzelne Datenelement wird in einen ESQL-Datentyp konvertiert. Das in der logischen Nachrichtenbaumstruktur erstellte Element entspricht dem konvertierten Typ. Wenn die Datum/Uhrzeit-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/Uhrzeit-Eingabedaten:
Die folgenden Beispiele veranschaulichen diese Aussagen.
XML-Schema-Datentyp 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) |
Berücksichtigen Sie bei der Auswahl des zu verwendenden Schema-Datentyps für Datum/Uhrzeit, 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.