cancel
Showing results for 
Search instead for 
Did you mean: 

SOAP to HTTP synchronous

Former Member
0 Kudos

Hi guys,

I have the following scenario:

Sender system sends XML A over SOAP.

XI maps to A to B.request, sends it to receiver system over HTTP synchronously and receives an XML B.response.

XI maps B.response to C.request and sends it to receiver system again over HTTP synchronously, in order to get C.response.

Finally I have to publish this as a Web Service. in order for the sender system to invoke it.

I will definitely need a BPM.

I am a little bit consfused with the Message Interfaces and Message Mappings that I will use inside the BPM.

Can you help me on that please??

Evaggelos

Accepted Solutions (0)

Answers (5)

Answers (5)

Former Member
0 Kudos
wilsonrsantos
Active Participant
0 Kudos

Hi Evaggelos !

Sorry my mistake ! Well, really it´s a difficult situation, I can see 2 possible alternatives but, they evolves developing java code and, if you are not a java developer, it can be difficult to be done, and difficult to maintain, if it´s need in the future.

One solution, is to create a java mapping, that will be responsible to make something like a "lookup" at the first HTTP service(i.e., part of the code of the java mapping will call the HTTP Service, receives and process the response) and with the data received from the first service, will maps the request for the second HTTP Service, that so will be made by the Receiver HTTP Communication Channel in the normal way.

Another solution, is to write a receiver Java Proxy that will receive from XI the data sent by your Siebel CRM, and make the calls to the 2 HTTP services.

It´s possible to do, but as I said, will require some experience in Java and Java Mappings or Java Proxy to do that.

Thank you for your attention !

Wilson

Former Member
0 Kudos

Wilson,

But I can do it with BPM and synchronous Interfaces executed sequentially as well.

Why should I use lookups to HTTP that can also affect performance.

By HTTP lookups, I guess you mean executing Java lookups in HTTP server and receive the response in order to avoid BPM.

I have never used Java proxies.

EG

wilsonrsantos
Active Participant
0 Kudos

Hi Evaggelos !

I know that you can do it using BPM, I was only exploring alternatives. ;o)

Yes, by HTTP lookup, I was meaning the java code making HTTP call to the HTTP service and receiving and processing the response. I used the term "lookup" remembering the RFC Lookup and JDBC lookup.

I think that using BPM consume more resources that make a HTTP call from a java mapping. I have used RFC Lookup and JDBC lookup, in some integration scenarios, and there is no performance problem, so I think that with HTTP must not be different.

The only thing to be in count, is that is not recommended to use Lookup to make changes in the called side(in this case, in the application being called using HTTP), because if the message stop with errors after the lookup has been executed, and the message is reprocessed, this can lead to inconsistencies.

Thank you for your attention and best regards !

Wilson

wilsonrsantos
Active Participant
0 Kudos

Sorry Evaggelos !

Only now I understand your scenario, you need to make 2 HTTP syncronous calls to the receiver system, in one single syncronous call made from the sender system to XI, correct ?

Before to start to create a BPM to this, I think that you can ask for the responsible for the receiver system if its possible to encapsulate the 2 HTTP services that you need to call, in a single one, or ask for the responsible for the sender system if its possible to it to do 2 SOAP calls to XI to solve this scenario without BPM.

I´m suggesting this because by the description of the scenario that you made, this sound like to be placing business logic into XI, and it´s not recomended, and BPM will consume much more resources from XI than 2 syncronous interfaces too, so I think that it´s interesting try to talk about this.

Thank you for your attention,

Wilson

************************************************************************

Hi Evaggelos !

Why do you think that you need to use BPM ?

Reading what you wrote, this sound to me like a single syncronous interface. There is some detail that you have not mentioned ?

What I undertood from your message was this:

Sender (SOAP)-> XI ->(HTTP) Receiver

Sender (SOAP)<- XI <-(HTTP) Receiver

Better explaining: Sender system send a SOAP call to XI, that maps it to a syncronous HTTP call to the Receiver system, that process the call and response back to XI, that maps the response to the Sender System.

