Friday, March 4, 2011

Best Practices to Improve Performance of BPEL Process

On the basis of my experience till date I am sharing some of the best practices, for improving performance of a BPEL process. I am not sure how much will these impact the performance but I think the system performance will get improved at least by some milliseconds.

Below are some of the key points which I have explored during my day today tasks.
  • We all usually use databases for our configurations like we create a configuration databases and create some tables to store error logs, some name value mappings etc. to avoid hard coding in our code. I have also used the same during my projects, but If we use DVM's (for those records for which there are very less chances to be changed) inspite of database will improve the performance of the BPEL Process, as there is reduction in Partner link call. The Function which we usually use for DVM's is orcl:lookup-dvm().
  • Cleanup/Purging of instances from BPEL console and dehydration database at regular Interval of time like we can have the backup of the schema and use Oracle API's to clean up instances in dehydration database.
  • There are some XSLT functions, which improve the processing of BPEL processes. Below are some of those.
    • Use of "for-each-group" in place of for-each
    • Very less use of "if" conditions and use of conditional statements under square brackets "[]"
    • One of the important point I have noticed is removal of comments provided in starting of XSLT but then the design view of xsl is not visible.
    • For the situations where one for-each condition is been used for multiple mappings, inspite of having similar for-each statement multiple times, use of multiple mapping statements in a single for-each. Like 
                      <xsl:for-each test="">
                             <A>
                  <xsl:value-of select="">
                             </A>
                             <B>
                                 <xsl:value-of select="">
                             </B>
                      </xsl:for-each>
  • Use of Assign activities, inspite of Transformation (wherever possible) will also improve the performances. If we use ora:processXSL() function in assign for transformation rather than using transformation activity will improve the performance.
There are many more best practices which will improve the performance, which I will include those later on....

4 comments:

  1. Hi Ankit,
    Where would we specify connection URL for orcl:lookup-dvm().
    Thanks
    Neeraj

    ReplyDelete
  2. Hi Neeraj,

    DVM's are created in ESB and we can use them by providing the name of the DVM. I dont think any connection URL is required for that.

    Regards,
    Ankit

    ReplyDelete
  3. hi,
    how to increase performance increase in bpel(BD adapter/file adapter)

    with regards
    srinu

    ReplyDelete
  4. Hi Srinu,

    For DB adapter we can increase the performance by using "Execute SQL Option" using a tuned custom sql query rather than using DB adapter inbuilt functionality of select/insert/update/merge operations.

    Hope this will be helpful to you and regarding file adapter i will surely get back to you.

    Greetings,
    Ankit Chhabra

    ReplyDelete

B2B Features with OIC

During last couple of months various new features are getting introduced in Oracle Integration Cloud, out of those there is a new feature f...