Show TOC Anfang des Inhaltsbereichs

Funktionsdokumentation Auslesen des XI-Message-Headers  Dokument im Navigationsbaum lokalisieren

Verwendung

Mit diesem Protokoll können Sie Felder des Message-Headers nach einem Proxy-Aufruf auslesen.

Integration

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.

Funktionsumfang

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
eines Proxies beim Empfänger

Message-Header der Request-Message

Felder im Message-Header

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:
Asynchrone oder synchrone Request-Message

·      ApplicationResponse:
Antwort auf eine Request-Message

·      SystemAck, ApplicationAck, SystemError, ApplicationError:
Acknowledgments

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).

Hinweis

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.

Beispiel

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.

 

 

 

Ende des Inhaltsbereichs