on 04-05-2016 11:13 AM
Hi All,
System: PI 7.4 dual stack
What are the options for splitting a Sync Soap message so that (1) first message goes to Soap receiver with response back to sender (2) second message goes to Async Idoc receiver.
- I believe this could be done using a BPM but want to avoid using a BPM
- Alternatively is there some way to write the original Soap message to a file (via a UDF perhaps?) which will then trigger the second Async interface to create an Idoc? if so how?
- Some other way to do this?
Che
Hello Che,
What you can do is :
No BPM and two independent flows linked using a SOAP LoopBack Concept!
Regards,
Bhavesh
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Bhavesh,
That looks super useful, great tip. I did find references to Soap Lookup but did not know it was that straight forward. How would you pass the entire Request XML message to the Soap Lookup? The examples I have seen are based on WebService calls where the request XML message is built in the UDF itself.
Che
Hi Bhavesh,
Have you tested this by sending an async message to the SOAP receiver, as I am testing the SOAP API in the message mapping, I see it is expecting a response back because of the accessor class. Please let me know your thoughts if you haven't tried. If it can be achieved by tweaking the SOAP API in some way.
Regards
Kalyan.
Hello,
I dont remember if i did this but if you are making a Asynchronous call, make sure
Regards
Bhavesh
yes make sure your QOS in the sender adapter has exactly once.
generate the wsdl for this soap sender channel and then ise the SOAP url from this in the receiver channel.
the point I don't remember is will the url contain a QOS parameter. This will be known when your generate the wsdl and examine the url in the same.
Hi Bhavesh,
I have the receiver channel configured with the sender channels SOAP URL as following and also tested in browser which shows "Message servelet status is in OK" But it is throwing an error when the UDF pushes the request to the receiver channel saying the Unable to create socket.
Is there anything that I could be missing here?
The following is my UDF
Hello Kalyan,
Things to check
- Make sure the request sent via the SOAP UDF is a Valid XML.
- Check if the request reaches the SOAP Sender channel?
- Make sure SOAP Receiver Channel has the user name password etc maintained.
- Check if the request hits the SOAP Sender channel or fails directly in the SOAP Receiver. If SOAP Receiver, make sure the URL is pointing to a http://localhost:port rather than the PI server name as it might not be resolvable to the PI Server. Make sure the user / password of your PI system is mainained.
- Did you test the other SOAP Sender scenario with SOAP UI with this payload? Does it work?
Would suggest a new thread for this so you get more responses if this does not help. At this moment, this question is not relevant to this thread.
Regards
Bhavesh
Hi Che/Bhavesh,
Was not the requirement like - only after sender of interface 1 receiving response data will be sent to an IDOC ?
If SOAP Look up is done from the request MM of first interface then how is it guaranteed. Here -
Data will be sent to idoc first I think here.
It can also happen that data is sent to idoc but not to soap receiver of 1st inteface.
Thanks,
Apu
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Apu,
SOAP Lookup can be done in either the Request Mapping or in the Response mapping. Obviously there are certain trade offs to be considered and among those in terms of resubmissions , error handling etc!
For the requirement that the original poster had asked for this seems to suffice,i.e, the original Synchronous message should be branched to 2 receivers.
For dependent or independent processing is not asked and if there is a dependent processing you cannot escape a BPM but considering it has been marked closed I assume it is independent processing!
Regards
Bhavesh
Hi Bhavesh,
Absolutely, I saw that its closed . Just tried to understand how its fulfilled the requirement as requested before so wrote to you. For ensuring all short coming we need to incorporate BPM here anyhow.
The process you have mentioned is definitely a brilliant one. Even we can apply this for other more or less same requirements as well . But for this there are shortcomings for sure -
1. Calling from request dont ensure that it will pass to first soap receiver.
2. Even if we call from response dont ensure that insertion into the idoc will be successful. But definitely if we call from response that will make more sense here. If SOAP look up will fail or SOAP look up successful but response back to the 1st sender fail can be handled through triggering message again and proper duplicate handling in receiver end.
By the way, if the requirement is fulfilled it absolutely fine and thanks a lot for clarification.
Thanks,
Apu
Hello Apu,
your concerns are defijntely valid. If the requirement is for a guaranteed delivery with exactly once QOS there are definitely flaws in this design and the one you have pointed out is valid.
while PI does not support them, there are other QOS in the integration space that is supported by other middlewares,
What I am trying to say is in the context of this requirement, it could Satisfy both of these QOS and maybe that is the requirement it is not explicit and I assume that it is . For pure exactly once where no duplications allow your concerns are valid.
hope this clarifies..!
Good suggestions from both Bhavesh and Raghuraman. Will wait for a response from Praveen as a split in the adapter would be ideal but not sure if this copes with a sync sender.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
As far as I know, the modules are used to convert a asynch request to a synch request and then direct the response to another interface.
What happens if the request itself is synchronous to the Original calling application? Well its pretty interesting and something I haven't tried. Interesting option I must admit though!
Regards,
Bhavesh
Hi Che,
You can include two receivers in the receiver determination step one for web service and other one for IDOC receiver.
The first interface do async to sync bridge using modules in the receiver soap adapter. Response message you can send it to original sender.
I have actually one interface which uses async-sync bridge with modules in receiver channel, i added another receiver and send the same message via receiver file adapter and it is working, i have tested in my system.
You can check this blog for async-sync bridge
Regards,
Praveen.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Che,
You have sync-async cases in these links:
If you use the IDOC_AEE instead the IDOC ABAP adapter, it should works.
I was/am abaper and i like solutions with ABAP code involved, i am faster. If you do a SOAP - PROXY scenario, you can control inside the proxy the call to the its IDOC and to call a second scenario with a SOAP receiver, with all the error control that you want to.
Regards.
Hello,
So you scenario is like
|-----------------------------------Soap
|
Soap-----------------------|
|
|
|-----------------------------------IDOC
You can try refering the below link and write it as file in some directory
BufferedWriter (Java Platform SE 7 ).
Then second scenario will be File--PI--SFTP.
Any stopback for using BPM?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Raghuraman,
It is more like this:
Soap<----------sync------------> PI <---------------sync-------------- >Soap
|
|------------------async-------------->IDOC
Stopback for BPM is to try getting away from the Abap stack.
How would the BufferedWrite work? I mean what would I pass as input to the UDF, would i have to use the function "Return As XML" and pass the payload as a string which can then be written to file?
Thanks
User | Count |
---|---|
89 | |
10 | |
9 | |
9 | |
9 | |
6 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.