Show TOC

Background documentationReceiver Determination Locate this document in the navigation structure

 

The Web Service for a receiver determination is described by the external definition ReceiverDeterminationService.

The external definition contains structure elements of the following table.

WSDL Description

Element

Description

MessageHeaderID

Specifies object key

The object key consists of the following:

  • SenderPartyID: Sender Party (optional)

  • SenderComponentID: Sender Service

  • InterfaceName: Sender interface name

  • InterfaceNamespace: Sender interface namespace

  • ReceiverPartyID: Receiver Party (optional)

  • ReceiverComponentID: Receiver Service

    Note Note

    The same data structure is used for the object key for receiver determinations, interface determinations, sender agreements, and receiver agreements.

    End of the note.

ReceiverDetermination

Defines the receiver determination with all attributes.

  • MasterLanguage, AdministrativeData, and Description; more information: Cross-Object-Type Elements

  • ReceiverDeterminationID: Object key; based on the type MessageHeaderID.

  • Rule: Specifies condition and receiver in a standard receiver determination; based on type ReceiverDeterminationRule.

    More information: see element ReceiverDeterminationRule.

  • DynamicReceiverRule: Refers to a mapping in the ES Repository (enhanced receiver determination); based on type ReceiverDeterminationMapping.

  • PrefixNamespaceMapping; based on type PrefixNamespaceMapping

  • NoReceiverBehavior: Specifies what happens if no receiver can be determined at runtime.

    Possible values:

    • Error Message: Message processing is terminated with an error.

    • Ignore: Message processing is ended as defined by your configuration settings.

    • Specified Receiver: The message is sent to a fixed predefined receiver.

  • NoReceiverReceiver: Specifies a fixed receiver (party/service) when receiver cannot be determined at runtime, based on type CommunicationPartyExtractor.

    Specify this parameter when you have entered the value Specified Receiver for the element NoReceiverBehaviour.

    If you have entered the values Ignore or Error Message for the Element NoReceiverBehaviour then the NoReceiverReceiver is ignored.

    You can find more information on how to specify the receiver in element CommunicationPartyExtractor.

    Using the Integration Builder you can choose between two basic ways of receiver determination :

  • Standard Receiver Determination: Here you manually specify the receiver as well as conditions for forwarding the message to the receiver.

  • Enhanced Receiver Determination Here you specify a mapping to dynamically determine the receiver at runtime.

    Depending on which parameters you transfer, you determine a receiver determination of one of the two types. Rule parameter for standard receiver determination; DynamicReceiverRule for enhanced receiver determination.

    For a standard receiver determination you must have at least one receiver, and for an enhanced receiver determination you must specify a mapping.

ReceiverDeterminationRule

Specifies the routing rule for a standard receiver determination.

The routing rule consists of the following elements:

  • Condition: Specifies the condition for forwarding a message to a specific receiver.

    For more information see element AtomicCondition.

  • Receiver: Specifies receiver of message; based on type CommunicationPartyExtractor.

Condition

Specifies condition:

A condition is constructed of sub-conditions (AtomicConditionBlock).

For more information, see Structuring Conditions below.

AtomicConditionBlock

Specifies a block of elementary conditions.

For more information, see Structuring Conditions below.

AtomicCondition

Specifies the contents of an elementary condition in a routing rule.

A condition consists of the following parameters:

  • Operator: Specifies the operator to link left and right operands.

    You can enter the following values:

    • EQ for equal (=)

    • NE for not equal (≠)

    • CP for contains pattern (≈)

    • EX for exist

  • LeftExtractor/RightExtractor: Specifies the expression for left/right operand.

    More information, see Structuring Conditions below and the description of the Extractor element.

CommunicationPartnerExtractor

Specifies the receiver (party/service).

You must enter the following parameters to specify a receiver completely:

  • CommunicationParty: Specifies the expression for the name of a communication party.

  • CommunicationPartySchema: Specifies the expression for the identification schema of an identifier for a communication party.

  • CommunicationPartyAgency: Specifies the expression for the identification schema of an agency for a communication party.

  • CommunicationComponent: Specifies the expression for a service (obligatory entry).

    All parameters are based on type Extractor.

    More information see AtomicCondition element.

Extractor

Describes the data structure for the entry of an expression in a condition.

