cancel
Showing results for 
Search instead for 
Did you mean: 

BPM flow Proxy to File and then Acknowledgement back to Proxy or JDBC.

former_member204873
Contributor
0 Kudos

hi All,

I have to create an BPM scnario to get acknowledgement from receiver file adapter.

Steps created in BPM are:

receive -> send (Transport Acknowledgement is selected) as per blog /people/michal.krawczyk2/blog/2006/06/22/xi-playing-with-the-file-adapters-acknowledgments

Now what i want to do is whenever any type of acknowledgement is obtained i need to send success or failure message to proxy or JDBC(have alreay seen how to request for acknowledgements through client proxy).

What i need to do in order to achieve this scenario?

Thanks,

Mayank

Accepted Solutions (1)

Accepted Solutions (1)

former_member200962
Active Contributor
0 Kudos
Now what i want to do is whenever any type of acknowledgement is obtained i need to send success or failure message 
to proxy or JDBC(have alreay seen how to request for acknowledgements through client proxy)

The negative acknowledgement can be obtained using an Exception Branch....in this branch maintain the logic that should take place in case of failure....you should also have a Deadline Branch and a Control Step (Cancel Process...in Exception Branch) so that after error handling the process ends.

Now after the above block place the send step that will happen when the ACK reports success.

Regards,

Abhishek.

former_member204873
Contributor
0 Kudos

Hi Abhishek,

Thanks for your response,

I am using BPM for first time, as suggested by you that i should use send step after the block. What will be the input to that send step?

Thanks,

Mayank

former_member200962
Active Contributor
0 Kudos
What will be the input to that send step?

You mentioned that success and failure both should be sent to the source system.

The logic in Exception Branch will take care of -ve ACK (assuming you will implement appropriate logic)

For +ve ACK you have to use the above send step, which will be executed once the control gets out of the BLOCK indicating everything was successful, the input to this Send Step will be the success message that you want to send.

Regards,

Abhishek.

former_member204873
Contributor
0 Kudos

hi Abhishek,

Right now i am looking at only +ve acknowledgement..

So will steps in BPM look like:

recieve -> send (Transport Acknowledgement) -> send(back to source)

"the input to this Send Step will be the success message that you want to send."

As there is no MT visible for Acknowledgement recieved.

how this success message will be populated with values?

Thanks,

Mayank

former_member200962
Active Contributor
0 Kudos
Right now i am looking at only +ve acknowledgement

Even then you have to implement a BLOCK with Excdption Branch and Deadline Branch....without these you wont be able to say whether the send has been successful or failure....now in youe Exception Branch just have a control step with Cancel Process...so that the send step does not get executed in case of failure and the process stops before sending success message

As there is no MT visible for Acknowledgement recieved

You have to create a separate DT and then use a Transformation step before the Send Step (or Interface Mapping in Interface Determination)....the job of this Mapping will be to populate the MT with required success message.

Regards,

Abhishek.

former_member204873
Contributor
0 Kudos

hi,

i tried using exception and deadline block in the BPM flow, in Deadline branch i have given the time and a control to cancel the process. But in Exception Branch, what should i give in Exception Handler?

Thanks.

former_member200962
Active Contributor
0 Kudos
But in Exception Branch, what should i give in Exception Handler?

Click on the Block....in the properties window you will find an option to define an Exception Handler....give any name (even Mayank will also do)....once this is done click on the Exception Branch...in the property window select the above defined exception handler.

Regards,

Abhishek.

former_member204873
Contributor
0 Kudos

hi,

We have enabled automatic retry for async failed interfaces after every 5 minutes three times, i have selected deadline branch inside block with duration of 3 minutes and have an control step in deadline branch, in control step i have given cancel process. But still i am getting negative acknowledgement 4 times. It looks like deadline branch is not working properly.

What can be the cause of such error?

Thanks,

Mayank

Edited by: Mayank Gupta on Feb 23, 2010 6:33 AM

former_member200962
Active Contributor
0 Kudos
We have enabled automatic retry for async failed interfaces after every 5 minutes three times, i have selected deadline 
branch inside block with duration of 3 minutes

Usually the dealine time limit should be same or greater than the total time of all the retries (by default the retry is done thrice at an interval of 5 mins)....in the deadline branch throw an Exception and then in the Exception Branch cath the same and cancel the process....the same desiign approach has been described in Michal's blog.

Regards,

Abhishek.

former_member204873
Contributor
0 Kudos

>

> Usually the dealine time limit should be same or greater than the total time of all the retries

>

What if duration in deadline branch is less than total time of all retries? will deadline branch work in this case.

former_member200962
Active Contributor
0 Kudos

>

> What if duration in deadline branch is less than total time of all retries? will deadline branch work in this case.

Yes, it will work....I used the word usually to indicate that it would be better if we allow the adapter to go through the number of retries and then raise an exception.

Let us take an example, Deadline Time is 10 mins and the retry time (total) is 15 mins....now suppose if the message delivery becomes a success in the third attempt i.e. between 11 - 15 min, then our existing design would have already raise an excdptiona nd cancelled the process....may keep the support person wondering why the BPM raised an exception when the message was delivered?

Regards,

Abhishek.

former_member204873
Contributor
0 Kudos

hi,

If we are getting exception for some reason and error text as visible in moni for example is:

<SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">

<SAP:Category>XIAdapterFramework</SAP:Category>

<SAP:Code area="MESSAGE">GENERAL</SAP:Code>

<SAP:P1 />

<SAP:P2 />

<SAP:P3 />

<SAP:P4 />

<SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: An error occurred while retrieving an FTP connection from the connection pool: com.sap.aii.af.lib.util.concurrent.ResourcePoolException: Unable to create new pooled resource: ConnectException: Connection timed out: connect</SAP:AdditionalText>

<SAP:Stack />

<SAP:Retry>M</SAP:Retry>

Is it possible to capture Additional Text somewhere in BPM, so that in case if deadline limit is exceeded we can send exception text back to the sender?

thanks.

former_member200962
Active Contributor
0 Kudos

This error needs the attention of the DBA, he has to ensure that there are enough resources available when the request from BPM is send.

It wont be possible to capture the error details in BPM.

former_member204873
Contributor
0 Kudos

In BPM, is it possible to assign a Container variable of simple type to a field in a MT?

Means Target is some xyz field of MT and expression is Container variable of simple type. Just wanted to pass some variable in mapping.

Edited by: Mayank Gupta on Mar 3, 2010 4:36 PM

former_member204873
Contributor
0 Kudos

Thanks.

Answers (0)