If it´s your scenario, definitivelly you don´t need BPM. You will need 2 software components imported at Integration Repository(Design) - one for the sender system and another for the receiver system.

In the software component for the sender system, under a namespace for this interface, you will create 1 data type + 1 message type to be the SOAP request message, and 1 data type + 1 message type to be the SOAP response message, so you will create a Message Interface Outbound Syncronous, and place the Message Types for request and response in it.

In the software component for the receiver system, under a namespace for this interface, you will create 1 data type + 1 message type to be the HTTP request message, and 1 data type + 1 message type to receive the HTTP response, so you will create a Message Interface Inbound Syncronous, and place the Message Types for http request and response in it.

In the sofware component for the receiver system(I will assume that you use to always place the mapping objects at the receiver software components, as I do), you will create 2 message mappings, one to map the SOAP request to the HTTP request, and another to map back the HTTP response to the SOAP response, and you will create an interface mapping, where you will place at the sender side(left) the message interface that you have created in the sender software component, and at the receiver side(rigth) you will place the message interface that you have created in the receiver software component(in this example, is in the same software componente where do you will create this interface mapping), so, you will place the request and response mappings at the request and response tabs of the Interface Mapping.

After this, you will activate all these objects, and just done the configuration at the integration directory, that as you know, can be done using a wizard that simplifies the configuration steps.

I hope that this helps !

Best regards,

Wilson

Edited by: Wilson Santos on Jun 24, 2008 3:30 PM

Former Member
0 Kudos

Wilson,

Thanks for your reply. I am glad that you got it.

It is impossible to change something on sender system, since this is going to be an online trasaction executed from a Siebel CRM system and send a request to XI.

As far as the receiver system is concerned right now it already works like this, So I think it is difficult to make any changes.

I know BPM consumes a lot of resources in XI system, and that it should be avoided in general. But how am I supposed to solve it if I have no other alternative?

EG

Former Member
0 Kudos

hi,

am a little bit consfused with the Message Interfaces and Message Mappings that I will use inside the BPM.

Can you help me on that please??

SOAP to Http..

You need to have 2 message mappings..

1 for request mapping between source SOAP msg and target Http message.

2.for response mapping between Http msg and SOAP msg.

similarly 2message synchronous inetrfaces.

1.SOAP synchronous outbound..

2.Http synchronous inbound.

and in interface mapping give these 2 interfaces and specify the mappings created.

I don't think you require BPM..but...

for BPM..you need two abstract synch interfaces one for SOAP side and other for Receiver Http..

in interface mapping specify these two abstract interfaces and mention the same mappings created.

and then confugure ID part..

configure SOAP sender adapter and Http receiver adapter..

Thanks,

Vijaya.

Former Member
0 Kudos

VJ,

Thanks for your reply. You mean that the first mapping from A to B.request will be done outside BPM ?

How is that possible ?

Former Member
0 Kudos

Wilson Santos,

Thanks for your reply.

Sender SOAP makes an asynchronous request and does not wait for a response.

Then XI has to make 2 different subsequent synchronous HTTP requests to receiver HTTP and get 2 responses the second of which will just skip. I think that you misunderstood.

VijayKonam
Active Contributor
0 Kudos

> XI maps to A to B.request, sends it to receiver system over HTTP synchronously and receives an XML B.response.

> XI maps B.response to C.request and sends it to receiver system again over HTTP synchronously, in order to get C.response.

>

> Finally I have to publish this as a Web Service. in order for the sender system to invoke it.

> I will definitely need a BPM.

>

> I am a little bit consfused with the Message Interfaces and Message Mappings that I will use inside the BPM.

> Can you help me on that please??

>

> Evaggelos

You would need the BPM like below -

Receive - Send Sync B - Transform - Send Sync C - End.

Create mapping A to B.request and use it outside BPM (MIOA to MIAA in BPM).

Create a mapping B.response to C.Request and use it in side the BPM in transform step.

VJ