I have a bpel process that is taking over 30 minutes to complete. The process reads over 3000 records from database and transforms to EDI. The XSLT transform is taking 95% of the processing time. One option for me is to increase the Session timeouts.
Is there a way or a solution to bypass the session timeout values and keep the BPEL process running till it completes. I would like to keep the timeouts to default 5 minutes but still want my process to keep running and complete. Please give your ideas or workarounds on how this can be achieved.
Can you please let me know the SOA suite version you are using.
Also why is that transformation taking 95% of the processing time? Are you using any inline queries or somethng?
Also are you using any while loops within your BPEL?
Can you please explain more about the BPEL process you are using?
I am using 18.104.22.168.0 version. The transformation is taking long because there are over 3000 records and the data is coming from two souces. There are a bunch of for-each loops in the xslt which loops throught two sources and generates EDI target. The BPEL process is just two DB adapters, transformation and FTP adapter to write file. At this time I am just looking for ideas on how to overcome the session timeouts or transaction rollback without increasing the timeout values. Is there any logic I can use that will keep the BPEL process running for about 40 minutes. The process always copletes in 30 to 40 minutes.
Not sure whether there is any option to keep the BPEL instance to not timeout when only one transformation activity takes about 95% of the processing time which is higher than the BPEL transaction timeout setting. If there is any way you can take the logic off from XSL and use BPEL activities (loops etc), I suppose then probably you can use intermediate wait step to make BPEL instance not timeout.
I am not sure if you can find any resolution on this with respect to session time out.
Please try the below option which might work out for you.
1) Slight modification to your current process. Rather than waiting for all the 3000 records to complete processing and write the file at the end, may be you can start writing the file from the first record it self into a temporary location.
2) Later you can keep appending the rest of the lines to the file written above using the Append to existing file check box.
3) May be you can write another simple BPEL process which will poll this file from the temporary location and then FTP it to the EDI.
4) This way there will be a decrease in the processing time drastically and also there will not be any session time outs.
Also your current BPEL process will become a bit light with respect to the amount of data that it need to keep in buffer.
Might not be a perfect solution, but am sure it will work out.
I am getting the data thru SQL Query.
Thanks Deepak for the idea.
Actually the transformed data goes to B2B and B2B creates the EDI file. I think I can use your idea and send one record at a time to B2B. Since all the data has to go in one file, I will let B2B do the batching. Will work on this and see how it goes.