on 07-17-2008 6:48 PM
We want to setup an inbound HTTP interface that can accept multiple XML messages, all of a different type and be able to route to the appropriate mapping based on some element in the XML, most likely the opening tag name that contains the message name. This is necessary because our partner can only accept one URL to send different XML messages to so we need a way to branch accordingly in XI.
I would like to see this work similar to the /invoke/wm.tn/receive listener that webMethods uses to accept inbound messages from partners. You can send any message type to it and it knows how to route accordingly. Is there an easy way to replicate this feature in XI?
Your request is a standard feature in PI 7.1.
In PI 7.0 you need as work around a pre-mapping with Java code or XSLT which transfers the incoming structure to a generic structure, where you can use the graphical mapping.
Regards
Stefan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
In PI 7.1 an interface can have several operations. Each operation is defined by a different message type, so the message structure is different.
For your request you define an interface with an opereration for each message structure. The operation is defined by the root tag of the message.
The receiver determination and the mapping is now based on that operation.
So all the messages can be send to the same URL, where you only define the interface, the operation name (and the related mapping) is taken from the root tag of the message.
There are some weblogs about service interfaces and operations, you may search for them.
Regards
Stefan
You can define one URL for inbound interface.
e.g http://host:80<instance no>/sap/xi/adapter_plain?namespace=<namespace>&interface=<interface>&service=<service>&qos=BE/EO
Define one interface to accept different xml messages and multiple message types(M1,M2....) and interface mappings(IM1, IM2... ) for all message types.
Define conditions in interface determination based on root tag i.e. messagetype received.
If /<M1> EX ---> call interface mapping IM1
if /<M2> EX ---> call interface mapping IM2
Thanks,
Beena.
NO, there is an option of dynamic/conditional interface determination also, just as we have the option of conditional receiver determination.
YOu would not see it in Display mode of the Interface determination.
In EDIT mode, if you add a new line and specify the condition on which a specific interface mapping is fired.
Regards,
Ravi
Maybe im missing something or on the wrong version of XI.
In the Integration Directory when looking at the Interface Determination screen under configured inbound interfaces in Edit mode, I see no place to specify a condition. You specify an inbound interface and a corresponding interface mapping. I can add multiple interfaces but I see nowhere to put a condition.
thanks to everyone for their assistance... i now see the condition editor..
the next issue is that I followed Beena's steps, "Define one interface to accept different xml messages and multiple message types(M1,M2....) and interface mappings(IM1, IM2... ) for all message types."
here's where I'm stuck now...
I created one MI(Message Interface) called MI_Listener but I'm only able to specify one output message to it. If I try to use this in the interface determination as the Interface, I can only work with the specific XML structure I put in the MI definition. This won't work as the XML that comes in will be of different types. I have the multiple Interface Mappings and Message Mappings already built.
I guess I need to understand how to ""Define one message interface to accept different xml messages"
Thanks in advance..
Yes. You can define only one message type for one interface and that's why I told you to create one generic message type and specify in message interface.
However, XI doesn't validate the messge type specified in message interface with the source xml.
So if you specify message type MG in interface but send source xml as M1, It will first do receiver determination and then interface determination.
In interface determination it will check the condition (if M1 exists),
If the condition is satisfied, it will execute the interface mapping for M1 to target message.
So there is no validation with the generic message type in message interface.
I have a scenario where I call 14 different RFCs based on the input xml and it is working fine.
Thanks,
Beena.
User | Count |
---|---|
83 | |
10 | |
10 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.