on 09-15-2011 4:37 AM
I have a requirement IDOC-XI-SOAP.
I am using multimapping 1:N one idoc gets spilt into say three wsdl, A B and C.
My first requirement is if A fails then B and C should not be sent.
If I use only EOIO without BPM then I will need to identify B and C for the corresponding A in the queue and remove it.
That looks tedious as sometimes B and C may not be there for A and is there any way to identify the related messages?
This can be achieved through BPM I believe.
My second requirement is IDOC2 should not be processed before IDOC1.
So If I used BPM will this be guaranteed? is BPM EOIO. (Even after transformation step?) If not then can it be configured?
Thanks in advance.
My first requirement is if A fails then B and C should not be sent.
If I use only EOIO without BPM then I will need to identify B and C for the corresponding A in the queue and remove it.
That looks tedious as sometimes B and C may not be there for A and is there any way to identify the related messages?
This can be achieved through BPM I believe.
You can generate B and C only if A is generated. This can be done by using If condition at the time of splitting the message in to 3 messages.
My second requirement is IDOC2 should not be processed before IDOC1.
So If I used BPM will this be guaranteed? is BPM EOIO. (Even after transformation step?) If not then can it be configured?
Please elobrate this query for better solution.
Regards
Raj
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
In the first requirement, If sending of A failed or the response from A is with error then B and C should not be sent.
In the second requirement of the same process...the Outbout Idocs need to be processed in EOIO. Is that ensured in BPM?
IS BPM queue EOIO or is there chance that incoming idocs to BPM gets processed parallely, i.e idoc1 and idoc2 processed parallely ?
You need to go for BPM only ... where you can check the response from A for success and then only process B & C.
You can maintain EOIO in BPM.
Regards
Raj
Hi,
Since you need to send only if A is successfully received at the receiver, you would need to go for a BPM in this case.
In the BPM, use the application acknowledgement step to determine the receipt status of A. If successful, you then send B and C.
Your second requirement is not clear, but yes in a BPM you can ensure that Idoc1 is always processed before Idoc2.
Regards
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
As Raj Sharma suggests, do we need to set BPM to be EOIO explicitly ? We are using PI 7.1
Explaining more about my second requirement.
If there are two IDOCs received by BPM (Process engine) say Idoc1 and Idoc2.
Chances are there that two parallel instance of my BPM are created for Idoc1 and Idoc2.
In which case Idoc2 can get sent before Idoc1...I do not want this to happen.
I want Idoc1 to be sent before idoc2.
I hope I made my requirement clear this time.
Hi all,
Just bringing this topic up again as I have stuck at one place. and found not much help on SDN.
I have designed this requirement using BPM.
That is IDOC-BPM-SOAP.
Within BPM I make a synchronous call to Webservice. if there is a fault exception thrown the BPM workflow stops at that point and no further process steps are carried out. This is working fine as per the requirement.
But this does not get blocked up in the BPM queue. I want to stop the next IDOC from processing before handling the prviously errored IDOC scenario.
Now I briefly understand that since BPM is doing a sync call these are not placed in the queue. Is there a way I can handle this so that these interfaces are placed in the BPM queue (which starts with XBQO$PE_WS.....).
I have tried with exception branch, even this stops the BPM workflow but does not block the queue, or the workflow gets processed successfully.
Is there anyway I can block the queue if the BPM synch call fails?
Hi,
I have tried with exception branch, even this stops the BPM workflow but does not block the queue, or the workflow gets processed successfully.
hopefully we have such a behaviour: interest to catch an exception is to avoid a dump and so a locked queue (!).
if you, you want to have the opposite: a lock queue based on the fact you did not received a synch response.... strange but why not..., an easy way (not the best / not beautiful but works...) it's to use a tiny transformation (mapping) called "MM_SetDump" and inside it with a UdF, you do a divide by zero (for instance). So you will have dump and so a locked queue...
regards
mickael
Hi, Thanks for your reply, yest that doesnot seem to be the right approach.
Anyways I tried to see if the queue gets blocked, but it does not.
The exception handler is called, the transformation step is processed with error in the workflow, but the message does not get blocked in the queue.
Is there any configuration required?
Stefan, I am using synchronous call and your suggestion works on Async call which I had tried earlier, but dint work.
But now I got it working...along with that I need to make the aysnc call EOIO by adding the queue name in the send step.
Now I can see the message failed and stopping the subsequent messages.
This is not a complete solution though. As the message gets processed at IE level and fails at AE level and stops the queue.
I am trying to work out to see If I can make the whole workflow EOIO.
@Giovanni , I have got the IDOC coming through EOIO but my query was related to BPM.
User | Count |
---|---|
93 | |
10 | |
10 | |
9 | |
9 | |
7 | |
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.