An expression consists of the following elements:

  • TypeID: Specifies whether an expression is displayed as an XPath expression or by entering a context object.

    Possible values: XPath, Context Object, Technical Context Object, Constant, Message Header Field.

    Which further parameters you specify depends on the expression type.

  • Value: You can specify a simple value with this parameter.

  • Data Type: You can specify an XSD data type with this parameter. This is useful when a particular format is needed for the expression (for example the entry of a date in a fixed predefined date format).

    Possible values: xsd:string, xsd:integer, xsd:date, xsd:time

  • ContextObjectName/ContextObjectNamespace: Specifies the name and namespace of the context object.

Structuring Conditions

The core of a condition is the connection of an expression (Extractor) with another expression by using an operator. In an elementary condition (AtomicCondition) you connect exactly two expressions together, a left expression and a right expression (LeftExtractor/RightExtractor).

You can connect elementary conditions to blocks (AtomicConditionBlock) using the AND operator. You can then connect this to a condition using the OR operator.

The figure shows how complex conditions are fundamentally set up when they are made up of several blocks of elementary conditions.

This graphic is explained in the accompanying text.

Structuring Expressions

You have several options for formulating an elementary condition in an expression.

Note Note

Using TypeID element you specify how you want to define the expression.

End of the note.
Entering Expressions

Expression type

Description

Entering a constant

( TypeID = Constant)

Enter the value in the Value parameter.

Entering an XPath expression

(TypeID = XPath)

Enter the XPath expression in the Value parameter.

Entering a Context Object

(TypeID = Context Object)

Enter the name and namespace of the (technical) context object or the header field from the ES Repository in the ContextObjectName and ContextObjectNamespace parameters.

Entering a Technical Context Object

(TypeID = Technical Context Object)

Entering a field from the message header

(TypeID = Message Header Field)

Example of a Condition

The following condition is specified in a receiver determination taken from the SAP NetWeaver XI SingleFlightBooking demo example.

Note Note

For more information on SAP NetWeaver XI demo examples, see Demo Examples

End of the note.

Condition: When the AirlineID field in the message payload has the value LH, then the message is forwarded to the receiver business system BUS_100. A context object of the same name from the ES Repository is used to access the AirlineID field in the message.

The receiver determination in this case contains just one block with an elementary condition (AtomicCondition) and the assignment to the receiver.

The elementary condition is expressed using the following elements (XML presentation).

Syntax Syntax

  1. <AtomicCondition>
  2.       <Operator>EQ</Operator>
  3.       <LeftExtractor>
  4.            <TypeID>Context Object</TypeID>
  5.            <Value>/p1:BookingOrderRequest/FlightID/AirlineID</Value>
  6.            <Datatype></Datatype>
  7.            <ContextObjectName>AirlineID</ContextObjectName>
  8.            <ContextObjectNamespace>http://sap.com/xi/XI/Demo/Agency
  9.            </ContextObjectNamespace>
  10.       </LeftExtractor>
  11.       <RightExtractor>
  12.            <TypeID>Constant</TypeID>
  13.            <Value>LH</Value>
  14.            <Datatype>xsd:string</Datatype>
  15.            <ContextObjectName>
  16.            </ContextObjectName>
  17.            <ContextObjectNamespace>
  18.            </ContextObjectNamespace>
  19.       </RightExtractor>
  20. </AtomicCondition>
End of the code.
Example of Expressions

Entering a Field from the Message Header

Syntax Syntax

  1. <TypeID>Message Header Field</TypeID>
  2. <Value></Value>
  3. <Datatype>xsd:string</Datatype>
  4. <ContextObjectName>SenderPartyAgency</ContextObjectName>
  5. <ContextObjectNamespace>http://sap.com/xi/XI/System</ContextObjectNamespace>
End of the code.

Entering a Technical Context Object

Syntax Syntax

  1. <TypeID>Technical Context Object</TypeID>
  2. <Value></Value>
  3. <Datatype>xsd:string</Datatype>
  4. <ContextObjectName>ProcessStep</ContextObjectName>
  5. <ContextObjectNamespace>http://sap.com/xi/XI/System</ContextObjectNamespace>
End of the code.

Entering a Context Object

Syntax Syntax

  1. <TypeID>Context Object</TypeID>
  2. <Value></Value>
  3. <Datatype>xsd:string</Datatype>
  4. <ContextObjectName>ConvContent</ContextObjectName>
  5. <ContextObjectNamespace>http://xi.com/gr/conv</ContextObjectNamespace>
End of the code.