Mit diesem Protokoll können Sie Felder des Message-Headers nach einem Proxy-Aufruf auslesen.
Die Felder des Message-Headers können Sie auch während eines Mappings oder über technische Kontextobjekte im Integration Directory abfragen. Siehe auch: Das Container-Objekt (Message-Mappings), Java-Mapping, XSLT Mapping.
Verwendung des Protokolls abhängig von der Aufruf-Situation
Proxy-Aufruf |
Lesbarer Message-Header |
asynchroner Proxy-Aufruf beim Sender |
Message-Header der Request-Message |
synchroner Proxy-Aufruf beim Sender |
Message-Header der Response-Message |
synchroner/asynchroner Aufruf |
Message-Header der Request-Message |
Die Methode GET_HEADER_FIELD gibt den Wert eines Feldes im Message-Header als String zurück. Für jedes lesbare Feld des Message-Headers gibt es eine Konstante im Interface IF_WSPROTOCOL_XI_HEADER.
Zugriff auf Message-Header-Felder über Konstanten
Konstante |
Bedeutung |
MESSAGE_CLASS |
Klassifizierung der Message. Mögliche Werte: ·
ApplicationMessage: ·
ApplicationResponse: ·
SystemAck, ApplicationAck, SystemError,
ApplicationError: |
VERSION_MAJOR |
Version des XI Message-Protokolls. Beispiel: Für das XI 3.0 Message-Protokoll ist VERSION_MAJOR = 3 und VERSION_MINOR = 0. |
VERSION_MINOR |
|
PROCESSING_MODE |
Der Modus einer Message kann synchron oder asynchron sein. Entsprechend kann diese Konstante den Wert synchronous oder asynchronous haben. |
MESSAGE_ID |
Die Message-ID. Sie kann sich während einer Kommunikation ändern: Response-Messages bekommen eine neue Message-ID. Wenn aus einer Message neue hervorgehen (Kopieren der Message bei mehreren Empfängern), bekommen die neuen Messages neue Message-IDs. |
REF_TO_MESSAGE_ID |
ID einer referenzierten Message, die semantisch zu dieser Message gehört. Beispielsweise ‚merkt’ sich eine Response-Message über dieses Feld zu welcher Request-Message sie gehört. |
CONVERSATION_ID |
Dieses Feld ist nicht obligatorisch in der Message enthalten und erlaubt die Verwendung einer ID zum Zwecke der Gruppierung von zusammengehörenden Messages. Dieses Feld ist nicht dazu gedacht, eine Serialisierung von Messages zu realisieren und hat nichts mit dem Serialisierungskontext zu tun (siehe Kontextobjekt QueueId). |
TIME_SENT |
Zeitstempel, der angibt, wann die Message beim Sender abgeschickt wurde. Das Format des Zeitstempels ist: YYYY-MM-DDTHH:MM:SSZ Der Buchstabe ‚T’ trennt das Datum von der Zeit, die in der Regel in UTC angegeben ist. Falls es sich um eine lokale Zeit handelt, entfällt das abschließende ‚Z’. |
INTERFACE |
Name des Sender-Interfaces. |
INTERFACE_NAMESPACE |
Namensraum des Sender-Interfaces. |
SENDER_PARTY |
Kommunikationspartner, der die Message verschickt hat |
SENDER_PARTY_AGENCY |
Vergebende Agentur zum Sender der Message |
SENDER_PARTY_SCHEME |
Verwendetes Identifikationsschema des Senders |
SENDER_SERVICE |
Service auf Senderseite, der die Message verschickt hat. Dabei kann es sich beispielsweise um den Namen eines Business-Systems handeln. |
RECEIVER_PARTY |
Kommunikationspartner, der die Message empfangen soll |
RECEIVER_PARTY_AGENCY |
Vergebende Agentur zum Empfänger der Message |
RECEIVER_PARTY_SCHEME |
Verwendetes Identifikationsschema des Empfängers |
RECEIVER_SERVICE |
Service auf Empfängerseite, der die Message empfangen soll. Dabei kann es sich beispielsweise um den Namen eines Business-Systems handeln.
|
QUALITY_OF_SERVICE |
Gibt den Quality-of-Service an, mit dem die Message prozessiert wird. Mögliche Werte sind BestEffort, ExactlyOnce oder ExactlyOnceInOrder. |
QUEUE_ID |
Nur relevant für QUALITY_OF_SERVICE = ”ExactlyOnceInOrder”. Der Wert in diesem Feld entspricht dem Serialisierungskontext, über den ein Sender zusammengehörige asynchrone Messages gebündelt hat (siehe auch ABAP-, Java-Proxy-Laufzeit). |
Die folgenden Felder im Message-Header sind Nur relevant für MessageClass=”ApplicationMessage” und ProcessingMode=”asynchronous”(siehe oben). Sie können die booleschen Werte true oder false haben. Siehe auch: Acknowledgments.
Felder des Message-Headers zu Acknowledgments
Konstante |
Bedeutung |
SYSTEM_ACK_REQUESTED |
Wenn der Wert dieses Feldes true ist, hat der Sender eine positives System-Acknowledgment angefordert. |
SYSTEM_ERROR_ACK_REQUESTED |
Wenn der Wert dieses Feldes true ist, hat der Sender ein negatives System-Acknowledgment angefordert. |
APPLICATION_ACK_REQUESTED |
Wenn der Wert dieses Feldes true ist, hat der Sender ein positives Anwendungs-Acknowledgment angefordert. |
APPLICATION_ERROR_ACK_REQUESTD |
Wenn der Wert dieses Feldes true ist, hat der Sender ein negatives Anwendungs-Acknowledgment angefordert. |
Im folgenden Beispiel wird über das Protokoll IF_WSPROTOCOL_XI_HEADER auf das Feld MESSAGE_CLASS des Headers der Response-Message beim Empfänger zugegriffen.
DATA:
interface TYPE REF
TO co_sxidag_fsa_query,
request
TYPE sxidag_fsa_query_mt,
response TYPE
sxidag_fsa_response_mt,
xi_header_protocol TYPE REF TO
if_wsprotocol_xi_header,
xi_header_value
TYPE string.
* create instance
CREATE
OBJECT interface
* fill request data
request-flight_seat_availability_query-flight_id-airline_id
= 'LH'.
TRY.
* get xi_header protocol
xi_header_protocol
?= interface->get_protocol(
if_wsprotocol=>xi_header
).
* call client proxy
CALL METHOD
interface->execute_synchronous
EXPORTING
output = request
IMPORTING
input =
response.
* get header field
xi_header_value =
xi_header_protocol->get_header_field(
if_wsprotocol_xi_header=>message_class ).
CATCH cx_ai_system_fault .
CATCH cx_ai_application_fault .
ENDTRY.