Dieses Thema enthält Informationen, die sich speziell auf die Verarbeitung von Nachrichten beziehen, die der BLOB-Domäne angehören und vom BLOB-Parser syntaktisch analysiert werden.
Der Inhalt einer BLOB-Nachricht kann nicht bearbeitet werden, da sie über keine vordefinierte Struktur verfügt. Sie können sich jedoch unter Verwendung ihrer bekannten Position im Bitstrom auf ihren Inhalt beziehen und die Nachricht mit minimaler Kenntnis über ihren Inhalt verarbeiten.
Der BLOB-Parser für den Nachrichtenhauptteil erstellt keine Baumstruktur wie andere Parser für Nachrichtenhauptteile. Er verfügt über das Stammelement BLOB, dem wiederum das Element BLOB untergeordnet ist, das die Daten enthält.
Sie können mit Hilfe von Unterzeichenfolgen auf den Nachrichteninhalt verweisen, wenn Sie die Position einer bestimmten Einzelinformation in den BLOB-Daten kennen. Der folgende Ausdruck identifiziert beispielsweise das zehnte Byte des Nachrichtenhauptteils:
InputBody.BLOB.BLOB[10]
Der folgende Ausdruck verweist auf 10 Bytes der Nachrichtendaten, beginnend an der relativen Position 10:
SUBSTRING(InputBody.BLOB.BLOB from 10 for 10)
Dieses Beispiel zeigt die Bearbeitung einer BLOB-Nachricht variabler Länge. In dem Beispiel wird davon ausgegangen, dass Sie einen Nachrichtenfluss konfiguriert haben, der eine BLOB-Nachricht variabler Länge empfängt, einige Felder durch den Aufruf des MRM-Parsers syntaktisch analysiert und die Ausgabenachricht auf Basis der analysierten Informationen an die richtige Ausgabewarteschlange weiterleitet.
Die Eingabenachricht hat das BLOB-Format, und es wird vorausgesetzt, dass sie eingebettete Nullen ('x00') enthält. Sie kann also nicht als 'mit Null beendet' definiert werden.
Im vorliegenden Beispiel wird der ESQL-Code dargestellt, der für folgende Aktionen erforderlich ist:
Durch diese Aktionen können Sie das Nachrichtenmodell mit einem Integer-Längenfeld definieren, gefolgt von der BLOB-Nachricht.
In diesem Beispiel wird auch demonstriert, wie die BLOB-Nachricht in CWF konvertiert, die Nachricht verarbeitet und das hinzugefügte Längenfeld abgeschnitten wird.
Im vorliegenden Beispiel hat der Eingabedatensatz das folgende Format:
Dieses Feld wird als Ganzzahl verwendet, um die Nachricht je nach den vom Kunden definierten Kriterien an verschiedene Warteschlangen weiterzuleiten.
Definieren Sie die neue Nachricht 'BLOB_Example', die folgende Elemente und Typen enthält:
In diesem Abschnitt werden die Merkmale des Nachrichtenflusses beschrieben. Wenn Sie diesen Nachrichtenfluss implementieren möchten, müssen Sie die Definition des Nachrichtenflusses abschließen (indem Sie beispielsweise die drei Unterflüsse erstellen, um die an dieser Stelle verwendeten Sendeknoten für die Verarbeitung der Fälle 'Falsch', 'Unbekannt' und 'Fehler' zu ersetzen). Außerdem müssen Sie die erforderliche Unterstützung für dessen Implementierung und Ausführung bereitstellen (indem Sie beispielsweise die eingehenden und ausgehenden Warteschlangen auf dem WS-Manager für den Broker erstellen, für den der Fluss implementiert werden soll).
Dieser untergeordnete Fluss verarbeitet eine Nachricht, die das erwartete Format hat (der im Filterknoten ausgeführte Test ergab 'True'). Die Nachricht über den Erfolg wird in ihrem Originalformat in die Ausgabewarteschlange geschrieben; sie wird von MRM wieder in das BLOB-Format konvertiert, und die hinzugefügten vier Bytes (Feld B_LEN) werden entfernt.
Für diesen untergeordneten Fluss gilt Folgendes: