cancel
Showing results for 
Search instead for 
Did you mean: 

How to force BPM Status to Error after sync comms. timeouts & then Retry

Former Member
0 Kudos

Hi

We have a BPM process which makes a Synchronous Send to an External Party Web Service. The BPM processes the response from the Web Service and logs the response in a Custom Tracking Table. Because the Send is synchronous, if the Web Server we are calling is down, the synch send step will fail, but will not be retryable by default because it is best effort.

We have created retry logic, where the send step will be retried 3 times at set interval. We'd like to the set the BPM process in an "ERROR" state that is retryable. The only way I could see doing this is using a UDF map and to "throw an exception" - However, when you retry the BPM, it starts from the UDP Map again and immediately throws the exception once more.

We dont have the luxury of chaning the SOAP calls to be asynch - we need them to be synchronous in order to process the response in the same HTTP call.

Has anybody had any experience implementing something similair or any suggestions?

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

The only problem with that is the process continue's running with an indefinite wait (i..e consuming system resources) - it would be great if we could retry for 5 times and then the process sits in a "stopped" state that can be retried - inside the BPM we use loop logic to only exit once a succesfful connection has been established to the external web service.

My main gripe with PI is that synchronous is best effort - you get plenty of asynch -> synch scenarios that require the Integration Layer to provide persistence and retry capability. Synch doesn't mean that its always retryable from the source, like a webpage or GUI - its also used for other means. E.g. in our case is:

1. Pick Up Flat File

2. Log certain payload details in custom ABAP tables (cause SAP PI doesnt provide an easy way to search payloads across msgs).

3. Call Synch Web Service and receive Response

4. Log response back into custom ABAP table.

former_member206760
Active Contributor
0 Kudos

hi costa,

i think u have tried the design where u are using a transformation step before the sync send and inside the transformation step u can call a mapping which would check the connectivity to the webserver and go in error if the connectivity is not there..

that error will be restartable ...

former_member200962
Active Contributor
0 Kudos
The only way I could see doing this is using a UDF map and to "throw an exception" - However, when you retry the BPM, it 
starts from the UDP Map again and immediately throws the exception once more.

One way would be....In the UDF itself implement a wait period which will get executed in case the end system is down.....now if the end system is down instead of raising an Exception (this will cause the BPM in turn to error) create a loop which will wait for some time and then again retry connecting to end system....process repeats.