Monday, December 16, 2013

How to avoid timeouts with Oracle BPM loops

Say that you have a loop in your flow and you send some notification to all of your customers. This might be thousands of executions. And if things go wrong you may hit the timeout limit and end up with a suspended/halted bpm instance. To avoid this we can use a Timer in our loop even though we don’t need one.
Here is the idea.
In my environment the timeout is set to 30 seconds to simulate the issue and the solution. Each service call takes 10 seconds. The loop cardinality is 5. So it will timeout after the 3rd call.
Lets see.
Yep it faulted
As it can be seen in EM it made the 4th call but never came back.
Now lets add timers to our flow. I am adding a dummy timer that will hold the execution for a second.
Now we didn’t have any issues and process executed properly,

Update: I found out that this is called "Forced Dehydration" in Oracle terminology, more info

No comments: